首页 > 解决方案 > 使用函数为字符串中的每个字符连接字符串

问题描述

基本上我正在编写一个带有函数的莫尔斯电码程序,但我无法将字符串中的下一个字母转换为莫尔斯电码。那么如何连接字符串的每个字符然后打印它。我相信我在如何为字符串中的每个字符使用 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()

标签: pythonmorse-code

解决方案


问题是您在每个条件中都返回。而不是return (".-")for 条件char == "A",你应该有char = ".-"。然后您的字符串连接string = string + char将按预期工作。

它现在的工作方式是该函数encodeChartoMorse找到一个匹配项,然后完全从该函数返回。这就是为什么你只匹配第一个字母。


推荐阅读