[英]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.