python - 使用函数为字符串中的每个字符连接字符串
问题描述
基本上我正在编写一个带有函数的莫尔斯电码程序,但我无法将字符串中的下一个字母转换为莫尔斯电码。那么如何连接字符串的每个字符然后打印它。我相信我在如何为字符串中的每个字符使用 for 循环时遇到了麻烦,因为它只在最后一个字符处停止。
def encodeChartoMorse(text_input):
all_caps=text_input.upper()
length=len(all_caps)
string=''
for letter in range(0, length):
char = all_caps[letter]
if (char == "A"):
return (".-")
elif (char == "B"):
return("-...")
elif (char== "C"):
return("-.-.")
elif (char == "D"):
return("-..")
elif (char == "E"):
return(".")
elif (char == "F"):
return("..-.")
elif (char == "G"):
return("--.")
elif (char == "H"):
return("....")
elif (char == "I"):
return("..")
elif (char == "J"):
return(".---")
elif (char == "K"):
return("-.-")
elif (char == "L"):
return(".-..")
elif (char == "M"):
return("--")
elif (char == "N"):
return("-.")
elif (char == "O"):
return("---")
elif (char == "P"):
return(".--.")
elif (char == "Q"):
return(" --.-")
elif (char == "R"):
return(".-.")
elif (char == "S"):
return("...")
elif (char == "T"):
return("-")
elif (char == "U"):
return("..-")
elif (char == "V"):
return("...-")
elif (char == "W"):
return(".--")
elif (char == "X"):
return("-..-")
elif (char == "Y"):
return("-.--")
elif (char == "Z"):
return("--..")
else:
return('*')
string=string+char
return char
def main():
text_input=str(input("Enter some text to convert to Morse code: "))
print(text_input)
morse_code=encodeChartoMorse(text_input)
print(morse_code)
main()
解决方案
问题是您在每个条件中都返回。而不是return (".-")
for 条件char == "A"
,你应该有char = ".-"
。然后您的字符串连接string = string + char
将按预期工作。
它现在的工作方式是该函数encodeChartoMorse
找到一个匹配项,然后完全从该函数返回。这就是为什么你只匹配第一个字母。
推荐阅读
- css - 如何为移动设备调整文本大小 (Css)
- angular - 在 IntelliJ 中,如何从 'rxjs/operators' iso 'rxjs/internal/operators' 自动导入 rxjs 运算符?
- java - MySQL 员工数据库 java.sql.SQLException: url 不能为空
- google-app-engine - 使用谷歌应用引擎设置自定义“A”资源记录以避免重定向
- django - 我的路由器在 django rest 框架工作 1.11 上工作,但此代码在 django rest 框架工作 2 中不起作用
- netsuite - NetSuite SuiteScript SSS_CONNECTION_CLOSED
- dll - 将 TeamFoundation dll 升级到 2017 后出现 MSBuild 错误
- java - 提取字符串的正则表达式从 '=' 开始,以 '\t' 结束
- uglifyjs - 如何将 uglifyjs 3 mangle 选项与 toplevel 和 reserverd 一起使用?
- java - 检查 HashMap 中是否存在 String 的一部分