使用while循环给用户3次有效输入值的尝试

2024-04-25 19:14:31 发布

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

counter = 0
miles = float(input('How many miles do you want converted into kilometers? '))
while miles < 0:
    print('You cannot enter a negative value!')
    miles = float(input('Enter the correct number of miles: '))
    counter = counter + 1
    if counter > 2:
        break
if counter <= 2:
    milesToKm = (miles*1.6)
    print(miles, 'miles is', round(milesToKm,2), 'kilometers')
else:
    print('Error: cannot exceed three attempts')
    exit()

大家好。这是我学习代码的第五周。我应该创建一个程序,让用户三次尝试输入一个有效值。如果第三次尝试的值无效(负数),则它将提示错误消息并终止。在

问题是我可以输入两个无效值后跟一个有效值,但它仍然会给出错误消息并终止。程序应计算第三个有效值并进行数学运算,然后打印转换。在

例如:

你想把多少英里换算成公里?-1

不能输入负值!在

输入正确的英里数:-1

不能输入负值!在

输入正确的英里数:5

错误:不能超过三次尝试

你们能帮忙吗?在


Tags: 程序消息inputif错误counterfloatmany
2条回答

这只是管理这两种退出条件的一个小混乱。在while语句中检查这两个选项,您就没事了。我用序列(-1,-1,-1),(-1,-1,5)和(-1,5)进行了测试。每次都很好。在

counter = 0
miles = float(input('How many miles do you want converted into kilometers? '))
while miles < 0 and counter <= 2:
    print('You cannot enter a negative value!')
    miles = float(input('Enter the correct number of miles: '))
    counter = counter + 1

if counter <= 2:
    milesToKm = (miles*1.6)
    print(miles, 'miles is', round(milesToKm,2), 'kilometers')
else:
    print('Error: cannot exceed three attempts')
    exit()

另一种处理方法是使用循环的else子句。如果正常退出循环,它的else子句将被执行;如果中断循环,则会跳过else。这允许您使用for循环处理逻辑:

^{pr2}$

您的问题是,在完成顶部的while循环之后,计数器将大于2。也就是说,3。现在,print函数位于if counter <= 2语句中。3不小于或等于2。这是你的问题。在

counter = 0

while miles < 0:
    # ...
    if counter > 2:
        print('Error: cannot exceed three attempts')
        break

print(miles, 'miles is', round(milesToKm,2), 'kilometers')

相关问题 更多 >