Python猜测你的年龄'记住最后的整数

时间:2015-09-15 19:00:03

标签: python

我对使用python编程相对较新(实际上是编程)。我正在制作这个“猜猜我的年龄”#39;程序只有一个问题:

import random
import time
import sys

print("\tAge Guesser!")
print("\t8 tries only!")
name = input("\nWhat's your name? ")


num = 80
min_num = 6
tries = 1

number = random.randint(min_num, num)

print("\nLet me guess... You are", number, "years old?")
guess = input("'Higher', 'Lower', or was it 'Correct'? ")
guess = guess.lower()

while guess != "correct":
    if tries == 8:
        print("\n I guess I couldn't guess your age....")
        print("Closing...")
        time.sleep(5)
        sys.exit()
    elif guess == "higher":
        print("Let me think...")
        min_num = number + 1  #### Here is my trouble - Don't know how to limit max number
        time.sleep(3) # pause
    elif guess == "lower":
        print("Let me think...")
        num = number - 1
        time.sleep(3) # pause
    number = random.randint(min_num, num) #<- Picks new random number
    print("\nLet me guess... You are", number, "years old?")
    guess = input("'Higher', 'Lower', or was it 'Correct'? ")
    guess = guess.lower() #<- Lowercases
    tries += 1 #<- Ups the tries by one


print("\nPfft. Knew it all along.")
time.sleep(10)

正如你所看到的,我有#num;#39;作为随机整数的最大数量,但是:

elif guess == "higher":
        print("Let me think...")
        min_num = number + 1

它可以回到它想要的高度。 我想让它记住最后一个整数&#39; num&#39;是

假设程序猜到50,我说&#39;降低&#39;然后它说30和我说&#39;更高&#39;

我知道我可能听起来很混乱,但请耐心等待。

4 个答案:

答案 0 :(得分:0)

你不能把你的猜测分成像

这样的东西
max_num = 0
min_num = 0
elif guess =="lower":
    max_num = number
    if min_num!=0:
        number = min_num+(max_num-min_num)/2
    else:
        number = max_num-1
elif guess =="higher":
    min_num = number
    if max_num!=0:
        number=min_num+(max_num-min_num)/2
    else:
        number=min_num+1

对不起,它并不是完全严谨的,而且它对你所拥有的逻辑略有改变,但拆分你的变量以便你有更高和更低的上限,这应该有很多帮助?

干杯

如果您需要更多详细说明,请告诉我,我可以尝试写出一个完整的版本

答案 1 :(得分:0)

您需要定义最大数量和最小数量。如果他们说他们的年龄低于给定年龄,您应该将年龄减去1作为最大值。

当然,您还需要设置初始最大年龄。

您可能会发现查找此类问题的递归函数更有用。如果你定义一个以min_age,max_age和tries_left为参数的函数,它会在min_age和max_age之间产生一个随机数并查询用户,然后你可以用修改后的min_age,max_age和tries_left重新运行函数(在其自身内)。 - 1.如果tries_left为零,则承认失败。这样您就可以更好地理解逻辑流程。

我已经从这个答案中删除了代码,因为你是初学者,你会发现自己实现它是一个有用的练习。

答案 2 :(得分:0)

似乎我错了,因为它不记得较旧的整数。在运行程序之前,它会猜出比指定的'num'更高的数字。我不知道从那时到现在我改变了什么?但是谢谢你的帮助! @。@

答案 3 :(得分:0)

这似乎有效。 我真正做出的唯一改变: - 变化的名字令我困惑,所以我换了一对。 - 如果你试图弄乱它(低于5,高于3 ......“它是4吗?”如果你说它更高或更低,你会得到一个错误)。

第一次设置最小和最大数字时,你在循环之外进行,所以这个脚本会“记住”最后一次猜测并将其应用到循环内部的新min,max。每次运行时,根据用户检查猜测时的反馈,min将变高或max将变低。如果您在循环内部粘贴了“min_num = 6”和“num = 80”,则猜测将永远不会变得更好。

import random
import time
import sys

print("\tAge Guesser!")
print("\t8 tries only!")
name = input("\nWhat's your name? ")


max_num = 10
min_num = 1
tries = 1

guess = random.randint(min_num, max_num)

print("\nLet me guess... You are", guess, "years old?")
check = raw_input("'Higher', 'Lower', or was it 'Correct'? ")
check = check.lower()

while check != "correct":
    if tries == 8:
        print("\n I guess I couldn't guess your age....")
        print("Closing...")
        time.sleep(5)
        sys.exit()
    elif check == "higher":
        print("Let me think...")
        min_num = guess + 1  
        time.sleep(3)  # pause
    elif check == "lower":
        print("Let me think...")
        max_num = guess - 1
        time.sleep(3)  # pause
    guess = random.randint(min_num, max_num)  # <- Picks new random number
    print("\nLet me guess... You are", guess, "years old?")
    check = input("'Higher', 'Lower', or was it 'Correct'? ")
    check = check.lower()  # <- Lowercases
    tries += 1  # <- Ups the tries by one


print("\nPfft. Knew it all along.")
time.sleep(10)