Python 3.x 如何将用户输入限制为每次尝试一个字符串-Python
完全是初学者,过去几周一直在学习,现在正在制作一个游戏,作为我大学课程的一部分 我决定变得复杂(对于初学者来说),因为我学得很好,但这一点让我感到困惑 我想限制用户每次尝试只使用一个字符串。目前,他们可以输入任意数量的字符(asdfghjkl),它将在游戏中输入每个正确的字符,这意味着他们可以在3次或更少的尝试中获胜。我的目标是,如果他们输入多个字符,它将返回一条自定义错误消息,然后提示他们重试。包括整个游戏,因为我不完全确定根据回答包括哪些部分Python 3.x 如何将用户输入限制为每次尝试一个字符串-Python,python-3.x,user-input,limit,maxlength,Python 3.x,User Input,Limit,Maxlength,完全是初学者,过去几周一直在学习,现在正在制作一个游戏,作为我大学课程的一部分 我决定变得复杂(对于初学者来说),因为我学得很好,但这一点让我感到困惑 我想限制用户每次尝试只使用一个字符串。目前,他们可以输入任意数量的字符(asdfghjkl),它将在游戏中输入每个正确的字符,这意味着他们可以在3次或更少的尝试中获胜。我的目标是,如果他们输入多个字符,它将返回一条自定义错误消息,然后提示他们重试。包括整个游戏,因为我不完全确定根据回答包括哪些部分 ''' import rando
'''
import random
import time
file = open("name_game.txt", "r+")
f = file.readlines()
word = random.choice(f)
def age():
try:
user_age = int(input("First, How old are you? "))
if user_age > 11: # 11 due to high school age.
print("You're a bit old for this!")
print("\nY = Yes, N = No")
user_input = input("Would you like to continue anyway? ")
if user_input == "Y" or user_input == "y":
user_name()
elif user_input == "N" or user_input == "n":
print("Exiting Game")
time.sleep(1.0)
exit()
else:
print("You entered an invalid option.\nExiting.")
elif user_age <= 3:
print("You're too young for this, sorry!")
print("Exiting Game")
time.sleep(1.0) # exiting game as they can't continue.
exit()
else:
print("Continue!")
user_name()
except ValueError:
print("*"*31)
print("Please enter a numerical value.")
print("*" * 31)
time.sleep(1)
age()
def user_name():
name_input = input("What is your name? ")
print("Guess the word,", name_input + "!")
print("Number of letters in word:", len(word.strip()))
def try_again():
char = ''
attempts = 10
score = 0
while attempts > 0:
fail_count = 0
for letter in word.strip():
if letter in char:
print(letter, end=" ")
else:
print("_ ", end="")
fail_count += 1
print("\nScore:", score)
if fail_count == 0:
print("Congrats, you're a winner!! \nResult:", word.title())
print("Your final Score: ", score) # print the score
user_input = input("Would you like to play again? ")
if user_input == "Y" or user_input == "y":
try_again()
break
elif user_input == "N" or user_input == "n":
print("Exiting Game")
time.sleep(1.0)
exit()
guess_letter = input("Guess a letter:")
char += guess_letter
if guess_letter not in word:
attempts -= 1
score -= 1
print("Incorrect \nYou have", + attempts, "attempts left")
if attempts == 0:
print("The word was:", word.title())
print("Better luck next time!")
user_input = input("Would you like to play again? ")
if user_input == "Y" or user_input == "y":
try_again()
break
elif user_input == "N" or user_input == "n":
print("Exiting Game")
time.sleep(1.0)
exit()
break
age()
try_again()
'''
“”
随机输入
导入时间
文件=打开(“name_game.txt”,“r+”)
f=file.readlines()
单词=随机。选择(f)
定义年龄():
尝试:
user_age=int(输入(“首先,您几岁?”)
如果用户年龄>11岁:#11岁是由于高中年龄。
打印(“你做这个有点老了!”)
打印(“\nY=是,N=否”)
user\u input=input(“是否仍要继续?”)
如果用户输入==“Y”或用户输入==“Y”:
用户名()
elif用户输入==“N”或用户输入==“N”:
打印(“退出游戏”)
时间。睡眠(1.0)
退出()
其他:
打印(“您输入的选项无效。\n正在打印”)
用户年龄
这就是我认为您所要求的,它将只要求用户输入字符串,直到它的长度为1个字符。同样,这个问题对我来说没有多大意义,所以这是我能提供的最好的,对不起。当你说太多的字符串时,我能理解这一点的唯一方法是假设你指的是字符,如果他们能不断地输入更多的字符串,那么你在某个地方有一个逻辑错误,我假设反复调用输入函数
这就是我认为您所要求的,它将只要求用户输入字符串,直到它的长度为1个字符。同样,这个问题对我来说没有多大意义,所以这是我能提供的最好的,对不起。当你说太多字符串时,我能理解这一点的唯一方法是假设你指的是字符,如果他们能不断输入更多字符串,那么你在某个地方反复调用输入函数时就会出现逻辑错误。你必须让它检查输入字符串的长度,如果它大于1,在不影响得分或失败尝试的情况下继续下一次迭代。以下是您可能采取的措施:
尝试>0时:
如果len(输入的字符)>1:
#我不知道您输入的名称,但命名是必要的。
打印(“请只输入一个字符。”)
继续#这将跳转到下一个迭代,而不运行循环中的其余代码。
#继续下面的代码。
您必须让它检查输入字符串的长度,如果长度大于1,则在不影响分数或失败尝试的情况下继续下一次迭代。以下是您可能采取的措施:
尝试>0时:
如果len(输入的字符)>1:
#我不知道您输入的名称,但命名是必要的。
打印(“请只输入一个字符。”)
继续#这将跳转到下一个迭代,而不运行循环中的其余代码。
#继续下面的代码。
我尝试过类似的方法,但不确定该放在哪里。我的代码与。。虽然len(char)>1:print(“太多字符”),但还是不太确定在哪里输入。我还将“字符串”更改为“字符”,因为这正是我的意思:)这将在输入后立即作为检查进行,它将要求用户输入,直到长度为1个字符。我尝试过类似的方法,但我不确定将其放在何处。我的代码与。。虽然len(char)>1:print(“太多字符”),但还是不太确定在哪里输入。我还将“string”改为“character”,因为这正是我的意思:)这将在输入后直接作为检查来完成,它将要求用户输入,直到长度为1个字符。这几乎与我之前所做的完全相同,我只是缺少了“continue”语句。但它仍然给了我同样的问题,当你输入多个字符时,它会重复“请只输入一个字符”,直到我停止代码。如果你猜单词中有多个正确的字符,它也会这样做。感谢您的帮助。嗯,我的代码实际上并没有要求输入,所以在每次迭代中都不会得到任何新的输入。您必须确保在循环内但在长度检查之前请求输入。是以前的吗?我已经更新了它,所以它包括了整个游戏,还有一些事情我正在弄清楚。但是分数增加和一次只允许输入一个字符是最让我困惑的两个。我知道分数在一个循环中,这就是为什么它要把索引加在一起,而不是一次加1,但我不知道应该把代码放在哪里来阻止这种情况发生。很抱歉代码太长。这几乎和我之前的代码完全一样,我只是错过了“continue”语句。但它仍然给了我同样的问题,当你输入多个字符时,它会重复“请只输入一个字符”,直到我停止代码。如果你猜单词中有多个正确的字符,它也会这样做。感谢您的帮助。嗯,我的代码实际上并没有要求输入,所以在每次迭代中都不会得到任何新的输入。您必须确保在循环内但在le之前请求输入
while len(userinputvariablehere) != 1:
print("String is too long.")
userinputvariable = input("Input thing again: ")