【发布时间】:2016-02-14 10:11:13
【问题描述】:
注意:我使用的是 Python 3.5 我刚刚开始为我制作的基于文本的游戏创建第二部分,这是我遇到问题的代码:
import random
def game():
randomIp = random.randint(10, 999)
def tutorial():
global randomIp
print('Hello.')
print(randomIp + '.' + randomIp + '.' + randomIp + '.' + randomIp)
不断出现的问题是:
File "C:\Users\Anony\Desktop\SICCr4k2BrokeFold\SICCr4k2Broke.py", line 18, in tutorial
print(randomIp + '.' + randomIp + '.' + randomIp + '.' + randomIp)
NameError: name 'randomIp' is not defined
我不知道发生了什么。我将全局放入tutorial(),并且在命令global randomIP 中没有为print(randomIp + '.' + randomIp + '.' + randomIp + '.' + randomIp) 定义randomIp 并没有错误。有谁知道问题是什么?如果我想在每个"." 之后打印一个不同的随机数。代码是什么?我想要它,这样它就可以打印出类似23.321.43.23 的东西。每个周期后的数字完全不同。
【问题讨论】:
-
“全局”是模块级变量。您在封闭范围内定义它,但不是模块级别;因此,它不是对你来说实际上是一个全球性的。
-
因为
tutorial()在你的game()模块级别,你不需要使用global关键字 -
@RNar:
tutorial()里面没有randomIp=。无论randomIp或tutorial()实际定义在哪里,都不应在其中使用global randomIp。 -
不相关:要打印随机 IPv4,您可以使用
print(ipaddress.IPv4Address(random.getrandbits(32)))
标签: python windows variable-assignment python-3.5 unassigned-variable