簡體   English   中英

如何在python中多次運行函數

[英]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()

編輯:請注意,如果您不使用上面的代碼輸入vc ,它將告訴您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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM