Python用户名生成器

Python用户名生成器,python,python-3.x,Python,Python 3.x,以下是我的代码: string1 = (input("What is your name?")) #creates a string, stores the name in it first1 = string1[:1] string2 = (input("What is your last name?")) first3 = string2[:3] from random import randint sentence = "".join((str(randint(0,9)), first

以下是我的代码:

string1 = (input("What is your name?")) #creates a string, stores the name in it
first1 = string1[:1]

string2 = (input("What is your last name?"))
first3 = string2[:3]

from random import randint
sentence = "".join((str(randint(0,9)), first1.lower(), first3.upper()))
print (sentence)
sentence = "".join((str(randint(0,9)), first1.lower(), first3.upper()))
print (sentence)
它能用,但我有点麻烦。我需要循环这5次-但它不工作的原因


附言:Python 3

您正在创建一个名为句子的
元组,而不是
字符串

如果将该行更改为:

sentence = "".join((str(randint(0,9)), first1.lower(), first3.upper()))
它将创建一个没有间隙的字符串,就像打印时那样:

What is your name?First
What is your last name?Last
5fLAS

您正在创建一个列表,而不是一个字符串,因此在尝试打印时出现问题似乎是合乎逻辑的

要附加到字符串,可以执行以下操作:

sentence = str(randint(0,9))+(first1.lower())+(first3.upper())
在Python中,您不需要为变量指定类型,这取决于您在变量中输入了什么。 在Python中,括号“()”之间的元素被视为元组(一种类似于列表但不能修改的类型),“[]”表示列表,“{}”表示词汇表。因此,您必须不要将字符串的某些部分放在括号之间并用逗号分隔,否则会将它们变成一个单词列表。相反,您可以使用“+”,这对Python意味着您正在进行字符串连接。还要注意,我将您的随机数转换为字符串。若您给出3个由“+”分隔的字符串,Python将自动将句子检测为字符串。你已经创建了一个字符串

如果您有一个列表,并且希望去掉空格,您也可以使用:

"".join(yourlist)
但是,我不建议您在这里使用它,因为您可以从一开始就创建字符串,所以您将创建一个列表,并免费使用联接


编辑:至于循环,如果你不复制粘贴循环的代码和错误,我们无法回答,这可能是一百万件事。

什么错误以及你是如何尝试循环的?为什么你要包装一个元组而不是字符串(
句子=(randint(0,9),(first1.lower(),(first3.upper())
)?我使用了“在范围内的我”:不知道为什么它不起作用…@linusg它不是一个元组的元组,只是一个元组。但这仍然解释了输出中的“空格”。@linusg
(x)
x
完全相同;要使它成为元组,它必须是
(x,)
。。。或者只使用
…++加入。谢谢!我怎样才能把它变成一个字符串而不是一个列表?有什么办法吗?你好。没问题。我给你的解决方案是一个字符串。我添加了更多的细节,以便您能够理解其中的差异。如果你不明白,请告诉我。