每次函数运行时增加计数

2024-04-26 14:16:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学Python。我正在翻阅一本书,做一个基于文本的游戏。你知道吗

所以我有一个房间。我想让玩家死,如果他/她进入房间3次,但不知道怎么做。你知道吗

def spawn():
    count = 0
    count += 1
    print(count)
    print("You dropped down nearly to the magma.")
    print("There are four doors around you.")
    print("Which one do you take?")
    ch = input("Top, bottom, left or right? > ")
    if count = 4:
        dead("You wandered around too much and died.")
    else:
        print()

我试着用印刷来追踪数字,但我不能使它增加。我做错什么了?你知道吗

编辑:当我把count放在函数外时,它给出:

Traceback (most recent call last):
  File "ex.py", line 147, in <module>
    spawn()
  File "ex.py", line 14, in spawn
    count += 1
UnboundLocalError: local variable 'count' referenced before assignment

Tags: inpy文本you游戏defcountline
2条回答

或者你可以这样做:

def spawn():
    if not hasattr(spawn, 'count'):
        spawn.count = 0
    spawn.count += 1
    print(spawn.count)
    print("You dropped down nearly to the magma.")
    print("There are four doors around you.")
    print("Which one do you take?")
    ch = input("Top, bottom, left or right? > ")
    if spawn.count == 4:
        dead("You wandered around too much and died.")
    else:
        print()

在函数中,每次都将一个局部变量设置为0,这意味着函数完成后,这个变量就不存在了。你知道吗

诀窍是在函数存在后使用一个保持“活动”的变量。例如,函数外的变量,或者可以向递增的函数添加属性。后者的优点是,更清楚的是,这与功能有关,例如:

def spawn():
    spawn.count += 1
    print(spawn.count)
    print("You dropped down nearly to the magma.")
    print("There are four doors around you.")
    print("Which one do you take?")
    ch = input("Top, bottom, left or right? > ")
    if spawn.count == 4:
        dead("You wandered around too much and died.")
    else:
        print()

spawn.count = 0

注意,您还忘记了对if语句使用双等号(==)(相等检查与赋值)。你知道吗

相关问题 更多 >