重点是猜测从整数区间中选择的随机数,并在固定的尝试次数内进行。
main
函数询问间隔的上限和用户可以给出的猜测次数。然后核心函数应返回猜测值,因此当数字正确时,函数应立即终止。
我在调试时放了一些print语句,我知道y
函数没有从while
语句返回core
语句。
# -*- coding: utf-8 -*-
def main():
from random import choice
p = input("choose upper limit: ")
t = input("how many attempts: ")
pool = range(p+1)
x = choice(pool)
i = 1
while ((x != y) and (i < t)):
core(x,y)
i += 1
def core(x,y):
y = input("choose a number: ")
if y == x:
print("You gussed the right number!")
return y
elif y > x:
print("The number is lower, try again")
return y
else:
print("The number is higher, try again")
return y
答案 0 :(得分:0)
您希望将返回值core
分配回本地y
变量,它不会通过引用传递:
y = core(x)
在进入循环之前,您还需要设置y
。函数中的局部变量在其他函数中不可用。
因此,您根本不需要将y
传递给core(x)
:
def core(x):
y = input("choose a number: ")
if y == x:
print("You gussed the right number!")
return y
elif y > x:
print("The number is lower, try again")
return y
else:
print("The number is higher, try again")
return y
并且循环变为:
y = None
while (x != y) and (i < t):
y = core(x)
i += 1
你在y
函数中设置main()
的内容并不重要,只要它永远不会等于{{1在用户做出猜测之前。
答案 1 :(得分:0)
y = -1
while ((x != y) and (i < t)):
y = core(x,y)
i += 1
你&#34;初始化&#34; y在循环之前。在循环内部,您将y设置为等于core()函数的结果。