如何在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 个单词。

产生的输出: 我没有得到 10 个不同的文本,而是得到类似 sdfes sdfes sdfes 的输出 - 相同的文本 10 次。

如何解决这个问题?

原文由 Andrew 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 463
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()

编辑: 请注意,如果您不使用上面的代码输入 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()

原文由 FernAndr 发布,翻译遵循 CC BY-SA 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)

原文由 maddie 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题