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

如何继续要求用户输入有效字符?

戎亦
2023-03-14

我正在写一个叫做hangman.py的程序。在我的程序中,用户不能在我的输入中输入“?”或空白。例如,用户不能输入“?xx?xx?”或“我该怎么做”。但用户可以输入诸如“ldkdjgg”或“stop-go”之类的内容。如果用户输入诸如“?xxxxx”或“我该怎么做”之类的内容,我必须不断询问用户请输入一个不包含的要猜测的单词?或空白:“.我的问题是如何打印”请输入一个不包含字符的要猜测的单词?或空白:“直到用户停止在输入中输入“?”或空白。

这是我的想法,但我无法打印出“请输入一个不包含?或空白的单词:”如果我在输入中输入“?”或空白

print("Please enter a word to be guessedthat does not contain ? or white space: ",end='')
while True:
  try:
      secret_word=input()
  except '?' or 'print()'
      print("Please enter a word to be guessedthat does not contain ? or white space: ",end='')
      continue
  else:
      break

共有3个答案

洪胜涝
2023-03-14

这样的东西应该工作:

bad_strings = [' ', '?']
secret_word = ' '

while any([s in secret_word for s in bad_strings]):
    secret_word = input("Enter a word that doesn't contain '?' or spaces: ")
邰建业
2023-03-14

你可以检查是否设置(?")secret_word相交,如果用户输入了至少一个空间或?:

while True:
    secret_word = input("Please enter a word to be guessedthat does not contain ? or white space: ")
    if not set("? ").intersection(secret_word):
        break
    else:
        print("Invalid input")

演示:

Please enter a word to be guessedthat does not contain ? or white space: ?
Invalid input
Please enter a word to be guessedthat does not contain ? or white space: foo bar
Invalid input
Please enter a word to be guessedthat does not contain ? or white space: foo

或者使用str.translate并在删除任何空格和?后比较长度:

tbl = str.maketrans({ord("?"):"",ord(" "):""})
while True:
    secret_word = input("Please enter a word to be guessedthat does not contain ? or white space: ")
    if len(secret_word.translate(tbl)) == len(secret_word):
        break
    else:
        print("Invalid input")

secret\u word.translate(tbl)将删除任何空格或因此,如果翻译后长度相同,我们知道用户没有输入任何空格,如果长度不同,我们知道他们有。您可以使用ord作为键,使用空字符串作为值,在tbldict中添加任意数量的坏字符。

东门越
2023-03-14

一个稍微易读的解决方案:

user_input = raw_input("Please enter a string that doesn't contain spaces or '?':")

while " " in input or "?" in input:
    user_input = raw_input("Please enter a string that doesn't contain spaces or '?':")
 类似资料:
  • 我已经看了这个程序几个小时了,但我仍然不明白其中的逻辑。程序要求用户输入整数。 一旦用户输入了整数,它将向用户输出所有的正数、负数和输入的总数,以及这些数字的平均值。 这是我陷入困境的地方: 然后它会询问用户是否要继续。用户将输入或以指示他们是否要继续。如果用户输入“y”,循环将再次进行,如果他们输入“n”,它将显示再见消息。我不知道如何设置。 我已经尝试了一个 do while 循环,我目前正在

  • 我需要使用while循环来询问用户一个介于1-100之间的数字,如果用户输入的数字是负数或超过100,我会告诉用户他们输入了错误的数字。这是我到目前为止的情况。每当我运行它时,它都会要求用户输入。当输入为负数或大于100时,它表示无效数字,而当用户输入为45时,当0-100之间的数字有效时,它仍表示无效数字。我不认为这是阅读代码的最后一部分。

  • 我正在做一个简单的主菜单项目。我必须检查用户输入的有效性:1)他是否输入了1和7之间的选项(是吗)2)他是否输入了整数。 对于第二,我想使用try-and-catch,但没有成功。用户输入非整数后,它将打印异常(在catch块中),并返回main。我想一直要求用户输入,直到他输入1-7

  • 我试图用C语言编写一个简单的程序,它需要一个字符串,并根据输入执行一个动作。但是,如果用户输入一个无效的字符串,我希望程序再次要求用户输入,直到用户提供一个有效的输入字符串。 示例输出: 我有一个这样的计划: 这个程序似乎工作;然而,我有一个经验丰富的C开发人员告诉我永远不要使用fflush(stdin)。 这是我到目前为止所拥有的: 但是,当运行此方法时,在接受输入后,程序将继续打印: 等等我很

  • 我对java非常陌生,需要帮助。基本上,我有一个程序,要求用户输入一个数字。当输入该数字时,它会将该数字之前的所有奇数相加。我正在尝试(但失败)做的是,做另一个循环,当提示用户请求一个数字来求奇数之和时,我想让它只在输入奇数时继续,否则它将不断重复询问用户,直到他们输入奇数为止。我知道使用循环可以解决这个问题,但我不知道如何让它工作。 这是我的密码: 提前谢谢!

  • 我正在做一个问题,其中我为拼字游戏创建了各种功能。首先,我想让用户输入或或开始新游戏/重放最后一手牌/结束游戏。 一旦游戏开始,我想让用户输入或来让用户或计算机玩。 我陷入了问题的最后一部分。 我的代码: 如果内部循环的选择不是u或c,它应该反复通知并询问,直到u或c是输入。但它是在初审后从那个循环中出来的。 理想输出: 我的输出: 问题是,当用户在第二级输入无效命令时,我的代码开始询问第一级的问