当前位置: 首页 > 面试题库 >

While循环以检查有效的用户输入?

施洛城
2023-03-14
问题内容

这里的Python新手非常抱歉,我确定这是一个愚蠢的问题,但是我似乎无法在要求我使用while循环检查有效用户输入的教程中解决以下挑战。

(使用Python2.7)

这是我的代码,但无法正常工作:

choice = raw_input('Enjoying the course? (y/n)')
student_surveyPromptOn = True
while student_surveyPromptOn:
    if choice != raw_input('Enjoying the course? (y/n)'):
        print("Sorry, I didn't catch that. Enter again: ")
    else:
        student_surveyPromptOn = False

上面打印输出到控制台:

Enjoying the course? (y/n) y
Enjoying the course? (y/n) n
Sorry, I didn't catch that. Enter again: 
Enjoying the course? (y/n) x
Sorry, I didn't catch that. Enter again: 
Enjoying the course? (y/n)

这显然是不正确的-循环应该在用户输入“ y”或“ n”时结束,但是我不确定如何执行此操作。我在这里做错了什么?

注意:挑战要求我同时使用!=运算符和loop_condition


问题答案:

较短的解决方案

while raw_input("Enjoying the course? (y/n) ") not in ('y', 'n'):
    print("Sorry, I didn't catch that. Enter again:")

您的代码在做什么错

关于您的代码,您可以添加一些打印内容,如下所示:

choice = raw_input("Enjoying the course? (y/n) ")
print("choice = " + choice)
student_surveyPromptOn = True
while student_surveyPromptOn:
    input = raw_input("Enjoying the course? (y/n) ")
    print("input = " + input)
    if choice != input:
        print("Sorry, I didn't catch that. Enter again:")
    else:
        student_surveyPromptOn = False

上面打印出:

Enjoying the course? (y/n) y
choice = y
Enjoying the course? (y/n) n
choice = y
input = n
Sorry, I didn't catch that. Enter again:
Enjoying the course? (y/n) x
choice = y
input = x
Sorry, I didn't catch that. Enter again:
Enjoying the course? (y/n)

如您所见,代码中的第一步是出现问题,答案将初始化的值choice。这就是你做错了。

一个解决方案!=,并loop_condition

如果必须同时使用!=运算符和,loop_condition则应编写代码:

student_surveyPromptOn = True
while student_surveyPromptOn:
    choice = raw_input("Enjoying the course? (y/n) ")
    if choice != 'y' and choice != 'n':
        print("Sorry, I didn't catch that. Enter again:")
    else:
        student_surveyPromptOn = False

但是,在我看来,Cyber​​的解决方案和我较短的解决方案都更优雅(例如,更Python化)。



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

  • 我试图创建一个简短的基于文本的冒险游戏使用Java。 我是一个初学的程序员,所以我的方法可能不是最有效的,但我只使用了我从学校课程中学到的东西。 为什么会出现这个问题?我不知道我做错了什么。 谢了!

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

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

  • 大家好。这是我学习编程的第五周。我应该创建一个程序,让用户三次尝试输入一个有效的值。如果第三次尝试的值无效(负数),那么它将提示错误消息并终止。 问题是我可以输入两个无效值,后跟一个有效值,但它仍然会给出错误消息并终止。程序应计算第三个有效值并进行数学运算,然后打印转换。 例如: 你想把多少英里换成公里?-1 不能输入负值! 输入正确的英里数:-1 不能输入负值! 输入正确的英里数:5 错误:不能

  • 我试图通过使用Kryonet进行通信来创建一个基本的IRC。我遇到的问题是,在我的代码中,我不能安全地使用允许用户键入和发送消息的main while循环,因为Scanner给出了一个错误,并且似乎跳过了对nextLine()的调用。我想做的是让扫描仪在继续之前等待用户输入。 更准确地说,程序将首先在行的开头放一个“:”,然后在用户按enter键后获取用户键入的任何内容,然后将其发送到服务器。我得