【问题标题】:Item of a list is not defined in an 'if' statement列表项未在“if”语句中定义
【发布时间】:2021-12-10 09:45:32
【问题描述】:

如果第二个列表中的元素已经在第一个列表中,此代码应该警告我,在将第一个元素放入小写之后。

current_users = ['id_1','id_2','id_3', 'ID_4', 'id_5']
current_users_case = [current_user_case.lower() for current_user_case in current_users]

new_users = ['id_5','id_4','id_7', 'id_8', 'id_9']

for new_user in new_users:
  if new_user == current_user_case:
    print("Sorry, ID already taken")
  else:
    print("ID available")

我收到此错误消息:

Traceback (most recent call last):
  File "main.py", line 2, in <module>
    from c5n9ss import *
  File "/home/runner/C5py/c5n9ss.py", line 11, in <module>
    if new_user == current_user_case:
NameError: name 'current_user_case' is not defined

但如果我在 Python shell 中测试前两行,我会正确地得到降级列表。

我不明白我得到的错误。

【问题讨论】:

  • 答案对您有帮助吗?如果是这样,你介意接受它并结束你的问题吗?您可以通过单击答案旁边的复选标记来执行此操作,或者您可以等待更多答案到来。
  • 谢谢,不过我需要更多时间来测试它。
  • 绝对。在选择接受或不接受答案之前,花点时间对其进行测试并确保它可以正常工作。
  • 你能在答案中测试这个建议吗?
  • 谢谢,这个星期四去检查一下,因为我一直没上班,抱歉耽搁了

标签: python-3.x list if-statement


【解决方案1】:

你的想法不错。只需进行 2 处更改:

  1. current_user_case: 更改为current_users_case:(注意变量名中是用户而不是用户)
  2. if new_user == current_user_case: 更改为if new_user in current_users_case:
current_users = ['id_1','id_2','id_3', 'ID_4', 'id_5']
current_users_case = [current_user_case.lower() for current_user_case in current_users]

new_users = ['id_5','id_4','id_7', 'id_8', 'id_9']

for new_user in new_users:
  if new_user in current_users_case:
    print("Sorry, ID already taken")
  else:
    print("ID available")

new_user 为 id_5 时,您希望将其与 current_users_case 中的所有项目进行比较。如果将其与列表进行比较,则不会得到匹配,因为字符串 (id_5) 不是列表。当您使用in 时,您正在检查 id_5 是否在列表中,然后您的代码按预期工作。

【讨论】:

  • 您的建议完美无缺。老实说,我理解你写的第二条评论,但我不明白第一条。您所指的行在您的代码和我的代码中似乎相同。
  • @RobertCode 在if new_user == current_user_case: 这一行仔细查看您的代码。你写的右边的变量是current_user_case。它应该是 current_users_case。您的变量在用户之后缺少s。这就是1 在我的回答中强调的一点。
  • 谢谢,我更明白我做错了什么。
猜你喜欢
  • 2022-07-16
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2020-08-31
相关资源
最近更新 更多