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)