在Python中,在字符串末尾添加整数

在Python中,在字符串末尾添加整数,python,string,integer,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 您可以使用+=运算符进行追加,但首先需要使用str将x转换为字符串: 您可以使用+=运算符进行追加,但首先需要使用str将x

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

这是我目前的代码:

import random

x=random.randint(0,255)
randIP = '192.168.0.'
randIP.append(x)
print randIP
您可以使用+=运算符进行追加,但首先需要使用str将x转换为字符串:

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

尝试不同的方法:。可能是这样的:

import random

x=random.randint(0,255)
randIP = '192.168.0.%s' % x
print randIP
尝试不同的方法:。可能是这样的:

import random

x=random.randint(0,255)
randIP = '192.168.0.%s' % x
print randIP
一般情况下,不要使用operator.add,例如+来处理字符串。它并没有什么特别的问题,但使用它是一种很好的做法

请尝试以下方法:

last_octet = random.randint(0,255) # please use descriptive var names
IP_format = "{}.{}.{}.{}"
IP = IP_format.format(192,168,0,last_octet)
您的方法将不起作用,因为您正在对字符串使用append。append通常被认为是一种列表添加到自身的方法。如果您想使用该方法,可以执行以下操作:

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,例如str192->192,第二个是iterable,在本例中是list IP_list,但iterables是任何可以使用for循环的参数。它将您赋予它的函数应用于iterable中的每个元素,并在Python3中为您留下一个称为map对象的不同iterable。在Python2中,它返回一个列表

…join显式调用str.join。它接受一个iterable作为参数,如上文所示,并将str放在iterable的每个元素之间。。join[192168,0255]为您提供192.168.0.255。它的别名在os.path、os.path.join中最常用,os.path.join接受一组参数,并在每个参数之间放置本地路径分隔符,例如os.path.joinC:、程序文件、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

一般情况下,不要使用operator.add,例如+来处理字符串。它并没有什么特别的问题,但使用它是一种很好的做法

请尝试以下方法:

last_octet = random.randint(0,255) # please use descriptive var names
IP_format = "{}.{}.{}.{}"
IP = IP_format.format(192,168,0,last_octet)
您的方法将不起作用,因为您正在对字符串使用append。append通常被认为是一种列表添加到自身的方法。如果您想使用该方法,可以执行以下操作:

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,例如str192->192,第二个是iterable,在本例中是list IP_list,但iterables是任何可以使用for循环的参数。它将您赋予它的函数应用于iterable中的每个元素,并在Python3中为您留下一个称为map对象的不同iterable。在Python2中,它返回一个列表

…join显式调用str.join。它接受一个iterable作为参数,如上文所示,并将str放在iterable的每个元素之间。。join[192168,0255]为您提供192.168.0.255。它的别名在os.path、os.path.join中最常用,os.path.join接受一组参数,并在每个参数之间放置本地路径分隔符,例如os.path.joinC:、程序文件、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


如果是int,请使用%d,而不是%s。不过,这不是我的反对票。不推荐使用,因为它提供了与更强大的功能相同的好处。@AdamSmith仅仅因为它提供了更强大的功能,在这样一个简单的情况下并不需要更强大的功能。@AdamSmith Fair point。尽管要解决上一个问题,但字符串插值的语法更短,因此在简单的情况下更具可读性。这是一个简单的例子,我还是喜欢它而不是.format。在这种情况下,客观上也不是更糟,因为结果是相等的。@DaniëlKnippers我可以尊重这一点。出于同样的原因,我仍然更喜欢typeitem是list而不是isinstanceitem,list,尽管客观上在所有情况下都更糟糕:。如果是int,请使用%d,而不是%s。不过,这不是我的反对票。不推荐使用,因为它提供了与更强大的功能相同的好处。@AdamSmith仅仅因为它提供了更强大的功能,在这样一个简单的情况下并不需要更强大的功能。@AdamSmith Fair point。尽管要解决上一个问题,但字符串插值的语法更短,因此在简单的情况下更具可读性。这是一个简单的例子,我还是喜欢它而不是.format。在这种情况下,客观上也不是更糟,因为结果是相等的。@DaniëlKnippers我可以尊重这一点。如果typeitem是list o,我仍然更喜欢它 ver isinstanceitem,出于同样的原因列出,尽管客观上在所有情况下都更糟:。