Search code examples
pythonlistfor-loopasciiuser-input

Take number from user. For example if user enter 123 then it will print abc if user enter 13 12 11 then output would be mlk using python


Take number from user. For example if user enter 123 then it will print abc if user enter numbers 13 12 11 then output would be 'mlk' using python language.

Please ! Help me to solve out this question.

list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
         'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

for i in enumerate((list1)):
    inputnum = int(input("enter number"))
    print(i)


Output  would be:
  (0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'e')
(5, 'f')
(6, 'g')
(7, 'h')
(8, 'i')
(9, 'j')
(10, 'k')
(11, 'l')
(12, 'm')
(13, 'n')
(14, 'o')
(15, 'p')
(16, 'q')
(17, 'r')
(18, 's')
(19, 't')
(20, 'u')
(21, 'v')
(22, 'w')
(23, 'x')
(24, 'y')
(25, 'z')

expected: If User enter 234 it will print cde as output


Solution

  • you can store user input as a list. and create a dictionary

    usr_input=list(map(int,input("Enter the number:").split())) #User input stored as a list by using mapping
    
    dic={1:'a', 2:'b', 3:'c', 4:'d', 5:'e', 6:'f', 7:'g', 8:'h', 9:'i', 10:'j', 11:'k', 12:'l',13:'m', 14:'n', 15:'o', 16:'p', 17:'q', 18:'r', 19:'s', 20:'t', 21:'u', 22:'v', 23:'w', 24:'x', 25:'y', 26:'z'}
    
    res=""
    for num in usr_input:
        res+=dic.get(num,'') #If the value is not present in a dictionary than add empty string to the res
    
    print(res)
    

    Output:

    Enter the number:11 13 27 23
    kmw
    
    As 11:'k', 13:'m', 27:'' [as an empty string], 23:'w' -> 'k'+'m'+''+'w' ->'kmw'
    

    Let's say you want to optimize space complexity [i.e without dictionary].

    usr_input=list(map(int,input("Enter the number:").split()))
    
    res=""
    for num in usr_input:
        if 97<=num+96<=122: #ascii values of 'a':97 'z':122
            res+=chr(num+96)
    
    print(res)
    

    Output:

    Enter the number:11 13 27 16
    kmp