Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
269 views
in Technique[技术] by (71.8m points)

python - How to convert an input number string to a sentence according to alphabetical mapping?

I'm trying to code a simple function where number strings are converted to the corresponding sentence. Each number represents a letter (1=A, 2=B...26=Z). Words in the sentence are separated by '+' and letters are separated by a space. For example, input num_to_letters('20 5 19 20+4 15 13 5') should return 'TEST DOME'.

import string

def num_to_letters(s):
  '''Converts input number string to a sentence'''

  alphabet = string.ascii_lowercase
  alphabet=[i for i in alphabet]
  dic = {i:j for i,j in enumerate(alphabet, 1)}
  res = ''
  for num in s:
    if num in dic:
      res+= dic[int(num)]
    elif num == ' ':
      res+= ''     
    elif num == '+':
      res+= ' '
  return res

num_to_letters('8 9+13 9 8 9 18')

However, I'm getting an empty string returned in the output. What is the issue here?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This is a simples way using ASCII::

def num_to_letters(s):
  result = ""
  words = s.split("+")
  for word in words:
    letters = word.split(" ")
    for letter in letters:
      result = result + chr(int(letter) + 64)
    result = result + " "
  return result

print(num_to_letters("8 9+13 9 8 9 18"))

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...