python - Python通过函数发送每个字符?
问题描述
所以我有这个任务,我需要询问用户输入。用户输入的每个字母都将返回等效的北约字母表。例如 F="FoxTrot"。这个输入通过一个函数来获取返回值。我还在函数中有几个针对特定字符的 IF 语句,例如 9="niner"、-="Dash",任何其他数字/字符都只返回该字符。
我遇到的问题是此时它只允许输入一个字符。如果我尝试输入多个字符,它会给我错误“typeerror ord() expected a character but string length # found”。我无法根据分配更改该 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']
推荐阅读
- python - 无法从 Jupyter 实验室的终端移至主目录下的文件
- android - App Bundle 如何影响应用程序更新大小
- r - ggrepel:在地图外绘制标签
- swiftui - Swiftui:@environmentObject - 不能在属性初始化器中使用实例成员;属性初始化程序在“自我”可用之前运行
- go - 如何在 Golang Cloud 函数中重用数据库连接?
- node.js - 如何为不同类型的用户初始化和使用护照?
- powershell - PowerShell - 替换字符串的第三次和第四次出现
- javascript - 使动态生成的表格的单元格内容成为超链接
- xamarin.forms - Xamarin WebAPI 调用未运行-未引发异常
- javascript - javascript表单;验证文本(准确的单词)