我需要生成一个以" 192.168.0开头的随机IP地址。"所以基本上我只需要生成0到255之间的随机数并添加到该字符串的末尾,但问题是我不知道如何合并整数和字符串。
到目前为止我的代码:
import random
x=random.randint(0,255)
randIP = '192.168.0.'
randIP.append(x)
print randIP
答案 0 :(得分:4)
一般情况下,请勿使用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"
),第二个是可迭代的(在本例中是{{} 1}} list
,但是iterables是你可以使用IP_list
循环的任何东西)。它将您赋予它的函数应用于iterable中的每个元素,并在Python3中为您留下一个称为for
对象的不同迭代。在Python2中,它返回了map
。
list
明确调用".".join
。它接受一个iterable作为参数(见上文),并将str.join
放在iterable的每个元素之间。 str
为您提供".".join(["192","168","0","255"])
。这可能最常用于"192.168.0.255"
,os.path
中的别名,它使用一组参数并将局部路径分隔符放在每个参数之间,例如: os.path.join
会在Windows上为os.path.join("C:","Program Files","AdamSmith","locale","en-US","docs.html")
提供一个字符串,并在* nix上为"C:\Program Files\AdamSmith\locale\en-US\docs.html"
答案 1 :(得分:1)
您可以使用+=
运算符进行追加,但您需要先使用x
将str
转换为字符串:
import random
x=random.randint(0,255)
randIP = '192.168.0.'
randIP += str(x)
print randIP
答案 2 :(得分:1)
尝试不同的方法:formatting。它可能看起来像这样:
import random
x=random.randint(0,255)
randIP = '192.168.0.%s' % x
print randIP