python - 变量已定义但未定义
问题描述
我正在完成一项作业,但问题是它说“重新启动”是未定义的,即使它在整个作业中都已定义。
我在本地的位置上有错误,所以我把它设为全局但现在它说“重新启动”是未定义的
def main():
global restart
def changeMyList(myList):
for i in range(len(myList)):
myList[i] = myList[i].title()
myList.sort()
soccer_teams = ["Arsenal", "Chelsea", "Liverpool", "Barcelona", "Juventus", "Manchester City", "Atletico Madrid", "Borussia Dortmund"]
team_length = len(soccer_teams)
changeMyList(soccer_teams)
print("|||||" + str(team_length) + " TEAMS" + "|||||")
import random
for team in soccer_teams:
print(team)
shuffle_user = input("Reshuffle? Y/N: ")
if shuffle_user == 'y':
random.shuffle(soccer_teams)
print("List after first shuffle: ", soccer_teams)
random.shuffle(soccer_teams)
print("List after second shuffle: ", soccer_teams)
restart = input("Run Again? Y/N: ").lower()
if restart == 'y':
main()
elif restart == 'n':
exit
main()
当我要求重新洗牌时按'n'时,它会说“名称'restart'未定义”第32行;第 40 行
解决方案
这段代码中唯一restart
定义的地方是:
restart = input("Run Again? Y/N: ").lower()
在if shuffle_user == 'y':
块中。因此,如果您对重新洗牌提示回答“否”,则不会为该restart
变量分配任何值,并且读取它的尝试会产生一个NameError
.
推荐阅读
- google-apps-script - 如何将列向前移动然后再向后移动?
- android - Android覆盖文件的味道
- java - MockHttpServletResponse 为 Pageable 端点返回空正文
- oracle - listagg 函数抛出错误 ORA-01489: 字符串连接的结果太长
- android - “所需的权限被拒绝!” 请求 WRITE_EXTERNAL_STORAGE 时
- java - Java SimpleDataFormat 无法正确显示
- azure - Azure 流分析输入 blob 存储动态路径模式
- terraform - Terragrunt 和公共变量
- amazon-web-services - AWS EKS - 创建集群最低 IAM 权限 (AccessDenied)
- sql - 使用多个分隔符解析字符串