在Python的字符串末尾添加一个整数

时间:2014-03-24 20:24:37

标签: python string integer

我需要生成一个以" 192.168.0开头的随机IP地址。"所以基本上我只需要生成0到255之间的随机数并添加到该字符串的末尾,但问题是我不知道如何合并整数和字符串。

到目前为止我的代码:

import random

x=random.randint(0,255)
randIP = '192.168.0.'
randIP.append(x)
print randIP

3 个答案:

答案 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)

您的方法无效,因为您在字符串上使用appendappend是(通常被认为是)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)

您可以使用+=运算符进行追加,但您需要先使用xstr转换为字符串:

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