学习Python-数字游戏

学习Python-数字游戏,python,loops,random,Python,Loops,Random,我是Python新手。我正在尝试编写一个小游戏,要求最终用户从1到1000中选择一个数字,并将其保存在他们的头脑中(该数字未提供给程序)。程序应该能够在10次猜测中找到数字。就像我通常做的那样,我走错了路。我的程序大部分时间都在工作,但有时在10次猜测中找不到数字。这是我的密码: # script to guess a user's number between 1 and 1000 within 10 guesses # import random so we can use it to g

我是Python新手。我正在尝试编写一个小游戏,要求最终用户从1到1000中选择一个数字,并将其保存在他们的头脑中(该数字未提供给程序)。程序应该能够在10次猜测中找到数字。就像我通常做的那样,我走错了路。我的程序大部分时间都在工作,但有时在10次猜测中找不到数字。这是我的密码:

# script to guess a user's number between 1 and 1000 within 10 guesses

# import random so we can use it to generate random numbers
from random import randint

# Variables
lowerBound = 1
upperBound = 1000
numGuesses = 1
myGuess = 500
failed = False

# Welcome Message
print("#####################################################################################################"
      "\n#                                                                                                   #"
      "\n#   Please think of a number between 1 and 1000.  I will attempt to guess the number in 10 tries.   #"
      "\n#                                                                                                   #"
      "\n#####################################################################################################")

while numGuesses <= 10:

    # if the lower and upper bounds match we've found the number
    if lowerBound == upperBound:
        print(f"\nYour number is {str(lowerBound)}.  It took me '{str(numGuesses)} guesses!")
        break

    print(f"\nIs the number {str(myGuess)}?  If correct, type CORRECT.  If low, type LOW.  If high, type HIGH.")
    # uncomment for var output
    # print(f"\nGuesses = {str(numGuesses)}\nLower bound = {str(lowerBound)}\nUpper bound = {str(upperBound)}")
    userFeedback = input("\nResponse: ").upper()

    if userFeedback == 'HIGH':
        print(f"\nGuess #{str(numGuesses)} was too high")
        if numGuesses == 10:
            failed = True
            break
        upperBound = myGuess - 1
        myGuess = randint(lowerBound, upperBound)
    elif userFeedback == 'LOW':
        print(f"\nGuess #{str(numGuesses)} was too low")
        if numGuesses == 10:
            failed = True
            break
        lowerBound = myGuess + 1
        myGuess = randint(lowerBound, upperBound)
    elif userFeedback == 'CORRECT':
        print(f"\nYour number is {str(myGuess)}!  It took me {str(numGuesses)} guesses!")
        break

    numGuesses += 1

if failed:
    print(f"\nMy final guess of {str(myGuess)} was not correct.  I wasn't able to guess your number in 10 tries.")
#在10次猜测中猜测1到1000之间用户号码的脚本
#导入random,以便我们可以使用它生成随机数
从随机导入randint
#变数
lowerBound=1
上限=1000
numguesss=1
myGuess=500
失败=错误
#欢迎辞
3月月日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日35月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日###############################
“\n##”
“\n#请想出一个介于1和1000之间的数字。我将尝试在10次尝试中猜出该数字。”
“\n##”
3月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日来自现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场##############################
当裸体时
这是不对的

如果您已将范围缩小到
6
8
之间,并且您正在猜测
7
,则您以前的代码将调用
4
,而这超出了您的搜索范围

if userFeedback == 'HIGH':
    print(f"\nGuess #{numGuesses} was too high")
    upperBound = myGuess - 1
elif userFeedback == 'LOW':
    print(f"\nGuess #{numGuesses} was too low")
    lowerBound = myGuess + 1
myGuess = int(lowerBound + ((upperBound - lowerBound) / 2))

我已经更新了我的代码,我想我已经做到了。谢谢你的提示

# script to guess a number between 1 and 1000 within 10 guesses

# Variables
lowerBound = 1
upperBound = 1000
numGuesses = 1
myGuess = 500

# Welcome Message
print("#####################################################################################################"
      "\n#                                                                                                   #"
      "\n#   Please think of a number between 1 and 1000.  I will attempt to guess the number in 10 tries.   #"
      "\n#                                                                                                   #"
      "\n#####################################################################################################")

while numGuesses <= 10:

    # uncomment next line for var output
    # print(f"\nGuesses = {numGuesses}\nLower bound = {lowerBound}\nUpper bound = {upperBound}")

    print(f"\nIs the number {myGuess}?  If correct, type CORRECT.  If low, type LOW.  If high, type HIGH.")
    userFeedback = input("\nResponse: ").upper()

    if userFeedback == 'HIGH':
        print(f"\nGuess #{numGuesses} was too high")
        upperBound = myGuess
        myGuess = (lowerBound + myGuess) // 2
    elif userFeedback == 'LOW':
        print(f"\nGuess #{numGuesses} was too low")
        lowerBound = myGuess
        myGuess = (upperBound + myGuess + 1) // 2
    elif userFeedback == 'CORRECT':
        print(f"\nYour number is {myGuess}!  It took me {numGuesses} guesses!")
        break

    numGuesses += 1
#编写脚本,在10次猜测中猜测1到1000之间的数字
#变数
lowerBound=1
上限=1000
numguesss=1
myGuess=500
#欢迎辞
3月月日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日35月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日###############################
“\n##”
“\n#请想出一个介于1和1000之间的数字。我将尝试在10次尝试中猜出该数字。”
“\n##”
3月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月月日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日日来自现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场##############################

而NUMGUESS不会在下一次猜测中使用随机数。使用
(上限-下限)/2
。不要使用随机!!!这就决定了你原来的计划是正确的。你为什么用随机数来代替?@PeterM。要是我有答案就好了。:)我将尝试转换它。有人有这种方法的例子吗?myGuess=int((上界-下界)/2)
# script to guess a number between 1 and 1000 within 10 guesses

# Variables
lowerBound = 1
upperBound = 1000
numGuesses = 1
myGuess = 500

# Welcome Message
print("#####################################################################################################"
      "\n#                                                                                                   #"
      "\n#   Please think of a number between 1 and 1000.  I will attempt to guess the number in 10 tries.   #"
      "\n#                                                                                                   #"
      "\n#####################################################################################################")

while numGuesses <= 10:

    # uncomment next line for var output
    # print(f"\nGuesses = {numGuesses}\nLower bound = {lowerBound}\nUpper bound = {upperBound}")

    print(f"\nIs the number {myGuess}?  If correct, type CORRECT.  If low, type LOW.  If high, type HIGH.")
    userFeedback = input("\nResponse: ").upper()

    if userFeedback == 'HIGH':
        print(f"\nGuess #{numGuesses} was too high")
        upperBound = myGuess
        myGuess = (lowerBound + myGuess) // 2
    elif userFeedback == 'LOW':
        print(f"\nGuess #{numGuesses} was too low")
        lowerBound = myGuess
        myGuess = (upperBound + myGuess + 1) // 2
    elif userFeedback == 'CORRECT':
        print(f"\nYour number is {myGuess}!  It took me {numGuesses} guesses!")
        break

    numGuesses += 1