3 回答

TA贡献1780条经验 获得超1个赞
您不需要或不想要while这里的循环。您的外for循环会自行限制尝试次数,并重新检查每个循环的条件,因此它会自行完成工作。
我已经清理了一点以删除冗余input代码,这也提供了避免在最终尝试失败后提示输入的附带好处,当循环无论如何都会停止时:
import sys
max = 5
for counter in range(max):
# Input miles to be converted
miles = float(input('Enter the number of miles to convert to kilometers:'))
if miles >= 0:
# May as well defer calculation of milesToKms until we know
# the miles value is valid
milesToKms = miles * 1.6 # miles to kilometers formula
print('Miles converted:', miles)
print('Kilometers:', milesToKms) #display kilometers result
break
else: # No need for elif miles < 0; anything not valid is invalid
print('Invalid value entered.')
else:
# sys.exit is correct way to exit program, and it can output error for you
sys.exit('Too many invalid entries submitted.')

TA贡献1825条经验 获得超6个赞
继续计算直到5给出错误输入的解决方案:
import sys
invalids = 0
maxWrongInputs = 5
# loop until too many wrongs were done
while invalids < maxWrongInputs:
miles = float(input('Enter the number of miles to convert to kilometers:'))
if miles >= 0:
milesToKms = miles * 1.6
print('Miles converted:', miles)
print('Kilometers:', milesToKms)
else:
# add another to your counter of invalid attempts
invalids += 1
print('Invalid value entered.')
else:
sys.exit('Exited after {} invalid entries.'.format(invalids))
输入: 3. 4. 5. 6. 7. 8. -1. -1. -1. 4. -1. -1.
输出:
Enter the number of miles to convert to kilometers:3
Miles converted: 3.0
Kilometers: 4.800000000000001
Enter the number of miles to convert to kilometers:4
Miles converted: 4.0
Kilometers: 6.4
Enter the number of miles to convert to kilometers:5
Miles converted: 5.0
Kilometers: 8.0
Enter the number of miles to convert to kilometers:6
Miles converted: 6.0
Kilometers: 9.600000000000001
Enter the number of miles to convert to kilometers:7
Miles converted: 7.0
Kilometers: 11.200000000000001
Enter the number of miles to convert to kilometers:8
Miles converted: 8.0
Kilometers: 12.8
Enter the number of miles to convert to kilometers:-1 # 1.
Invalid value entered.
Enter the number of miles to convert to kilometers:-1 # 2.
Invalid value entered.
Enter the number of miles to convert to kilometers:-1 # 3.
Invalid value entered.
Enter the number of miles to convert to kilometers:4
Miles converted: 4.0
Kilometers: 6.4
Enter the number of miles to convert to kilometers:-1 # 4.
Invalid value entered.
Enter the number of miles to convert to kilometers:-1 # 5.
Invalid value entered.
Exited after 5 invalid entries.

TA贡献1852条经验 获得超7个赞
您的内部 while 循环导致了问题:
max = 5
#Input miles to be converted
for counter in range(max):
miles = float(input('Enter the number of miles to convert to kilometers: '))
milesToKms = miles*1.6 #miles to kilometers formula
if miles >= 0:
print ('Miles converted: ', miles)
print ('Kilometers: ', milesToKms) #display kilometers result
break
elif miles <0:
print ('Invalid value entered.')
if counter == (max - 1):
print ('Too many invalid entries submitted.')
exit ()
有效输出:
Enter the number of miles to convert to kilometers: 10
('Miles converted: ', 10.0)
('Kilometers: ', 16.0)
无效输出:
Enter the number of miles to convert to kilometers: -1
Invalid value entered.
Enter the number of miles to convert to kilometers: -2
Invalid value entered.
Enter the number of miles to convert to kilometers: -3
Invalid value entered.
Enter the number of miles to convert to kilometers: -4
Invalid value entered.
Enter the number of miles to convert to kilometers: -5
Invalid value entered.
Too many invalid entries submitted.
添加回答
举报