Python- IF Else语句并返回

时间:2020-01-28 04:35:20

标签: python if-statement return-value

我正在尝试编写代码,以允许用户输入字母并返回数字,就像我们的电话键盘一样。我的工作是:

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中,然后我们跳转到其他并返回“未找到”。可以在phone_letter中找到“ IF”输入,然后返回“ key”并结束。

我不明白为什么else语句中的(返回“未找到”)对于每个输入都会返回“未找到”?而“键+ = 1”的功能是什么

3 个答案:

答案 0 :(得分:0)

您遇到的问题是由于将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())

在这里阅读列表理解; List Comprehension in Python

答案 1 :(得分:0)

尝试下面的代码,

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())

答案 2 :(得分:0)

因此,这里的想法是将while从key = 0迭代到key = 9(这是phone_letters列表的索引)。在if块中,检查条件,如果输入的letterkey当前迭代的字母之一。
例如,用户输入字母“ P”,则while循环开始-

  1. 键= 0,phone_letters [键] =“”,条件为False。 现在必须增加key的值才能检查phone_letters的下一个索引。您的代码不会执行此操作,而是转到else块,该块在第一个块中返回Not Found
  2. 键= 1,phone_letters [键] =“”,条件为False。 ...
  3. 键= 7,phone_letters [键] =“ PQRS”,条件为True。

仅当用户输入您的phone_letters索引的 any 中不存在的字符时,结果才为“未找到”。
希望一切都清楚!