Python 3.x python不会正确打印变量,请帮助,因为它总是随机打印somthin

Python 3.x python不会正确打印变量,请帮助,因为它总是随机打印somthin,python-3.x,Python 3.x,这一次,它只是把它打印成一个随机数,这也是不对的。我已经尝试了很多方法来尝试和改变它,所以请有人给我解释一下为什么它会这么做,因为我还在上学,听力中有一半的答案对我来说毫无意义你的密码。检查这个修改过的示例(从您的代码中),看看您是否能够理解所有的说明(我保证,没有什么特别之处): def start(): 打印(“你好,用户,欢迎使用数字猜测器”) 时间。睡眠(1) name=输入(“请输入您的姓名:”) 打印(“你好”,姓名,“现在我想到一个介于0和20之间的随机数。试着猜一下!”) num

这一次,它只是把它打印成一个随机数,这也是不对的。我已经尝试了很多方法来尝试和改变它,所以请有人给我解释一下为什么它会这么做,因为我还在上学,听力中有一半的答案对我来说毫无意义你的密码。检查这个修改过的示例(从您的代码中),看看您是否能够理解所有的说明(我保证,没有什么特别之处):

def start():
打印(“你好,用户,欢迎使用数字猜测器”)
时间。睡眠(1)
name=输入(“请输入您的姓名:”)
打印(“你好”,姓名,“现在我想到一个介于0和20之间的随机数。试着猜一下!”)
number_guess=random.randint(0,20)
数字(数字猜,0)
def编号(参数,计数器):
guess=int(输入(“请输入一个数字:”)
如果guess==arg:
打印(“做得好,号码是”,arg,“你猜中了”,counter,“开始了!!!你想再做一个号码吗?”)
awn=输入(“y表示是,n表示否”)。下()
如果芒==“y”:
开始()
elif awn==“n”:
sys.exit()
elif guess

由于您一直在调用number函数,请避免使用“while”。对于问题的单个实例,请使用“如果”。也要避免使用全局变量,除非你真的必须使用它。改变背后的想法是,你“开始”你的代码,而不是猜测部分。您有三种可能的结果,右、下或上。如果右键转到“开始”或“结束”(在我看来,sys.exit()是不必要的),如果上键或下键再次调用猜测部分,但正在更新计数器。

您在这里执行了两次+1操作

    def start():
        print("Hello user, welcome to the Number Guesser")
        time.sleep(1)
        name = input("Please enter your name: ")
        print("Hello ",name," now I'm thinking of a random number between 0 and 20. Try to guess it!")
        number_guess = random.randint(0,20)
        number(number_guess,0)

    def number(arg,counter):
        guess = int(input("Please enter a number: "))
        if guess == arg:
            print("Well done, the number was ",arg," you guessed it in ",counter," goes!!! Would you like to do another number?")
            awn = input("y for yes or n for no ").lower()
            if awn == "y":
                start()
            elif awn == "n":
                sys.exit()
        elif guess < arg:
            print("That number is too small. Try again.")
            number(arg,counter+1)
        elif guess < arg:
            print("That number is too big. Try again.")
            number(arg,counter+1)

    start()
编辑:

建议更改后,您的代码将如下所示:

def start():
    global number_guess
    print("hello user welcome to the number guesser.")
    time.sleep(1)
    name = input("please enter youre name. ")
    print("hello",name,"now im thinking of a random number between 0 and 20 try to guess is")
    number_guess = random.randint(1,21) # this is the part that generates #the random number for the user to guess
    guesses_taken = 0 # reset
    number()
随机导入
导入系统
导入时间
猜测=0
数字=0
芒=“”
猜测次数=0
def start():
全局数
打印(“您好,用户,欢迎使用数字猜测器。”)
时间。睡眠(1)
name=输入(“请输入您的姓名”)
打印(“hello”,name,“现在我想到一个介于0和20之间的随机数,试着猜一下是什么”)
number_guess=1#random.randint(1,21)#这是生成#供用户猜测的随机数的部分
猜测次数=0
编号()
def编号():
全局猜测次数#这是计算猜测次数的变量
全球猜测
全局数
guess=int(输入(“请输入数字”))
当猜测>数字\u猜测时:
打印(“该数字太大,请再试一次”)
猜一猜=猜一猜+1#再听一遍
编号()
当猜测<数字\u猜测:
猜测次数=猜测次数+1
打印(“该数字很小,请再试一次”)
编号()
如果猜测==数字\u猜测:
猜测次数=猜测次数+1
全球芒
打印(“做得好,数字是”,数字猜,“你猜中了”,猜“开始了!!!你想再做一个数字吗?”)
awn=输入(“y表示是,n表示否”)。下()
如果芒==“y”:
开始()
elif awn==“n”:
sys.exit()
开始()

但是,正如@armatita所建议的,您可以使用递归(调用
number()
)或迭代(
while
)。不必两者都使用。

正如你所见,我按照你说的编辑了代码,但现在仍然没有完成。请输入一个数字4,该数字太大,再试一次。请输入一个数字1。做得好,该数字是1。你在8中猜到了!!!你想换一个号码吗?y表示是,n表示否
    def start():
        print("Hello user, welcome to the Number Guesser")
        time.sleep(1)
        name = input("Please enter your name: ")
        print("Hello ",name," now I'm thinking of a random number between 0 and 20. Try to guess it!")
        number_guess = random.randint(0,20)
        number(number_guess,0)

    def number(arg,counter):
        guess = int(input("Please enter a number: "))
        if guess == arg:
            print("Well done, the number was ",arg," you guessed it in ",counter," goes!!! Would you like to do another number?")
            awn = input("y for yes or n for no ").lower()
            if awn == "y":
                start()
            elif awn == "n":
                sys.exit()
        elif guess < arg:
            print("That number is too small. Try again.")
            number(arg,counter+1)
        elif guess < arg:
            print("That number is too big. Try again.")
            number(arg,counter+1)

    start()
while guess < number_guess:
    guesses_taken = guesses_taken + 1 # first increment
    print("that number is to small try agian")
    # guesses_taken = guesses_taken + 1 # Second increment. You may wanna remove this
    number()
    if guess == number_guess:
        guesses_taken = guesses_taken + 1 # do a +1 here
        global awn
        print("well done the number was",number_guess,"you guessed it in",guesses_taken," goes!!! Would you like to do another number?")
        awn = input("y for yes or n for no ").lower()
    if awn == "y":
            start()
    elif awn == "n":
            sys.exit()
def start():
    global number_guess
    print("hello user welcome to the number guesser.")
    time.sleep(1)
    name = input("please enter youre name. ")
    print("hello",name,"now im thinking of a random number between 0 and 20 try to guess is")
    number_guess = random.randint(1,21) # this is the part that generates #the random number for the user to guess
    guesses_taken = 0 # reset
    number()
import random
import sys
import time

guess = 0
number_guess = 0
awn = ""
guesses_taken = 0 

def start():

    global number_guess
    print("hello user welcome to the number guesser.")
    time.sleep(1)
    name = input("please enter youre name. ")

    print("hello",name,"now im thinking of a random number between 0 and 20 try to guess is")

    number_guess = 1#random.randint(1,21) # this is the part that generates #the random number for the user to guess
    guesses_taken = 0
    number()

def number():
    global guesses_taken # this is the variable that counts the number of times you guessed
    global guess
    global number_guess

    guess = int(input("please enter a number "))

    while guess > number_guess:
        print("That number is to big try again")
        guesses_taken = guesses_taken + 1 # hear it is again
        number()

    while guess < number_guess:
        guesses_taken = guesses_taken + 1
        print("that number is to small try agian")
        number()

    if guess == number_guess:

        guesses_taken = guesses_taken + 1
        global awn

        print("well done the number was",number_guess,"you guessed it in",guesses_taken," goes!!! Would you like to do another number?")
        awn = input("y for yes or n for no ").lower()

        if awn == "y":
            start()
        elif awn == "n":
            sys.exit()

start()