繁体   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