语法错误,我找不到

时间:2011-02-23 17:03:00

标签: python syntax-error

我在这里拔毛......

import os
import random
MAC = (0,0,":",0,0,":")
chars = ('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e')
a = 5
while (a <= 17):
  if a == 6 | a == 9 | a == 12 | a == 15:
    MAC.append(":")
  else:
    MAC.append(chars(random.randomint(0,15))

  a += 1
print MAC

我做错了什么?!缩进是正确的,正如示例所示。欢迎任何帮助。 编辑: OH CRAP,忘了显示错误是什么..

  

文件“macchanger.py”,第12行       a + = 1       ^ SyntaxError:语法无效

4 个答案:

答案 0 :(得分:4)

您正在寻找逻辑或(or)而不是按位或(|)。

Chars不是一个函数,而是一个数组。使用数组下标获取值。 (即chars[rand]而非chars(rand)

在追加随机字符行之后你缺少一个括号。

您也无法附加到元组,需要将MAC列为一个列表。

random模块也没有'randomint'功能。您正在寻找randint


编辑:如果您希望使用Python的生成器,这也可以替换您的整个函数:

MAC = ':'.join(['%02x'%c for c in [0, 0]+[random.randint(0,255) for d in range(4)]])

答案 1 :(得分:2)

尝试

import os
import random

def makeMAC(pre=None):
    pre = [int(i) for i in pre] if pre else []
    for byte in range(len(pre), 6):
        pre.append(random.randint(0,255))
    return ':'.join('%02x'%(i) for i in pre)

print makeMAC([0,0])

返回

00:00:cd:c1:7d:c0

答案 2 :(得分:1)

  1. 缺少

    中的右括号

    MAC.append(字符(random.randomint(0,15))

  2. MAC需要列出,因为你要追加,元组是不可变的

  3. random.randint(而不是random.randomint)

答案 3 :(得分:1)

有几个问题:

  • 编译器告诉你的那个 - 上面一行中的parens不匹配(一如既往,确切的错误信息会有所帮助)
  • 当您需要|(逻辑或)时,您正在使用or(按位或)。请注意,您可以使用a in <tuple of values>
  • 更好地进行此项检查
  • 你不能.append一个元组(或以其他方式改变它),使用一个列表。
  • 您应该只使用for a in range(5, 18)而不是在while循环中手动计数。
  • 调用 chars元组 - 索引使用方形支持(chars[...])。请注意,您只需使用random.choice