我想循环时为什么会出错

时间:2016-04-29 15:45:43

标签: list python-3.x

当我使用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)

2 个答案:

答案 0 :(得分: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
  • 在将变量x分配给它之前,您必须创建(参见第1步)。

第3。变量值y

而不是写作:

y=("bin_list[SN_0]")

你应该这样做:

y= bin_list[SN_0]

解释

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

<强> 4。未定义的变量

以下是 undefined

[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)

答案 1 :(得分:0)

您的代码似乎存在一些问题。以下是无效的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的值。一旦您修复了这些错误,如果代码仍未达到预期效果,请打开一个新问题。