我如何在循环外部的循环中使用局部变量?

时间:2018-05-07 11:18:31

标签: python python-3.x loops variables

我是一个初学者,我正在尝试创建一个简单的程序来计算速度,时间和输入时的距离。如何将循环外的单位变量用作字符串?每当我尝试时,我都会收到错误消息,说明该变量未被声明

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中编程。

2 个答案:

答案 0 :(得分:0)

第一

您当前的问题与循环无关。您的问题来自您代码的if声明部分。

问题

您的实际问题是,每当执行if语句部分时,它都没有办法捕获任何意外的用户输入,例如。如果用户输入里程,目前程序会崩溃,这是你的问题。

解决方案

为了解决这个问题,我简单地将单位简化为英里或公里。这将检查用户是否输入了列表中的mileskilometres以外的其他内容,然后退出程序,说明无效的速度单位。

if unit not in ["miles", "kilometres"]:
    print("invalid unit of speed")
    quit()

此外,不是使用unit_speedunit变量,而是将其简化并将其放在一个变量中,我只是将其称为单位。

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.