首页 > 解决方案 > Python- IF Else 语句并返回

问题描述

我正在尝试编写一个代码让用户输入一个字母并像我们的手机键盘一样返回数字。我的工作是:

phone_letters = [" ", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"]


def let_to_num():

    letter =input("Enter: ")
    key = 0
    while key < 10:

        if letter.upper() in phone_letters[key]:
            return key
        else:
            return "Not found"

print(let_to_num())

但是它不起作用,正确的答案应该是:

while key < 10:

        if letter.upper() in phone_letters[key]:
            return key
        else:
            key += 1
return "Not found"

我的理解是“IF”输入不在 phone_letter 中,然后我们跳转到 else 并返回“未找到”。“IF”输入可以在 phone_letter 中找到,然后返回“key”并结束。

我不明白为什么放在 else 语句中的 (return "Not found") 会为每个输入返回 "Not found"?“key += 1”的功能是什么

标签: pythonif-statementreturn-value

解决方案


您遇到的问题是由于您将值设置key为 0。这会影响您的if语句;

if letter.upper() in phone_letters[key]:

这是在说明,in phone_letters[0]:因此" "您对一封信的支票永远不会返回true,因为它不在" ".

下面的代码解决了这些问题,查看底部的学习链接和代码功能评论,学习愉快!

phone_letters = [" ", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"]


def let_to_num():

    letter =input("Enter: ")

    while letter.isalpha(): # Only runs if the input is a alphabetical char

        # index of the item in list, if the letter is found within the value
        # of the list item. This loops over every element in the list.
        number = [idx for idx, value in enumerate(phone_letters) if letter.upper() in value]

        return number[0] if number else 'Not Found'

print(let_to_num())

在此处阅读列表理解;Python中的列表理解


推荐阅读