使用 while 循环让用户尝试 3 次输入有效值
Using the while loop to give the user 3 attempts for a valid input value
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()
大家好。这是我学习编码的第五周。我应该创建一个程序,让用户尝试输入有效值 3 次。如果第三次尝试的值无效(负数),则会提示错误信息并终止。
问题是我可以输入两个无效值,然后输入一个有效值,它仍然给出错误消息并终止。该程序应计算第三个有效值并进行数学运算,然后打印转换结果。
例如:
您要将多少英里换算成千米? -1
不能输入负值!
输入正确的英里数:-1
不能输入负值!
输入正确的英里数:5
错误:不能超过三次尝试
你们能帮忙吗?
这只是管理两个退出条件时的一个小混乱。在 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')
你的问题是,在你完成顶部的 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')
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()
大家好。这是我学习编码的第五周。我应该创建一个程序,让用户尝试输入有效值 3 次。如果第三次尝试的值无效(负数),则会提示错误信息并终止。
问题是我可以输入两个无效值,然后输入一个有效值,它仍然给出错误消息并终止。该程序应计算第三个有效值并进行数学运算,然后打印转换结果。
例如:
您要将多少英里换算成千米? -1
不能输入负值!
输入正确的英里数:-1
不能输入负值!
输入正确的英里数:5
错误:不能超过三次尝试
你们能帮忙吗?
这只是管理两个退出条件时的一个小混乱。在 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')
你的问题是,在你完成顶部的 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')