0

x基本的には、プレイしたい回数とy推測の上限の2つの数字を入力パラメータとして取る前の2を使用する関数を書いています。ループはあなたが何回勝ったかを追跡します...しかし、私がそれを実行するたびに、合計は常に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 ブロックは実行されません。気難しい関数から何らかの値を返してみてください。

于 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 に答える