Python实现英超球队胜平负查询时if语句失效求助
问题分析与解决方案
嘿,我一眼就瞅出你代码里的问题啦!你的if语句没法正常工作,核心原因是没有正确调用字符串的lower()方法,另外还有个小拼写失误,我给你一步步拆解:
1. 直接导致if失效的关键问题
你写的:
team = input(...).lower winDrawLoss = input(...).lower
这里的.lower只是引用了字符串的lower方法对象,并没有执行它!也就是说,team和winDrawLoss存储的不是用户输入的小写字符串,而是方法本身,自然没法和你写的"manchester city"这类字符串条件匹配。
修正方法:给lower加上括号,调用方法来转换字符串:
team = input("Do you want to know Manchester City, Manchester United, Chelsea, Liverpool or Tottenham Hotspur?").lower() winDrawLoss = input("Do you want to know wins, draws or losses?").lower()
2. 小细节修正
你输入提示里的Machester United少了一个字母n,应该是Manchester United,虽然不影响代码逻辑,但可能会让用户输入时产生困惑,建议修正过来。
代码优化建议(可选)
如果以后要添加更多球队,一堆elif会显得很冗余,推荐用字典映射来简化球队和索引的对应关系,代码会更清晰易维护:
# 初始化数据,建议给列表加语义化的注释 league = [ ["20","14","14","12","11"], # 胜场 ["2","5","4","8","5"], # 平场 ["0","3","4","2","5"] # 负场 ] # 用字典存储球队与索引的映射 team_index_map = { "manchester city": 0, "manchester united": 1, "chelsea": 2, "liverpool": 3, "tottenham hotspur": 4 } # 获取用户输入并处理 team_input = input("Do you want to know Manchester City, Manchester United, Chelsea, Liverpool or Tottenham Hotspur? ").lower() if team_input not in team_index_map: print("抱歉,你输入的球队不在查询范围内哦!") else: team_num = team_index_map[team_input] wdl_input = input("Do you want to know wins, draws or losses? ").lower() # 匹配查询类型并输出 if wdl_input == "wins": print(f"{team_input.title()}的胜场是:{league[0][team_num]}") elif wdl_input == "draws": print(f"{team_input.title()}的平场是:{league[1][team_num]}") elif wdl_input == "losses": print(f"{team_input.title()}的负场是:{league[2][team_num]}") else: print("请输入正确的选项哦:wins、draws或losses")
这样不仅解决了原问题,还增加了输入合法性判断,让程序更健壮~
内容的提问来源于stack exchange,提问作者Conor R
相关产品推荐
相关产品推荐

