Python通过函数发送每个字符?

2024-04-20 12:05:30 发布

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

所以我有一个任务,我需要请求用户输入。用户输入的每个字母将返回北约等效字母表。e、 g.F=“狐步舞”。这个输入通过一个函数获得返回值。我在函数中还有几个IF语句用于特定字符,例如9=“niner”,—=“Dash”,任何其他数字/字符都只返回该字符

我的问题是,它将在这个时候只允许输入一个字符。如果我尝试输入多个字符,则会出现错误“typeerror ord()需要一个字符,但找到了字符串长度”。我不能根据任务改变ord语句。因为它给出了北约字母表的正确计算

def main():
    char = input("Enter license plate tag: ")
    charToWord(char)

def charToWord(char):    
nato = ["Alpha","Beta","Charlie","Delta","Echo","Foxtrot","Golf","Hotel","India","Juliett","Kilo","Lima","Mike","November","Oscar","Papa","Quebec","Romeo","Sierra","Tango","Uniform","Victor","Whiskey","X-Ray","Yankee","Zulu" ]
work =''

charNum = ord(char) - 65
word = nato[charNum]

if char.isalpha():
   print(word)
if char == "9":
   print("Niner")
if char == "-":
   print("Dash")
else:
   print(char)

return word

main()

所以我认为我需要在我的主函数中输入For循环?为了让它通过charToWord函数传递多个字符?但是我不知道如何构建它。 有什么建议吗? 谢谢你


Tags: 函数用户ifmaindef语句字符字母表
2条回答

或者可以将main()重组为:

def main():
    userInput = input("Enter license plate tag: ")
    for char in userInput:
        charToWord(char)

您可以使用map执行以下操作:

def charToWord(char):    
    nato = ["Alpha","Beta","Charlie","Delta","Echo","Foxtrot","Golf","Hotel","India","Juliett","Kilo","Lima","Mike","November","Oscar","Papa","Quebec","Romeo","Sierra","Tango","Uniform","Victor","Whiskey","X-Ray","Yankee","Zulu" ]
    decode = {w[0]: w for w in nato}
    decode["9"] = "Niner"
    decode["-"] = "Dash"
    return decode.get(char, char)

# ...
list(map(charToWord, "ABC9-9G"))
# ['Alpha', 'Beta', 'Charlie', 'Niner', 'Dash', 'Niner', 'Golf']

相关问题 更多 >