我在Python中连接字符串时遇到问题。我需要连接字符串clave和cadena_aleatoria(x),而cadena_inicio小于256.这是我的脚本:
import sys
import random
x = random.randint(0,9)
def cadena_aleatoria(x):
cadena = []
cadena.append(x)
while len(cadena)<10:
x = random.randint(0,9)
cadena.append(x)
b = "".join(str(i) for i in cadena)
print(b, end = "")
def cadena_inicio():
clave = "5275328525062135755"
cadena = clave + str(cadena_aleatoria(x))
while len(cadena)<256:
cadena = clave + str(cadena_aleatoria(x))
print(cadena)
cadena_inicio()
答案 0 :(得分:1)
每次循环时,您都需要添加cadena
不重新分配。
您还需要检查while len(cadena + str(cadena_aleatoria(x)))
,因为您在检查后一段时间内将str(cadena_aleatoria(x)))
添加到cadena
后可能会过去。
while len(cadena + str(cadena_aleatoria(x))) < 256:
cadena += clave + str(cadena_aleatoria(x))
如果您不想将return(b)
添加到您的cadena字符串中,还需要None's
def cadena_aleatoria():
cadena = []
cadena.append(x)
while len(cadena)<10:
x = random.randint(0,9)
cadena.append(x)
b = "".join(str(i) for i in cadena)
return b
def cadena_inicio():
clave = "5275328525062135755"
cadena = ""
while len(cadena + cadena_aleatoria(x)) < 256:
cadena += clave + cadena_aleatoria(x)
print (cadena)
您的第一个功能可以使用list comprehension
:
def cadena_aleatoria():
return "".join([str(random.randint(0,9)) for x in range(10)])
def cadena_inicio():
clave = "5275328525062135755"
cadena = ""
while len(cadena + cadena_aleatoria()) < 256:
cadena += clave + cadena_aleatoria()
print (cadena)
答案 1 :(得分:0)
你遇到了一些问题。
首先,您没有从函数cadena_aleatoria(x)
返回任何内容,因此调用它会返回None
,并且您不希望将None
添加到字符串中。因此,如果您想返回b
,则应return b
。
另一个问题是你没有在while循环中为cadena添加任何长度。你可能想这样做:
cadena += clave + str(cadena_aleatoria(x))
你也没有从cadena_inicio()
返回任何内容,但也许这是故意的。