所以我在python3上写了一个基本的英里到公里转换器。当你输入navital时,它会询问你是否要将海里或陆地英里转换成公里,然后它会进入该循环并将海里转换成公里。同样的道理也适用于陆地,如果你输入land,它会把陆地英里转换成公里。但问题是,当我键入其他内容,而不是航海或土地的程序只是崩溃。我怎么能写代码说“请只写航海或陆地在这个输入”。当我输入一个不是一个数字在“多少英里你想转换成公里部分”相同的事情发生,它崩溃。。。你知道吗
print("Hello! This is a mile to km converter")
print("Do you want to convert nauitcal miles or land miles?")
question_convert = input("Please type nautical or land \n")
if question_convert == "nautical":
NAUTICAL = True
if question_convert == "land":
NAUTICAL = False
while True:
while NAUTICAL == True:
nautical_mile = 1.852
print("How many nauitical miles do you want to convert in km?")
convert_nauitcal = float(input())
converted_nautical = float(convert_nauitcal * nautical_mile)
print("Here's your converted nauitical miles: ")
print(converted_nautical)
quit()
while NAUTICAL == False:
land_mile = 1.609344
print("How many land miles do you want to convert in km?")
convert_land = float(input())
converted_land = float(convert_land * land_mile)
print("Here's your converted land miles: ")
print(converted_land)
quit()
#land_mile = 1.609344
#nautical_mile = 1.852
对于第一个输入问题,它可能崩溃了,因为变量navital没有定义,除非输入是'navital'或'land'。你知道吗
一个是解决这个问题
对于另一个输入验证问题,在这种情况下检查数字输入的最简单方法是在float转换周围使用try/except子句
我会更改它,并将问题部分也放在while语句中,以便用户在输入有效响应之前不能继续。因此,调整后的代码如下所示:
这是因为你把它扔进了一个无限的while循环。您可以通过修改初始
if
条件来解决此问题,因为NAUTICAL
既不是True
也不是False
:相关问题 更多 >
编程相关推荐