Python- IF Else 语句和 return

Python- IF Else statement and return

我正在尝试编写代码让用户输入字母和 return 数字,就像我们的 phone 键盘一样。我的工作是:

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" input not in phone_letter,然后我们跳转到 else 和 return "Not found"。 "IF" 输入可以在 phone_letter 然后 return "key" 和 end.

中找到

我不明白为什么else语句中的(return "Not found")每次输入都会return "Not found"? "key += 1"

的功能是什么

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

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

这是在说明,in phone_letters[0]:" ",因此您对字母的检查永远不会 returns 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())

在此处阅读列表理解; List Comprehension in Python

试试下面的代码,

def let_to_num():
    letter = input("Enter: ")
    for i in range(len(phone_letters)):
        if letter.upper() in phone_letters[i]:
            return i
    return 'Not found'
print(let_to_num())

所以这里的想法是迭代 while 从 key = 0 到 key = 9(这是你的 phone_letters 列表的索引)。在 if 块中,您检查输入的 letter 是否是 key 当前迭代的字母之一。
例如,用户输入字母 'P',while 循环开始 -

  1. key = 0, phone_letters[key] = " ", 条件为假。 现在 key 的值必须递增才能检查 phone_letters 的下一个索引。您的代码不会那样做,而是转到第一个 returns Not Found in the very first block
  2. 的 else 块
  3. key = 1, phone_letters[key] = "", 条件为假。 ...
  4. key = 7,phone_letters[key] = "PQRS",条件为真。

仅当用户输入的字符不在 phone_letters 的 任何 索引中时,结果才应为 Not Found。
希望说清楚!