我需要生成一个以“192.168.0”开头的随机 IP 地址。所以基本上我只需要生成一个 0 到 255 之间的随机数并添加到这个字符串的末尾,但问题是我不知道如何合并整数和字符串。
到目前为止,这是我的代码:
import random
x=random.randint(0,255)
randIP = '192.168.0.'
randIP.append(x)
print randIP
请您参考如下方法:
一般情况下,不要使用operator.add(例如+)来处理字符串。它没有什么特别的问题,但是使用 string formatting 是好的做法相反。
试试这个:
last_octet = random.randint(0,255) # please use descriptive var names
IP_format = "{}.{}.{}.{}"
IP = IP_format.format(192,168,0,last_octet)
您的方法行不通,因为您在字符串上使用了 append。 append 是(通常被认为是)list 添加到自身的方法。如果您想使用该方法,您可以这样做:
last_octet = random.randint(0,255)
IP_list = [192,168,0]
IP_list.append(last_octet) # IP_list is now [192,168,0,<random number>]
IP = ".".join(map(str,IP_list))
在最后一行中,我结合使用了两个您可能不知道的函数。
map接受两个参数,第一个是函数(在本例中为str,例如str(192) --> "192"),第二个是可迭代的(在本例中为listIP_list,但可迭代是您可以使用for循环的任何内容在)。它将您提供给它的函数应用于可迭代对象中的每个元素,并在 Python3 中为您留下一个称为map对象的不同可迭代对象。在 Python2 中,它返回一个list。"..join显式调用str.join。它接受一个可迭代对象作为参数(见上文),并将str放在可迭代对象的每个元素之间。".".join(["192","168","0","255"])给你"192.168.0.255"。这可能最常被它在os.path中的别名使用,os.path.join接受一组参数并在每个参数之间放置本地路径分隔符,例如os.path.join("C:","Program Files","AdamSmith","locale","en-US","docs.html")会在 Windows 上给你一个字符串那是"C:\Program Files\AdamSmith\locale\en-US\docs.html"而在 *nix 上那是C:/Program Files/AdamSmith/locale/en-US/docs .html"
