我是一个初学者,我正在尝试创建一个简单的程序来计算速度,时间和输入时的距离。如何将循环外的单位变量用作字符串?每当我尝试时,我都会收到错误消息,说明该变量未被声明
speed = input("Enter the speed without the unit : ")
unit_speed = input("Which unit is the speed in? ( miles/hr or kilometres/hr) : ")
if unit_speed == "miles/hr " or unit_speed == "miles / hr" or unit_speed == "m/hr":
unit = " miles"
elif unit_speed == "kilometres/hr " or unit_speed == "kilometres / hr" or unit_speed == "km/hr":
unit = " kilometres"
time_hours = input("Enter the number of hours taken : ")
time_minutes = input("Enter the number of minutes taken : ")
time = int(time_hours) + int(time_minutes) / 60
print("The required distance is " + str(float(speed)*float(time)) + unit)
我真的很感激任何帮助。
BTW我在python 3中编程。
答案 0 :(得分:0)
您当前的问题与循环无关。您的问题来自您代码的if
声明部分。
您的实际问题是,每当执行if
语句部分时,它都没有办法捕获任何意外的用户输入,例如。如果用户输入里程,目前程序会崩溃,这是你的问题。
为了解决这个问题,我简单地将单位简化为英里或公里。这将检查用户是否输入了列表中的miles
或kilometres
以外的其他内容,然后退出程序,说明无效的速度单位。
if unit not in ["miles", "kilometres"]:
print("invalid unit of speed")
quit()
此外,不是使用unit_speed
和unit
变量,而是将其简化并将其放在一个变量中,我只是将其称为单位。
unit = input("Which unit is the speed in? (miles or kilometres) : ")
答案 1 :(得分:0)
代码中的问题出在 if语句上。您还需要使用else块来处理执行。
if unit_speed == "miles/hr " or unit_speed == "miles / hr" or unit_speed == "m/hr":
unit = " miles"
elif unit_speed == "kilometres/hr " or unit_speed == "kilometres / hr" or unit_speed == "km/hr":
unit = " kilometres"
else:
# Raise exception or print output message to enter correct input here and break the excecution.