我有一个代码:
import random
vowels, consonants='aeiou','bcdfghjklmnpqrstvwxyz'
terms = int(input("How many letters you want for your baby's name? "))
def babyname():
for i in range(0, terms):
j=['','','','','']
k = input("What letter do you want? Enter 'v' for vowels, 'c' for consonants: ")
if k == 'v':
j[i] = random.choice(vowels)
elif k == 'c':
j[i] =random.choice(consonants)
else:
k = input("What letter do you want? Enter 'v' for vowels, 'c' for consonants: ")
print(j)
babyname()
输入:i) 它将询问要生成的单词的字母数。 ii)它会询问每个字母是辅音还是元音。
预期输出:i) 使用输入的字母数打印生成的单词
但是产生了输出:i) 仅在限制之前生成的字母。如果输入5。它仅生成第 5 个字母。
我做了什么:我想将变量 j 设为索引为 i 的列表,以便稍后添加所有字符串来生成单词。但这并没有发生。
要做什么?
最佳答案
您的代码比您刚刚询问的错误更多。
例如,如果用户输入 7 个字母,则 j
列表中只有 5 个字母的空间,从而引发索引错误。
解决方案是创建一个空列表并每次都附加到该列表。
<小时/>你的a
字典是多余的,也许你只是想学习如何使用字典?您可以比较:
if k == 'v':
#do something
elif k == 'c':
#do something
<小时/>
你的else
语句没有任何意义,因为你的用户可以输入任何内容,如果它不在你的字典中,它会抛出一个keyError,也许摆脱它?也许这还没有完全实现,但是将用户输入作为字典的键查找通常是一个坏主意。使用其他东西。
最后,为了回答您的问题,请将 print(j)
行移到 for 循环
之外。当一切都说完了之后,它应该看起来像这样:
import random
vowels, consonants='aeiou','bcdfghjklmnpqrstvwxyz'
terms = int(input("How many letters you want for your baby's name? "))
def babyname():
j = []
for i in range(0, terms):
a = {'v':'v','c':'c','l':'l'}
k = input("What letter do you want? Enter 'v' for vowels, 'c' for consonants: ")
if a[k] == 'v':
j.append(random.choice(vowels))
elif a[k] == 'c':
j.append(random.choice(consonants))
else:
print('not an option')
print(j)
babyname()
这将打印一个列表,所以也许您想使用 join() 将其组合为一个字符串:
print(''.join(j))
关于python - 在python3中创建变量来分配多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45887999/