【发布时间】:2018-01-17 11:45:03
【问题描述】:
我正在尝试创建一个程序,允许我在程序的不同功能中使用我的列表“用户”。 我已经尝试过参数,将其声明为“全局”(尽管有人告诉我这样做是不好的做法),并且我尝试过研究“类”并将其全部实施但无济于事。我也尝试将用户放入一个文本文件,然后从中读取,但这很麻烦,因为我需要将它放在一个列表中。 这是我的代码:
def register():
global username
username = raw_input("Enter a username: ").lower()
firstName = raw_input("Enter your first name: ").lower()
surname = raw_input("Enter your surname: ").lower()
age = raw_input("Enter your age: ")
yearGroup = raw_input("Enter your year group: ")
users =[[firstName, surname, age, yearGroup]]
def resultsFunction():
score = 5
results = [[score, username]]
results.extend(users)
我试过了:
def register():
global username
username = raw_input("Enter a username: ").lower()
firstName = raw_input("Enter your first name: ").lower()
surname = raw_input("Enter your surname: ").lower()
age = raw_input("Enter your age: ")
yearGroup = raw_input("Enter your year group: ")
global users
users =[[firstName, surname, age, yearGroup]]
它抛出错误:
results.extend(userDetails)
NameError: global name 'userDetails' is not defined
奇怪的是,在声明用户名“全局”之后(是的,我知道我不应该这样做,但它起作用了),我能够在函数中使用用户名,但是当我尝试使用其他变量时,例如firstName 所以我可以尝试在“resultsFunction”中简单地创建列表,但它不起作用。
如果用户决定不注册,注册功能不会一直运行,但我无法更改它,因为我不希望用户必须始终输入他们的详细信息。
我很困惑,我已经尝试了我所知道的一切。我作为最后的手段来到这里,所以我希望有人可以提供帮助,也许这个问题可以帮助其他人在局部和全局变量范围内遇到同样的困难。
【问题讨论】:
-
请考虑添加代码示例,或修改您在此问题中发布的示例。就目前而言,它的格式和范围使我们很难为您提供帮助;这是一个great resource,可以帮助您开始。祝你的代码好运!
-
@ReblochonMasque 哎呀,对不起。我认为示例代码包含了您理解它所需的所有内容。非常抱歉,但我没有与此问题相关的任何其他代码。
-
把
global username作为你的register()函数的第一行,inside函数,然后再试一次。 -
@cdarke感谢您帮助改进我的问题。我已经编辑过了。够了吗?
-
你看到我之前的评论了吗?我认为它现在应该可以工作了。但是我强烈建议您传递参数并返回结果,而不是使用全局变量。
标签: python list global-variables