[英]How to run a function multiple times in python
我有一个代码:
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条不同的文本。
如何解决呢?
如果要打印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()
因为您要在循环中加入相同的j列表10次:
for x in range(0, 10):
print(''.join(j))
之所以会这样,是因为您只编写一次字符串,最后将其打印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))
您生成一个字符串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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.