【发布时间】:2015-02-26 08:19:24
【问题描述】:
我正在编写一个程序来跟踪棒球队的收视率。我希望用户能够输入参加过的球队的名称缩写,每个球队的得分,并让程序相应地更新他们的评级。
我将每个团队列在一个名为 teams 的列表中,并为每个团队创建一个新的按时间顺序排列的列表,初始评分为 1500:
teams = ["ARI","ATL","BAL","BOS","CHC","CWS","CIN","CLE","COL","DET",
"HOU","KC","LAA","LAD","MIA","MIL","MIN","NYM","NYY","OAK",
"PHI","PIT","SD","SEA","SF","STL","TB","TEX","TOR","WSH"]
for team in teams:
team = [1500]
因此,每个团队缩写现在都有一个初始值为 [1500] 的关联列表,每个新评级都将附加该列表。在该声明之外,我尝试让用户参考他们希望将新评级附加到哪个团队列表(在程序计算差异之后):
def gameIn(at="None", ht="None"):
while at.upper() not in teams:
at = input("Enter away team abbreviation: ")
at = at.upper()
if at not in teams:
print("Team selection invalid, try again")
while True:
try:
atr = int(input("Runs: "))
except ValueError:
print('Error: improper score.')
continue
break
while ht.upper() not in teams:
ht = input("Enter home team abbreviation: ")
ht = ht.upper()
if ht not in teams:
print("Team selection invalid, try again")
elif at == ht:
print("Home team and away team cannot be the same, try again")
while True:
try:
htr = int(input("Runs: "))
except ValueError:
print('Error: improper score.')
continue
break
htOldRating = ht[-1]
atOldRating = at[-1]
print(htOldRating)
print(atOldRating)
最后两个语句将简单地打印每个团队名称中的最后一个字母,这意味着该函数不会访问团队的全局列表和团队评级列表,并且正在声明字符串类型的新局部变量。是否可以让用户输入他们想要访问的列表变量名并让程序识别它?
【问题讨论】:
-
for team in teams: team = [1500]不创建关联。它只是一遍又一遍地重新绑定team,直到你最终在你的命名空间中得到team = [1500=。也许您想在那里使用字典? -
我最初使用字典,直到我意识到我需要每个团队都有一个不断更新的列表而不是单个值。这不是问题,但是,我仔细检查并手动为每个团队分配了自己的列表;即 30 个
ARI = [1500]类型语句来尝试解决我的问题。这没有帮助。 -
@AndrewSzoke:不,Antti 的链接帖子解释了如何做到这一点。我在下面的回答中使用了这种技术。字典可以映射到任何类型的 Python 对象,而不仅仅是数字,您也可以在那里使用列表。
标签: python list python-3.4