Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python通过函数发送每个字符?_Python_Function_Loops - Fatal编程技术网

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

Python通过函数发送每个字符?,python,function,loops,Python,Function,Loops,所以我有一个任务,我需要请求用户输入。用户输入的每个字母都将返回与北约字母表等效的字母。e、 g.F=“狐步舞”。该输入通过一个函数获得返回值。我在函数中还有几个IF语句用于特定字符,例如9=“niner”、-=“Dash”,任何其他数字/字符都只返回该字符 我遇到的问题是,此时只允许输入一个字符。如果我尝试输入多个字符,则会出现错误“typeerror ord()需要一个字符,但找到了字符串长度”。我不能根据任务更改ord声明。因为它给出了北约字母表等价物的正确计算 def main():

所以我有一个任务,我需要请求用户输入。用户输入的每个字母都将返回与北约字母表等效的字母。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函数传递多个字符?然而,我不确定如何构建它。 有什么建议吗?
多谢各位

您可以使用
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']

或者您可以将main()重新构造为:

-
for语句用于迭代序列元素(如字符串、元组或列表)或其他iterable对象:
string是一个序列,因此可以使用
def main():
    userInput = input("Enter license plate tag: ")
    for char in userInput:
        charToWord(char)