基本上我正在编写一个函数,它使用前面的2作为输入参数2个数字x
,你要玩的次数和y
,猜测的上限。循环记录你赢了多少次......但每当我运行它时,总数总是0,我无法弄清楚我在哪里出错了代码。 (so_fun
是故障开始的地方)虽然在以前的功能中可能是一个问题,但是会破坏较低的功能......
def closer(x,y,z):
if (abs(x-y))<(abs(x-z)):
return (True)
else:
return (False)
print(closer(4,2,7))
def grumpy(x):
goal_num=randrange(0,x)
user_guess=int(input('guess a number between 0 and ' + str(x)))
comp_guess=randrange(0,user_guess)
print(closer(goal_num,user_guess,comp_guess))
def so_fun(x,y):
total=0
while x>0:
if grumpy(y):
total+=1
x -=1
print(total)
答案 0 :(得分:2)
if grumpy(y):
我不认为脾气暴躁的功能会返回任何东西。因此,此条件始终被评估为false,并且永远不会执行if块。尝试从脾气暴躁的函数中返回一些值。
答案 1 :(得分:1)
对我来说,原因是你在if语句中检查时没有从'grumpy'返回值。检查一下:
from random import randrange
def closer(x, y, z):
return abs(x-y) < abs(x-z)
def grumpy(end):
goal_num = randrange(0, end)
user_guess = int(raw_input('guess a number between 0 and {0}'.format(end)))
comp_guess = randrange(0, user_guess)
return closer(goal_num, user_guess, comp_guess)
def so_fun(x, y):
total = 0
while x > 0:
if grumpy(y):
total += 1
x -= 1
print total
so_fun(7,5)