Python: 如何让用户引用和访问变量?
Python: How to have a user reference and access a variable?
我正在编写一个程序来跟踪棒球队的评分。我希望用户能够输入参加过比赛的球队的名称缩写、每支球队的得分,并让程序相应地更新他们的评分。
我在名为 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
设置为[1500]
。它不创建任何关联。 team
首先绑定到 teams
中的一个字符串,然后重复绑定到列表对象。
您需要在这里创建一个字典,这样您就可以将团队名称映射到评级:
ratings = {}
for team in teams:
ratings[team] = [1500]
或者简单地说:
ratings = {team: [1500] for team in teams}
之后您可以在您的函数中按主队和客队名称访问这些评级列表:
htOldRating = ratings[ht][-1]
atOldRating = ratings[at][-1]
print(htOldRating)
print(atOldRating)
我正在编写一个程序来跟踪棒球队的评分。我希望用户能够输入参加过比赛的球队的名称缩写、每支球队的得分,并让程序相应地更新他们的评分。
我在名为 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
设置为[1500]
。它不创建任何关联。 team
首先绑定到 teams
中的一个字符串,然后重复绑定到列表对象。
您需要在这里创建一个字典,这样您就可以将团队名称映射到评级:
ratings = {}
for team in teams:
ratings[team] = [1500]
或者简单地说:
ratings = {team: [1500] for team in teams}
之后您可以在您的函数中按主队和客队名称访问这些评级列表:
htOldRating = ratings[ht][-1]
atOldRating = ratings[at][-1]
print(htOldRating)
print(atOldRating)