Python3我希望if语句只适用于2个语句

2024-05-04 00:00:27 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在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

Tags: toyouconvertfloatprintconvertedlandwant
3条回答

对于第一个输入问题,它可能崩溃了,因为变量navital没有定义,除非输入是'navital'或'land'。你知道吗

一个是解决这个问题

if question_convert=='nautical':
   NAUTICAL = True
elif question_convert=='land':
   NAUTICAL = False
else:
   print('Please type land or nautical!!')
   sys.exit(1)

对于另一个输入验证问题,在这种情况下检查数字输入的最简单方法是在float转换周围使用try/except子句

...
in_val = input()
try:
   converted_land = float(in_val)
except ValueError:
   print("{} doesn't look like a number!!".format(inv_val))
   # might want to exit at this point or use a default value for converted_land
...

我会更改它,并将问题部分也放在while语句中,以便用户在输入有效响应之前不能继续。因此,调整后的代码如下所示:

print("Hello! This is a mile to km converter")
print("Do you want to convert nauitcal miles or land miles?")

valid_input=False
while not valid_input:
    question_convert = input("Please type nautical or land \n")
    if question_convert == "nautical":
        NAUTICAL = True
        valid_input=True
    if question_convert == "land":
        NAUTICAL = False
        valid_input=True

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()

这是因为你把它扔进了一个无限的while循环。您可以通过修改初始if条件来解决此问题,因为NAUTICAL既不是True也不是False

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")

NAUTICAL = None
if question_convert == "nautical":
    NAUTICAL = True    
else if question_convert == "land":
    NAUTICAL = False
else:
    print("I don't understand that...")
    # maybe throw an exception here if you want, instead of exit()-ing
    exit()

while NAUTICAL is not None:
    while NAUTICAL:
        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 not NAUTICAL:
        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

相关问题 更多 >