【发布时间】:2015-04-26 00:15:49
【问题描述】:
只是为了练习,我正在尝试在 Python 中重新创建游戏Dudo(但我认为游戏知识不会对我的问题产生太大影响)。基本上,六个玩家有一定数量的骰子(以count1,count2等表示),我需要知道每种骰子的数量(多少个1,多少个2等)。我创建了一个变量 num1 (num1 = 0) 来表示 1 的个数,然后我做了一个函数来查找 1 的个数。
def find_num1():
total = 0
for i in range(you_count):
if you[i] == 1:
total = total + 1
for i in range(count1):
if enemy1[i] == 1:
total = total + 1
for i in range(count2):
if enemy2[i] == 1:
total = total + 1
for i in range(count3):
if enemy3[i] == 1:
total = total + 1
for i in range(count4):
if enemy4[i] == 1:
total = total + 1
for i in range(count5):
if enemy5[i] == 1:
total = total + 1
num1 = total
print total
每个玩家都有一个包含六个数字的列表,代表他们拥有的每个骰子(enemy1、enemy2 等)。所以我使用一个循环遍历每个列表索引以找到数字 1,然后根据它更新总数。当我运行该功能时,它会正确打印总计。但是,如果我告诉它打印 num1(在函数之外),它会告诉我 0,这意味着我的函数没有正确地将 num1 更改为总计。有谁知道我做错了什么?
谢谢!
【问题讨论】:
-
写
global num1作为函数的第一行(Python 2)或nonlocal num1(Python 3)。 -
谢谢!我使用的是 Python 3,但由于某种原因,它适用于全局而不是非本地......为什么?
-
global在两个版本中都有效。nonlocal语句仅适用于 Python 3,它的含义有所不同。它用于修改非全局外部作用域中的变量,仅当您在其他函数中定义函数时才会出现。
标签: python function variables global