0

基本上我正在编写一个函数,它使用前面的 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)
4

2 回答 2

2

问题出在这里:

if grumpy(y):

我不认为函数 grumpy 会返回任何东西。因此,此条件始终被评估为 false,并且永远不会执行 if 块。尝试从 grumpy 函数返回一些值。

于 2013-03-28T02:58:03.133 回答
1

对我来说,原因是你在 if 语句中检查它时没有从“脾气暴躁”返回值。检查这个:

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)
于 2013-03-28T03:00:03.847 回答