python - 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”的功能是什么
解决方案
您遇到的问题是由于您将值设置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中的列表理解
推荐阅读
- php - Add a class to get_the_term_list output
- d3.js - 条形图“日期”显示奇怪/条被按下
- lstm - 在 keras tensorflow 中将 LSTM/GRU 添加到 BERT 嵌入
- javascript - 在 Node.js 中编写高性能服务时,同步代码总是比异步代码糟糕的选择吗?
- swift - 如何创建一个可以保存多个值的文本字段,例如电子邮件至:包含多个收件人电子邮件地址的字段
- python - 对具有列表值的列使用 isin()
- javascript - 发布 TypeScript React 组件时关于 TS 类型的问题
- angular - 无法在 ngAfterViewInit 中获得一致的元素高度
- c - 可能是简单的按位移位问题
- algorithm - 查找树中两个给定顶点之间路径的最有效方法