将多个函数串联起来时遇到问题

时间:2013-03-28 02:52:19

标签: python string

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

2 个答案:

答案 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)