Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何将用户输入限制为每次尝试一个字符串-Python_Python 3.x_User Input_Limit_Maxlength - Fatal编程技术网

Python 3.x 如何将用户输入限制为每次尝试一个字符串-Python

Python 3.x 如何将用户输入限制为每次尝试一个字符串-Python,python-3.x,user-input,limit,maxlength,Python 3.x,User Input,Limit,Maxlength,完全是初学者,过去几周一直在学习,现在正在制作一个游戏,作为我大学课程的一部分 我决定变得复杂(对于初学者来说),因为我学得很好,但这一点让我感到困惑 我想限制用户每次尝试只使用一个字符串。目前,他们可以输入任意数量的字符(asdfghjkl),它将在游戏中输入每个正确的字符,这意味着他们可以在3次或更少的尝试中获胜。我的目标是,如果他们输入多个字符,它将返回一条自定义错误消息,然后提示他们重试。包括整个游戏,因为我不完全确定根据回答包括哪些部分 ''' import rando

完全是初学者,过去几周一直在学习,现在正在制作一个游戏,作为我大学课程的一部分

我决定变得复杂(对于初学者来说),因为我学得很好,但这一点让我感到困惑

我想限制用户每次尝试只使用一个字符串。目前,他们可以输入任意数量的字符(asdfghjkl),它将在游戏中输入每个正确的字符,这意味着他们可以在3次或更少的尝试中获胜。我的目标是,如果他们输入多个字符,它将返回一条自定义错误消息,然后提示他们重试。包括整个游戏,因为我不完全确定根据回答包括哪些部分

    '''
    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: ")