TypeError:在atom文本编辑器中,无法使用ind cmd prom调用“str”对象

2024-09-21 09:42:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行了代码,得到了错误'str' object is not callable

import random, string

def generator():
    letter1 = random.choice(string.ascii_lowercase)
    letter2 = random.choice(string.ascii_lowercase)
    letter3 = random.choice(string.ascii_lowercase)
    letter4 = random.choice(string.ascii_lowercase)
    letter5 = random.choice(string.ascii_lowercase)


letter_input_1 = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter:')
letter_input_2 = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter:')
letter_input_3 = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter:')
letter_input_4 = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter:')
letter_input_5 = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter:')

vowels = 'aeiouy'
consonants = 'bcdfghjklmnpqrstvwxz'
letter = string.ascii_lowercase

def generator():

    if letter_input_1 == "v":
        letter1 = random.choice(vowels)
    elif letter_input_1 == "c":
        letter1 = random.choice(consonants)
    elif letter_input_1 == "l":
        letter1 = random.choice(letter)
    else:
        letter1 = letter_input_1 #allowing user to select a specific letter

if letter_input_2 == "v":
    letter2 = random.choice(vowels)
elif letter_input_2 == "c":
    letter2 = random.choice(consonants)
elif letter_input_2 == "l":
        letter2 = random.choice(letter)
else:
        letter2 = letter_input_2 #allowing user to select a specific letter

if letter_input_3 == "v":
    letter3 = random.choice(vowels)
elif letter_input_3 == "c":
    letter3 = random.choice(consonants)
elif letter_input_3 == "l":
    letter3 = random.choice(letter)
else:
    letter3 = letter_input_3 #allowing user to select a specific letter

if letter_input_4 == "v":
    letter4 = random.choice(vowels)
elif letter_input_4 == "c":
    letter4 = random.choice(consonants)
elif letter_input_4 == "l":
    letter4 = random.choice(letter)
else:
    letter4 = letter_input_4 #allowing user to select a specific letter

if letter_input_5 == "v":
    letter5 = random.choice(vowels)
elif letter_input_5 == "c":
    letter5 = random.choice(consonants)
elif letter_input_5 == "l":
    letter5 = random.choice(letter)
else:
    letter5 = letter_input_5 #allowing user to select a specific letter
name = 'letter1+letter2+letter3+letter4+letter5'
'return'(name )

for babynames in range(20):
    print(generator())

它应该根据我输入的变量给出随机字母,但我得到的却是错误

File "C:\Users\17348\Desktop\py4e\babynames4.py", line 69, in <module>
    'return'(name )
TypeError: 'str' object is not callable

Tags: forinputstringasciianyrandomchoiceelif
2条回答

代码的问题是缩进是错误的,当它们不应该是字符串时,它们就是字符串。你知道吗

尤其是这一行:

name = 'letter1+letter2+letter3+letter4+letter5'
'return'(name )

通过正确地缩进它们并将字符串转换为语句,您可以得到以下代码,这些代码似乎可以执行您想要的操作:

import random, string

letter_input_1 = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter:')
letter_input_2 = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter:')
letter_input_3 = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter:')
letter_input_4 = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter:')
letter_input_5 = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter:')

vowels = 'aeiouy'
consonants = 'bcdfghjklmnpqrstvwxz'
letter = string.ascii_lowercase

def generator():

    if letter_input_1 == "v":
        letter1 = random.choice(vowels)
    elif letter_input_1 == "c":
        letter1 = random.choice(consonants)
    elif letter_input_1 == "l":
        letter1 = random.choice(letter)
    else:
        letter1 = letter_input_1 #allowing user to select a specific letter

    if letter_input_2 == "v":
        letter2 = random.choice(vowels)
    elif letter_input_2 == "c":
        letter2 = random.choice(consonants)
    elif letter_input_2 == "l":
            letter2 = random.choice(letter)
    else:
            letter2 = letter_input_2 #allowing user to select a specific letter

    if letter_input_3 == "v":
        letter3 = random.choice(vowels)
    elif letter_input_3 == "c":
        letter3 = random.choice(consonants)
    elif letter_input_3 == "l":
        letter3 = random.choice(letter)
    else:
        letter3 = letter_input_3 #allowing user to select a specific letter

    if letter_input_4 == "v":
        letter4 = random.choice(vowels)
    elif letter_input_4 == "c":
        letter4 = random.choice(consonants)
    elif letter_input_4 == "l":
        letter4 = random.choice(letter)
    else:
        letter4 = letter_input_4 #allowing user to select a specific letter

    if letter_input_5 == "v":
        letter5 = random.choice(vowels)
    elif letter_input_5 == "c":
        letter5 = random.choice(consonants)
    elif letter_input_5 == "l":
        letter5 = random.choice(letter)
    else:
        letter5 = letter_input_5 #allowing user to select a specific letter
    name = letter1+letter2+letter3+letter4+letter5
    return(name )

for babynames in range(20):
    print(generator())

这是一个简明的版本,初学者仍然很容易阅读:

import random, string

def generator(total):
    vowels = 'aeiouy'
    consonants = 'bcdfghjklmnpqrstvwxz'
    letter = string.ascii_lowercase

    choices = [""] * total
    for choice in choices:
        choice = random.choice(string.ascii_lowercase)

    selections = [""] * total
    for x, selection in enumerate(selections):
        selection = input('choose a letter..."v"for vowels, "c" for consonants, "l" for any other letter, or pick any letter: ')

        if selection == "v":
            choices[x] = random.choice(vowels)
        elif selection == "c":
            choices[x] = random.choice(consonants)
        elif selection == "l":
            choices[x] = random.choice(letter)
        else:
            choices[x] = selection #allowing user to select a specific letter

    return("".join(choices))

for babynames in range(20):
    print(generator(5))

相关问题 更多 >

    热门问题