首页 > 解决方案 > 如何解决 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: 

如果您注意到它需要输入,然后要求我在没有提示的情况下重试。

标签: python-3.xinput

解决方案


所以,我复制了你的代码并运行了它。唯一的问题是缩进,所以基本上我更正了:

 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时每次通过循环执行。ifcity in c.keys()


推荐阅读