我有一个代码:
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):
k = input("Would you like a [v]owel or [c]onsonant: ")
if k.lower() == 'v':
j.append(random.choice(vowels))
elif k.lower() == 'c':
j.append(random.choice(consonants))
else:
print("Unknown Input: "+ k)
for x in range(0, 10):
print(''.join(j))
babyname()
输入:我可以输入一个数字,表示字母数为5,v或c表示这些数字。
预期输出:对于输入,我想生成生成的文本j
,每个文本使用不同的文本生成10次。对于示例输入,预期输出应该是 - sdfes gdadf nkadj就像这10个单词。
输出结果:我得到的输出就像sdfes sdfes sdfes - 相同的文字10次。而不是得到10个不同的文本。
如何解决这个问题?
答案 0 :(得分:2)
如果您想要打印10个不同的名字,但只要求一次元音或常数问题,您可以执行以下操作:
import random
vowels, consonants='aeiou','bcdfghjklmnpqrstvwxyz'
terms = int(input("How many letters you want for your baby's name? "))
def babyname():
choices = []
for i in range(terms):
k = input("Would you like a [v]owel or [c]onsonant: ")
choices.append(k)
for x in range(10):
j = []
for k in choices:
if k.lower() == 'v':
j.append(random.choice(vowels))
elif k.lower() == 'c':
j.append(random.choice(consonants))
else:
print("Unknown Input: " + k)
print(''.join(j))
babyname()
编辑:请注意,如果您没有使用上面的代码输入v
或c
,它会告诉您10次错误,并且仅在您之后给了所有的投入。因此,这样的事情可能是更好的方法:
import random
vowels, consonants='aeiou','bcdfghjklmnpqrstvwxyz'
terms = int(input("How many letters you want for your baby's name? "))
def babyname():
choices = []
for i in range(terms):
while True:
k = input("Would you like a [v]owel or [c]onsonant: ")
if k.lower() in ('v', 'c'):
break
else:
print("Unknown Input: " + k)
choices.append(k.lower())
for x in range(10):
j = []
for k in choices:
if k == 'v':
j.append(random.choice(vowels))
elif k == 'c':
j.append(random.choice(consonants))
print(''.join(j))
babyname()
答案 1 :(得分:0)
因为您在循环中加入了相同的j列表10次:
Please note that it is up to the called processes to properly manage parallel access to shared resources. For example, if
答案 2 :(得分:0)
你得到这个是因为你只编写一次字符串并在结束时打印10次,解决方案是将整个过程循环10次。像
def babyname():
for n in range(0,10):
j=[]
for i in range(0, terms):
k = input("Would you like a [v]owel or [c]onsonant: ")
if k.lower() == 'v':
j.append(random.choice(vowels))
elif k.lower() == 'c':
j.append(random.choice(consonants))
else:
print("Unknown Input: "+ k)
print(''.join(j))
babyname()
要循环使用相同的输出10次
def babyname():
inp=""
for i in range(0, terms):
k = input("Would you like a [v]owel or [c]onsonant: ")
if k.lower() == 'v' || k.lower()=='c':
inp+=k
else:
print("Unknown Input: "+ k)
for n in range(0,10):
j=[]
for v in inp:
if k.lower()=='v':
j.append(random.choice(vowels))
elif k.lower() == 'c':
j.append(random.choice(consonants)
print(''.join(j))
答案 3 :(得分:0)
生成一个字符串j并打印10次。尝试在数组中存储'v'和'c'选项,然后在循环中运行随机函数。 假设你的j将是'cvccv'
for i in range (0, 10):
name = []
for c in j:
if sign == 'v':
name.append(random.choice(vowels))
if sign == 'c':
name.append(random.choice(consonants))
print(name)