限制语句中的循环次数?

我的编程基础课有一个作业。在这种情况下,我必须在程序终止之前接受无效输入一定次数(在本例中为五次)。这本书似乎没有解释在这种情况下限制循环运行次数,所以我已经包含了我的代码作为指导。正如所写,它继续循环并且不会停止。


max = 5

#Input miles to be converted

miles = float(input('Enter the number of miles to convert to kilometers: '))

milesToKms = miles*1.6 #miles to kilometers formula

for counter in range(max):

    if miles >= 0:

        print ('Miles converted: ', miles)

        print ('Kilometers: ', milesToKms) #display kilometers result

        break

    elif miles <0:

        while miles < 0:

            print ('Invalid value entered.')

            miles = float(input('Enter a valid number of miles to convert: '))

else:

    print ('Too many invalid entries submitted.')

    exit ()         


弑天下
浏览 209回答 3
3回答

慕神8447489

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

胡子哥哥

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

慕姐4208626

您的内部 while 循环导致了问题:max = 5#Input miles to be convertedfor counter in range(max):&nbsp; &nbsp; miles = float(input('Enter the number of miles to convert to kilometers: '))&nbsp; &nbsp; milesToKms = miles*1.6 #miles to kilometers formula&nbsp; &nbsp; if miles >= 0:&nbsp; &nbsp; &nbsp; &nbsp; print ('Miles converted: ', miles)&nbsp; &nbsp; &nbsp; &nbsp; print ('Kilometers: ', milesToKms) #display kilometers result&nbsp; &nbsp; &nbsp; &nbsp; break&nbsp; &nbsp; elif miles <0:&nbsp; &nbsp; &nbsp; &nbsp; print ('Invalid value entered.')if counter == (max - 1):&nbsp; &nbsp; print ('Too many invalid entries submitted.')&nbsp; &nbsp; 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: -1Invalid value entered.Enter the number of miles to convert to kilometers: -2Invalid value entered.Enter the number of miles to convert to kilometers: -3Invalid value entered.Enter the number of miles to convert to kilometers: -4Invalid value entered.Enter the number of miles to convert to kilometers: -5Invalid value entered.Too many invalid entries submitted.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python