【问题标题】:why do I get error when I want to loop为什么我想循环时会出错
【发布时间】:2016-04-29 15:45:42
【问题描述】:

当我使用if 语句时,我将如何循环以下代码,我不断收到错误消息。我正在尝试打印出以下数字 511887 并使用条件语句比较每个 4 位二进制数,但我不断收到错误消息:NameError: name 'bin_list' is not defined

x=("bin_list")

y=("bin_list[SN_0]")
["0001"]

"0101"
"0001"
"0001"
"1000"
"1000"
"0111"

SN_bin_0 = bin_list[SN_1]
for x in range (0,7):
     for index in range(len(L)):
        print (y)

SN_bin_1 = bin_list[SN_5]
   for x in range (1,7):
     for index in range(len(L)):
        print (y)

SN_bin_2 = bin_list[SN_1]
   for x in range (2,7):
     for index in range(len(L)):
        print (y)


SN_bin_3 = bin_list[SN_1]
   for x in range (3,7):
     for index in range(len(L)):
        print (y)

SN_bin_4 = bin_list[SN_8]
   for x in range (4,7):
     for index in range(len(L)):
        print (y)

SN_bin_5 = bin_list[SN_8]
   for x in range (5,7):
     for index in range(len(L)):
        print (y)

SN_bin_6 = bin_list[SN_7]
   for x in range (6,7):
     for index in range(len(L)):
        print (y)

【问题讨论】:

  • 您遇到了什么错误?看起来你的缩进很古怪。
  • SN_bin_0 = bin_list[SN_1] NameError: name 'bin_list' is not defined but I have defined the variable
  • 从您的代码中,您似乎没有定义bin_list。您正在定义x 并为其分配字符串"bin_list"。看起来您正在使用 y 做类似的事情。
  • 那我该如何正确定义它

标签: list python-3.x


【解决方案1】:

1.制作清单

而不是写:

["0001"]
"0101"
"0001"
"0001"
"1000"
"1000"
"0111"

你可以把它做成一个列表:

bin_list = ["0101","0001","0001","1000","1000","0111"]

解释

  • 这是制作列表的正确方法:variable = [item1,item2,item3]
  • 它应该是一个列表,因为稍后您将使用索引来引用其中的项目。例如bin_List[1] 将返回字符串"0001"

2。变量x的值

而不是写:

x=("bin_list")

你应该这样做:

x=(bin_list)

解释

  • bin_list 上的引号使其成为 字符串。您希望 x 的值成为列表 bin_list
  • 您必须先创建(参见步骤 1),然后再将变量 x 分配给它。

3。变量y的值

而不是写:

y=("bin_list[SN_0]")

你应该这样做:

y= bin_list[SN_0]

解释

  • bin_list[SN_0] 上的引号使其成为 字符串。您希望 y 的值是列表 bin_list 的索引 [SN_0] 处的项目。

4.未定义变量

以下是未定义

[SN_0]
[SN_1]
[SN_5]
[SN_8]
L

每一个都需要一个值,例如:

SN_0 = 0
SN_1 = 1
SN_5 = 5
SN_8 = 8
L = x

解释

  • 未定义的变量将返回错误。
  • 它们都必须在用于 for 循环之前定义。
  • 如果L 应该引用列表,您可以将其替换为x,因为列表已经分配了变量x

4.缩进

以下代码有一个额外的缩进:

SN_bin_1 = bin_list[SN_5]
   for x in range (1,7):
     for index in range(len(L)):
        print (y)

SN_bin_2 = bin_list[SN_1]
   for x in range (2,7):
     for index in range(len(L)):
        print (y)


SN_bin_3 = bin_list[SN_1]
   for x in range (3,7):
     for index in range(len(L)):
        print (y)

SN_bin_4 = bin_list[SN_8]
   for x in range (4,7):
     for index in range(len(L)):
        print (y)

应该是:

SN_bin_1 = bin_list[SN_5]
for x in range (1,7):
     for index in range(len(L)):
        print (y)

SN_bin_2 = bin_list[SN_1]
for x in range (2,7):
     for index in range(len(L)):
        print (y)


SN_bin_3 = bin_list[SN_1]
for x in range (3,7):
     for index in range(len(L)):
        print (y)

SN_bin_4 = bin_list[SN_8]
for x in range (4,7):
    for index in range(len(L)):
        print (y)

【讨论】:

    【解决方案2】:

    您的代码似乎几乎没有问题。以下是无效的python:

    x=("bin_list")
    
    y=("bin_list[SN_0]")
    ["0001"]
    
    "0101"
    "0001"
    "0001"
    "1000"
    "1000"
    "0111"
    

    我认为您想要的是将这些值放在一个列表中,可以这样做:

    bin_list = ["0101", "0001", "0001", "1000", "1000", "0111"]
    

    接下来,您将使用未定义的变量访问列表。您需要使用整数或预先定义SN_0

    y = bin_list[0]
    

    SN_0 = 0
    y = bin_list[SN_0]
    

    最后,您的缩进在大多数循环上都关闭了。你有:

    SN_bin_1 = bin_list[SN_5]
       for x in range (1,7):
         for index in range(len(L)):
            print (y)
    

    你想要:

    SN_bin_1 = bin_list[SN_5]
    for x in range (1,7):        # <-- one less indent here
      for index in range(len(L)):
         print (y)
    

    我无法准确说出您的代码的用途,您似乎没有使用很多变量,并且您的目标是打印y 的值一定次数。修复这些错误后,如果代码仍未达到您的预期,请提出一个新问题。

    【讨论】:

      猜你喜欢
      • 2011-09-12
      • 2021-12-23
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多