0
import random
game = False
random_num = random.randint(1 , 100)
print(random_num)
x = 0
if x == 1:
    game = True
def code():
    if number == random_num :
        x + 1
        print('you von')

    elif number > random_num :
        print('lov')
    elif number < random_num :
        print('higher')

if game == True:
    print ("game over")
while x == 0:
    number = int(input("Guess the number "))
    code()

如果猜出正确的数字,则代码应该结束游戏从未打印过一直要求我猜数字

我也试过这段代码,如果函数 game = True,pycharm grays out-> game in

import random
game = False
random_num = random.randint(1 , 100)
print(random_num)
#x = 0
#if x == 1:
    #game = True
def code():
    if number == random_num :
        game = True
        print('you von')

    elif number > random_num :
        print('lov')
    elif number < random_num :
        print('higher')

if game == True:
    print ("game over")
while game == False:
    number = int(input("Guess the number "))
    code()
4

2 回答 2

0

所以这里有几件事,但最重要的是,如果我们猜对了,变量 x 不会与新值一起返回。为了从具有更新变量的函数返回变量,需要返回它,如下所示:

def code(x):
    if number == random_num :
        x = 1
        print('you von')

    elif number > random_num :
        print('lov')
    elif number < random_num :
        print('higher')
    return x

while x == 0:
    number = int(input("Guess the number "))
    x = code(x)
    print(x)

语句的顺序也意味着其中一些被跳过。当我们像这样重新排序时:

import random
game = False
random_num = random.randint(1 , 100)
print(random_num)
x = 0

def code(x,number):
    if number == random_num :
        x = 1
        print('you von')
    elif number > random_num :
        print('lov')
    elif number < random_num :
        print('higher')
    return x

while x == 0:
    number = int(input("Guess the number "))
    x = code(x,number)
    print(x)

if x == 1:
    game = True
if game == True:
    print ("game over")

我们得到所需的输出,当猜到数字时程序退出。

于 2020-12-12T02:01:22.350 回答
0

那是因为你试图改变game变量,它是一个global变量。它位于函数范围之外code

为了实现你想要的,你必须在函数game的开头声明为全局。code()否则,它将game作为新的局部变量:

def code():
    global game
    [...]

我发现了这个您可能会觉得有用的相关问题:Python 函数全局变量?

来自python 编程常见问题解答

在 Python 中,仅在函数内部引用的变量是隐式全局的。如果一个变量在函数体内的任何地方都被赋值,除非明确声明为全局变量,否则它被假定为局部变量。

于 2020-12-12T01:50:40.043 回答