我对使用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;
我知道我可能听起来很混乱,但请耐心等待。
答案 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)