当前位置: 首页 > 知识库问答 >
问题:

使用while循环让用户尝试3次输入有效值

龚寂弦
2023-03-14
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

错误:不能超过三次尝试

你们能帮忙吗?

共有2个答案

公孙驰
2023-03-14

您的问题是,在顶部执行循环后,计数器将大于2。也就是说,3。现在,您的print函数位于if计数器内

counter = 0

while miles < 0:
    # ...
    if counter > 2:
        print('Error: cannot exceed three attempts')
        break

print(miles, 'miles is', round(milesToKm,2), 'kilometers')

爱亮
2023-03-14

这只是管理两种退出条件的一个小混乱。在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()

处理此问题的另一种方法是使用循环的另一子句。如果正常退出循环,则执行它的其他子句;如果脱离循环,则跳过其他子句。这使您可以使用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')
 类似资料:
  • 问题内容: 这里的Python新手非常抱歉,我确定这是一个愚蠢的问题,但是我似乎无法在要求我使用while循环检查有效用户输入的教程中解决以下挑战。 (使用Python2.7) 这是我的代码,但无法正常工作: 上面打印输出到控制台: 这显然是不正确的-循环应该在用户输入“ y”或“ n”时结束,但是我不确定如何执行此操作。我在这里做错了什么? 注意:挑战要求我同时使用运算符和 问题答案: 较短的解

  • 这里的Python新手非常抱歉,我确信这是一个愚蠢的问题,但在一个教程中,我似乎无法解决以下挑战,该教程要求我使用while循环来检查有效的用户输入。 (使用Python2.7) 这是我的代码,但它工作不正常: 上述内容打印到控制台: 这显然是不对的- 注意:挑战要求我同时使用运算符和

  • 我正在设置一个,它在用户输入整数之前一直执行。但是,按照我现在的方式,循环在输入整数后再次打印消息,然后程序正常执行。有人能建议一种方法来使输入整数后不再打印该消息吗?谢了!

  • 首先,感谢你阅读我的帖子并帮助我。 我试图编程,我定义了一个随机数,程序猜测这个随机数,然后,根据我说猜测太高或太低,程序再次猜测。 再次感谢!

  • 下面的代码循环了两次。第一个while循环要求用户输入(以做出选择)。我把选择默认值设置为“n”,使它变得更简单。 因此,它命中if语句并开始第2个while循环。现在它要求用户进行另一个选择。用户只能输入“a”,因为其他任何东西都会出现错误陷阱。用户输入“a”并得到添加一个数字的提示(变量num=0)。用户输入一个数字。 使用更多信息更新的代码 我已经尝试使用不同的变量进行选择。它不起作用。我想

  • 我正在尝试编写一个程序,允许在无限循环中生成随机数。如果用户按下'c',它将脱离循环。但是循环只在我按下c时开始,它应该在之前开始,当我按下'c'时它应该停止。 另外,我想知道如何才能只使用while循环而不是do-while循环来完成这个程序。当我使用while时,我从开始,然后使用来自input的if语句中断循环,但这也不起作用。内部仍然有两个for循环。 多谢