我在这里拔毛......
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:语法无效
答案 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)
缺少
中的右括号MAC.append(字符(random.randomint(0,15))
MAC需要列出,因为你要追加,元组是不可变的
random.randint(而不是random.randomint)
答案 3 :(得分:1)
有几个问题:
|
(逻辑或)时,您正在使用or
(按位或)。请注意,您可以使用a in <tuple of values>
。.append
一个元组(或以其他方式改变它),使用一个列表。for a in range(5, 18)
而不是在while循环中手动计数。chars
元组 - 索引使用方形支持(chars[...]
)。请注意,您只需使用random.choice
。