我可以在while循环中调用函数吗?

时间:2019-05-13 23:09:17

标签: python function

生成1到9(包括1到9)之间的随机数。让用户猜测数字,然后告诉他们猜测的数字是否太低,太高或完全正确。 (_Hint:请记住在第一练习中使用用户输入的课程

其他:

让游戏继续进行,直到用户键入“退出” 跟踪用户进行了多少猜测,当游戏结束时,将其打印出来。

我实际上无法弄清楚为什么我的程序不打印if子句中的打印内容。我在while循环中的第一个功能是否打错了?

import random

def cpu_guess():
    cpu_number=random.randint(1,9)
    return cpu_number
print(cpu_guess())

def player_guess():
    player_number=input('Digit a number between 1 and 9\n')
    return player_number

def game():
    r_guesses=0
    w_guesses=0
    while player_guess()!='exit':
        if int(player_guess())>int(cpu_guess()):
            print('Higher value than generated')
            w_guesses+=1
        elif int(player_guess())<int(cpu_guess()):
            print('Lower value than generated')
        else:
            print('You have entered the right value')
            r_guesses+=1
    return r_guesses,w_guesses
print(game())

我不确定在player_guess()!='exit'时是否可以执行此操作:我需要创建一个这样的变量吗? guess = player_guess()并在猜测时编写!='退出'

2 个答案:

答案 0 :(得分:2)

您要一遍又一遍地呼叫player_guess,每次调用时,它将停止并等待输入。每个循环可能等待三次等待输入。调用一次函数并将结果保存在变量中:

def game():
    r_guesses = 0
    w_guesses = 0
    guess = None # Save it here

    while guess != 'exit':
        guess = player_guess()
        if guess > int(cpu_guess()):
            print('Higher value than generated')
            w_guesses+=1
        elif guess < int(cpu_guess()):
            print('Lower value than generated')
        else:
            print('You have entered the right value')
            r_guesses += 1
    return r_guesses, w_guesses
print(game())

然后,如注释中所述,对计算机进行类似的猜测。由于计算机的变化是不断变化的,因此您可能会经过所有检查并因此而得到意外的结果。考虑一下调用这些函数时会发生什么。

答案 1 :(得分:2)

您不断在循环的中间更改值;这是混乱的,不是逻辑游戏。

# Get a player guess and see whether it's "exit"
while player_guess()!='exit':

    # Get a new guess; also make a new target number.
    if int(player_guess())>int(cpu_guess()):
        print('Higher value than generated')
        w_guesses+=1

    # Get a new guess; also make a new target number.
    elif int(player_guess())<int(cpu_guess()):
        print('Lower value than generated')
    else:
        print('You have entered the right value')
        r_guesses+=1

相反,您需要使玩家尝试猜测的目标目标值为 。在游戏过程中不要更改它们。在循环中,让玩家猜一次 :在正确评估该猜测并做出响应之前,不要不要要求更多输入。

# Get a player guess and see whether it's "exit"
target = int(cpu_guess())
player_input = player_guess()
while player_input != 'exit':

    guessed_num = int(player_input)
    if guessed_num > target:
        print('Higher value than generated')
        w_guesses+=1

    elif ...

看看效果如何?在完成当前猜测之前,不要返回您的输入例程。在玩家猜完之前的数字之前,不要返回目标生成例程。

相关问题