找不到的语法错误

2 投票
4 回答
3153 浏览
提问于 2025-04-16 12:24

我快抓狂了...

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

我到底哪里出错了?!缩进是正确的,就像例子里显示的那样。任何帮助都非常欢迎。补充:哦,糟糕,忘了说错误是什么了...

文件 "macchanger.py",第12行 a += 1 ^ 语法错误:无效的语法

4 个回答

1
  1. 缺少了一个闭合的括号在

    MAC.append(chars(random.randomint(0,15))

  2. MAC 需要是一个列表,因为你要添加内容,元组是不可变的

  3. 应该用 random.randint(而不是 random.randomint)

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

撰写回答