这是我的密码,电脑应该猜1到100之间的数字。计算机的猜测应该比上一次猜测减少或增加一半。第三次通过循环时,它只会更高,或者如果我在说LowerItBreaks之后使用higher。无论是哪种方式,它都将停止添加猜测,并将前一个猜测除以2,而不是将前一个猜测除以2添加到前一个猜测中。i、 e而不是50+(50/2)=75我的代码是50/2=25。因此,如果它在更高的位置突破是87,而不是加上之前猜测的一半,也就是6,它除以87除以2等于43。(我现在已经编辑了这个问题,除了需要帮助的地方之外,代码和所有东西都应该工作。(谢谢)
pcguess = 50
useranswer = 50
print("Wanna see a magic trick?")
print("Please think of a random number between 1 and 100.")
print("Now that you have written down your number")
print("I will guess it in ten guesses or less.")
a = print("My first guess is", pcguess)
tries = 0
while tries < 100000:
newguess = pcguess//2
b = input("Was that your number?")
if b == "no":
tries += 1
c = input("Is your number higher or lower than my guess?")
if c == "lower":
print("Then my next guess is:")
print(useranswer - newguess )
useranswer = pcguess - newguess
pcguess = newguess
tries += 1
elif c == "higher":
print("Then my next guess is:")
print(useranswer + newguess)
useranswer = pcguess + newguess
pcguess = newguess
tries += 1
if b == "yes":
print("I got it in", tries, "tries!")
break
您需要根据用户的“高”/“低”响应缩小可能的数字范围。因此,您应该将上下限存储为变量,并在得到响应时进行调整。像这样:
我要在代码中更改的第一件事是增加
tries
变量。在当前while循环中,每次执行while循环时递增一次,然后在执行if
语句之后再次递增。这意味着每次迭代,您的尝试次数都会增加2而不是1。那么为什么不在循环的开始处增加tries
一次呢?你知道吗第二,你的
useranswer
变量没有变成你所期望的那样的原因很简单,因为你更新它是错误的。例如因为您正在更新
useranswer
,所以它应该是useranswer = useranswer + newguess
或更简洁的useranswer += newguess
对另一个if语句也这样做(如果您的猜测高于计算机的猜测)
第三。这更像是一个样式问题,但是你的
while
循环条件应该更准确(即,既然你告诉用户你将在10次或更少的尝试中猜出他们的数字,那么你的循环条件真的需要有tries < 100000
?你知道吗相关问题 更多 >
编程相关推荐