为了账号安全,请及时绑定邮箱和手机立即绑定

限制语句中的循环次数?

限制语句中的循环次数?

弑天下 2021-06-29 13:52:06
我的编程基础课有一个作业。在这种情况下,我必须在程序终止之前接受无效输入一定次数(在本例中为五次)。这本书似乎没有解释在这种情况下限制循环运行次数,所以我已经包含了我的代码作为指导。正如所写,它继续循环并且不会停止。max = 5#Input miles to be convertedmiles = float(input('Enter the number of miles to convert to kilometers: '))milesToKms = miles*1.6 #miles to kilometers formulafor 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 ()         
查看完整描述

3 回答

?
慕神8447489

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.')


查看完整回答
反对 回复 2021-07-06
?
胡子哥哥

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.


查看完整回答
反对 回复 2021-07-06
?
慕姐4208626

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.


查看完整回答
反对 回复 2021-07-06
  • 3 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号