【问题标题】:Using the while loop to give the user 3 attempts for a valid input value使用 while 循环为用户提供 3 次有效输入值尝试
【发布时间】:2016-06-06 02:27:43
【问题描述】:
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

错误:不能超过 3 次尝试

你们能帮忙吗?

【问题讨论】:

  • 请记住“接受”一个答案,这样问题才能正确退出。这可以包括混合您获得的所有帮助、自己编写答案以及接受“所有可能的世界中最好的”。

标签: python validation counter


【解决方案1】:

这只是管理两个退出条件的一个小问题。在 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 子句就会被执行;如果您 break 退出循环,则 else 将被跳过。这使您可以使用 for 循环处理您的逻辑:

for counter in range(3):
    miles = float(input('How many miles do you want converted into kilometers? '))
    if miles >= 0:
        break
    print('You cannot enter a negative value!')

else:
    print('Error: cannot exceed three attempts')
    exit()

milesToKm = (miles*1.6)
print(miles, 'miles is', round(milesToKm,2), 'kilometers')

【讨论】:

  • 感谢您的帮助,Prune!
【解决方案2】:

您的问题是,在您通过顶部的while 循环后,您的计数器将大于2。即3。现在,您的print 函数位于if counter &lt;= 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')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2020-02-15
    • 2019-08-03
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    相关资源
    最近更新 更多