首页 > 解决方案 > 我可以在while循环中调用我的函数吗?

问题描述

生成一个介于 1 和 9 之间的随机数(包括 1 和 9)。让用户猜数字,然后告诉他们猜的太低、太高还是完全正确。(_Hint:记得使用第一个练习中的用户输入课程

附加功能:

让游戏继续进行,直到用户键入“exit” 记录用户猜了多少次,当游戏结束时,打印出来。

我实际上无法弄清楚为什么我的程序没有打印 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() 并写 whileguess!='exit'

标签: pythonfunction

解决方案


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

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())

然后,如评论中所述,为计算机的猜测做类似的事情。计算机的轮次不断变化,因此您可能会通过所有检查并因此获得意想不到的结果。想想当这些函数被调用时会发生什么。


推荐阅读