Python 如何在循环进行时保持相同的随机数,但在完成后改变

Python 如何在循环进行时保持相同的随机数,但在完成后改变,python,loops,Python,Loops,这个问题很难解释,我希望这个标题不会让人困惑 因此,我必须让用户从1到100猜出一个数字,如果用户猜对了数字,我希望它重新启动游戏,但生成一个新的数字,并再次显示欢迎信息。此外,用户只能尝试10次,然后出现“游戏结束”消息。 我一直在尝试显示新消息,生成一个新号码,让号码在整个循环中保持不变,并在用户尝试10次时失败 如果这让人困惑,我再次道歉 这就是我所拥有的: import random import time def getInput(): x = random.randrange

这个问题很难解释,我希望这个标题不会让人困惑

因此,我必须让用户从1到100猜出一个数字,如果用户猜对了数字,我希望它重新启动游戏,但生成一个新的数字,并再次显示欢迎信息。此外,用户只能尝试10次,然后出现“游戏结束”消息。 我一直在尝试显示新消息,生成一个新号码,让号码在整个循环中保持不变,并在用户尝试10次时失败

如果这让人困惑,我再次道歉

这就是我所拥有的:

import random
import time
def getInput():
    x = random.randrange(100)
    print(x) # for testing

    print("***Welcome! Guess and try to find a number between 1 and 100!***")
    while True:
        userGuess = int(input("Enter Your Guess: "))

        if (userGuess > x):
            print("Lower! Enter Again: ")

        elif (userGuess < x):
            print("Higher! Enter Again: ")
        elif (userGuess > 100):
            print("Guess must be between 1 and 100")
        elif (userGuess < 1):
            print("Guess must be greater then 0")
        elif (userGuess == x):
            print("You win!")
            time.sleep(3)
            continue

def main():
    getInput()

main()
随机导入
导入时间
def getInput():
x=随机。随机范围(100)
打印(x)#用于测试
打印(***欢迎!猜测并尝试查找介于1和100之间的数字!***”)
尽管如此:
userGuess=int(输入(“输入您的猜测:”)
如果(userGuess>x):
打印(“降低!再次输入:”)
elif(userGuess100):
打印(“猜测必须介于1和100之间”)
elif(用户猜测<1):
打印(“猜测必须大于0”)
elif(userGuess==x):
打印(“你赢了!”)
时间。睡眠(3)
持续
def main():
getInput()
main()

如果我在解释,你想在10次猜测后结束。

我试图将更改保持在最小,以便你容易理解,请参阅@Tom的答案以了解更好的方法

import random
import time

def startNewGame():
    x = random.randrange(100)
    print(x) # for testing

    print("***Welcome! Guess and try to find a number between 1 and 100!***")
    numberOfTries = 0
    while numberOfTries<10:
        userGuess = int(input("Enter Your Guess: "))
        numberOfTries += 1
        if (userGuess > x):
            print("Lower! Enter Again: ")
        elif (userGuess < x):
            print("Higher! Enter Again: ")
        elif (userGuess > 100):
            print("Guess must be between 1 and 100")
        elif (userGuess < 1):
            print("Guess must be greater then 0")
        elif (userGuess == x):
            print("You win!")
            time.sleep(3)
            return
    print("You Lose!")
    time.sleep(3)

def main():
    startNewGame()
    while(True):
        again = input("Would you like to play again?(yes/no) ")
        if again == "yes":
            startNewGame()
        elif again == "no":
            break


main()
随机导入
导入时间
def startNewGame():
x=随机。随机范围(100)
打印(x)#用于测试
打印(***欢迎!猜测并尝试查找介于1和100之间的数字!***”)
次数=0
而NumberOfX):
打印(“降低!再次输入:”)
elif(userGuess100):
打印(“猜测必须介于1和100之间”)
elif(用户猜测<1):
打印(“猜测必须大于0”)
elif(userGuess==x):
打印(“你赢了!”)
时间。睡眠(3)
返回
打印(“你输了!”)
时间。睡眠(3)
def main():
startNewName()
虽然(正确):
再次=输入(“您想再次播放吗?(是/否)”)
如果再次==“是”:
startNewName()
elif再次==“否”:
打破
main()

每次循环开始时,您需要生成一个新的随机数,然后将尝试次数重置为0

import random
import time
def getInput():
    x = random.randrange(100)
    print(x) # for testing

    print("***Welcome! Guess and try to find a number between 1 and 100!***")
    tries = 0 # we need a variabe to see how many tries the user has had
    while True:
        userGuess = int(input("Try "+str(tries + 1)+" Enter Your Guess: "))

        if (userGuess == x):
            print("You win!")
            print("***Think you can win again? Guess and try to find a number between 1 and 100!***")
            x = random.randrange(100)
            tries = 0 # reset tries
            print(x) # we need a new random number for the user to guess
            time.sleep(3)            
            continue

        elif (userGuess > x):
            print("Lower! Enter Again: ")
        elif (userGuess < x):
            print("Higher! Enter Again: ")

        if (userGuess > 100):
            print("Guess must be between 1 and 100")
        elif (userGuess < 1):
            print("Guess must be greater then 0")
        else:
            tries = tries + 1 # add 1 to tries unless they make an invalid guess
            if tries == 10:
                print("<<GAME OVER>>")
                break # end


