簡體   English   中英

用Python連接字符串?

[英]Concatenate strings in Python?

我在使用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()

您需要添加到cadena而不是每次循環都重新分配。

您還需要檢查while len(cadena + str(cadena_aleatoria(x)))因為一旦在檢查之后的cadena內將str(cadena_aleatoria(x)))cadena ,就可能要cadena

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

如果您不想在cadena字符串中添加None's則還需要return(b)

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)

您遇到了一些問題。

首先,您不會從cadena_aleatoria(x)函數返回任何內容,因此調用它會返回None並且您不想將None添加到字符串中。 因此,如果您想返回b ,則應該return b

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

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

您也不會從cadena_inicio()返回任何內容,但這也許是有意的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM