2014-09-25 69 views
0

我在Python中連接字符串時遇到了問題。我需要連接字符串釜和cadena_aleatoria(X),而cadena_inicio比256小這是我的腳本:在Python中連接字符串?

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

你的意思是'cadena + = clave + str(cadena_aleatoria(x))'? – karthikr 2014-09-25 20:29:28

+1

你的問題是「雖然cadena_inicio小於256」,但是你的代碼說「len(cadena)<256」 - 這可能是問題的一部分嗎? – 2014-09-25 20:33:36

+0

那麼你的問題到底是什麼? – 2014-09-25 20:34:28

回答

1

您需要添加到cadena通過循環每次不重新分配。

您還需要檢查while len(cadena + str(cadena_aleatoria(x))),因爲您在檢查後可能會在內添加str(cadena_aleatoria(x)))

while len(cadena + str(cadena_aleatoria(x))) < 256: 
     cadena += clave + str(cadena_aleatoria(x)) 

還需要return(b)如果你不想使用添加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) 
0

你」我遇到了一些問題。

首先,你沒有從函數cadena_aleatoria(x)返回任何東西,所以調用它,返回None,並且你不想將None添加到你的字符串中。所以如果你想返回b,你應該return b

另一個問題是,你沒有在while循環中向cadena添加任何長度。你可能想這樣做:

cadena += clave + str(cadena_aleatoria(x)) 

你還沒有返回從cadena_inicio()什麼,但也許這是故意的。