def main():
    getInput()

main()
随机导入
导入时间
def getInput():
x=随机。随机范围(100)
打印(x)#用于测试
打印(***欢迎!猜测并尝试查找介于1和100之间的数字!***”)
tries=0#我们需要一个变量来查看用户进行了多少次尝试
尽管如此:
userGuess=int(输入(“Try”+str(trys+1)+“输入您的猜测:”)
如果(userGuess==x):
打印(“你赢了!”)
打印(***你认为你能再次获胜吗?猜测并尝试找到一个介于1和100之间的数字!***”)
x=随机。随机范围(100)
尝试次数=0#重置尝试次数
打印(x)#我们需要一个新的随机数供用户猜测
时间。睡眠(3)
持续
elif(userGuess>x):
打印(“降低!再次输入:”)
elif(userGuess100):
打印(“猜测必须介于1和100之间”)
elif(用户猜测<1):
打印(“猜测必须大于0”)
其他:
尝试=尝试+1#在尝试中添加1,除非他们做出无效猜测
如果尝试=10:
打印(“”)
中断#结束
def main():
getInput()
main()

以下是我的建议。我用三个哈希值添加了注释,并在其中进行了更改:

import random
import time
def playMany():
    def play():
        x = random.randrange(100)
        print(x) # for testing

        print("***Welcome! Guess and try to find a number between 1 and 100!***")
        for attempt in range(10): ### try 10 times at the most
            userGuess = int(input("Enter Your Guess: "))

            ### change the order of the tests:
            if (userGuess > 100):
                print("Guess must be between 1 and 100")
            elif (userGuess < 1):
                print("Guess must be greater then 0")
            elif (userGuess > x):
                print("Lower!") ### Don't ask to "enter" here
            elif (userGuess < x):
                print("Higher!")
            else: ### no need to test for equality: it is the only possibility left
                print("You win!")
                return True ### Exit play() with True (to play again)
        ### Deal with too many wrong guesses
        print('Too many wrong guesses. Game over')
        return False

    while play(): ### Keep repeating the game until False is returned
        time.sleep(3) ### Move sleep here

def main():
    playMany() ### Use a more telling function name

main()
随机导入
导入时间
def playMany():
def play():
x=随机。随机范围(100)
打印(x)#用于测试
打印(***欢迎!猜测并尝试查找介于1和100之间的数字!***”)
对于范围内的尝试(10):###最多尝试10次
userGuess=int(输入(“输入您的猜测:”)
###更改测试的顺序:
如果(userGuess>100):
打印(“猜测必须介于1和100之间”)
elif(用户猜测<1):
打印(“猜测必须大于0”)
elif(userGuess>x):
打印(“放低!”)35;###不要在这里要求“进入”
elif(userGuess

请参阅“继续运行”。

如果还有其他方法,请参见此处:

import random
import time

def matchGuess(randNumber, userGuess):
    if   userGuess > 100         : print "Guest must be between 1 and 100"
    elif userGuess < 0           : print "Guest must be greater than 0"
    elif userGuess > randNumber  : print "Lower! Enter Again:"
    elif userGuess < randNumber  : print "Higher! Enter Again:"
    elif userGuess == randNumber : print "You win!"

if __name__ == "__main__":
    print "***Welcome! Guess and try to find a number between 1 and 100!***"
    for i in range(10):
        userGuess  = int(raw_input("Enter Your Guess:"))
        randNumber = random.randrange(100)
        matchGuess(randNumber, userGuess)
随机导入
导入时间
def matchGuess(随机数,用户猜测):
如果userGuess>100:打印“来宾必须介于1和100之间”
elif userGuess<0:打印“来宾必须大于0”
elif userGuess>randNumber:打印“降低!再次输入:”
elif userGuess
import random
import time

def matchGuess(randNumber, userGuess):
    if   userGuess > 100         : print "Guest must be between 1 and 100"
    elif userGuess < 0           : print "Guest must be greater than 0"
    elif userGuess > randNumber  : print "Lower! Enter Again:"
    elif userGuess < randNumber  : print "Higher! Enter Again:"
    elif userGuess == randNumber : print "You win!"

if __name__ == "__main__":
    print "***Welcome! Guess and try to find a number between 1 and 100!***"
    for i in range(10):
        userGuess  = int(raw_input("Enter Your Guess:"))
        randNumber = random.randrange(100)
        matchGuess(randNumber, userGuess)