python-3.x - 如何解决 python 中 input() 的问题?
问题描述
我正在 python 上创建我的第一个程序。目标是获得行程成本的输出。在下面的代码中,如果输入不是字典的一部分,我希望 python 抛出错误并要求用户重试。
我尝试使用 while True 但是当我使用代码时,它确实让我重试了错误的输入,但不会引发提示用户的错误。
c = {"Charlotte": 183, "Tampa": 220, "Pittsburgh": 222, "Los Angeles": 47}
def plane_ride_cost():
city = ''
while True:
city = input("Name of the city: ")
if city in c.keys():
return c[city]
break
else:
print ("Invalid input please try again")
plane_ride_cost()
Output:
Name of the city: Hyderabad
Name of the city:
如果您注意到它需要输入,然后要求我在没有提示的情况下重试。
解决方案
所以,我复制了你的代码并运行了它。唯一的问题是缩进,所以基本上我更正了:
c = {"Charlotte": 183, "Tampa": 220, "Pittsburgh": 222, "Los Angeles": 47}
def plane_ride_cost():
city = ''
while True:
city = input("Name of the city: ")
if city in c.keys():
return c[city]
break
else:
print ("Invalid input please try again")
plane_ride_cost()
运行时,如果你输入“Arizona”,例如,它会返回“Invalid input please try again”,如果你输入字典中的名字,它会返回字典值。
解释:
Python 使用缩进来构造代码。在您的示例中,else
与 对齐while
,因此它是while
语句的一部分,并在正常退出while
循环时执行(而不是 break)。
您希望 与else
对齐,以便在条件 ( ) 不为 Trueif
时每次通过循环执行。if
city in c.keys()
推荐阅读
- java - Akka java.lang.AssertionError:expectMessage期间超时(3秒)等待
- sql - 使用链接表进行分组
- android - facebook 正在寻找什么文件
- c++ - C ++在类中正确使用ostream并传递参数?
- postgresql - 在 docker 网络中运行的服务是否不受外部连接的影响,甚至来自 localhost?
- node.js - 不知道为什么节点会持续运行
- java - 找不到 androidsdk.modules
- numpy - 填充numpy数组中某个值之间的值
- html - 如何将变量从 HTML 的类名传递给 SCSS/CSS?
- sql - Oracle SQL 选择将“城市、州”拆分为两列(仅包含州和没有逗号的一些实例)并修剪空格