2017-02-15 4 views
-1

Я просто составил словарь с каждой буквой алфавита, имеющим числовое значение. Я пробовал несколько вещей и продолжал получать ошибки. Я могу добавить все значения словаря с помощью sum (alphaDict.values ​​()), но не может добавлять отдельные значения вместе с пользовательским вводом. Теперь, если я использую код, поскольку у меня ниже того, что возвращается, это тип 'str', поэтому они не могут быть добавлены как числа. Кстати, я знаю, что словарь вышел смешно, глядя в этот пост, но не беспокойтесь об этом. ^^Добавление значений словаря из raw_input()

alphaDict = {'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': 26} 


print 'sum(alphaDict.values()) =', sum(alphaDict.values()) 


def letter2Num(word = raw_input('Enter a word > ')): 
    for char in word: 
     print alphaDict[char] 



letter2Num() 
+0

Вы говорите: «Я пробовал несколько вещей и продолжал получать ошибки», но вы не говорите нам, что вы пробовали, или какие ошибки вы получили. Мы не можем помочь вам с проблемой, которую вы не показали. Пожалуйста, покажите код, который вызывает у вас проблемы, и покажите полную информацию об исключениях, которые он поднимает. В противном случае мы просто угадаем, что вы делаете неправильно. – Blckknght

ответ

1

Просто сделать это:

def letter2Num(word) : 
    add = 0 
    for char in word : 
     add += alphaDict[char] 
    return add 

print 'Sum :', letter2Num(raw_input('Enter a word > ')) 
0

Это должно работать как с Python 2.7 и 3. *:

from sys import exit 


alphaDict = {'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': 26} 

def letter2Num(word): 
    total = 0 
    try: 
     for char in word: 
      total += int(alphaDict[char]) 
    except KeyError as char: 
     print("Invalid char {}".format(char)) 
     exit(1) 
    else: 
     print("Total {}".format(total)) 

letter2Num(word = raw_input('Enter a word > ')) 

Кроме того, я добавил попытку, за исключением блока, чтобы избежать недопустимые символы.

0

Вам нужно пройти через весь символ ввода по символу, а затем получить сумму этого. Я предполагаю, что самый Pythonic путь будет:

def letter2Num(word): 
    return sum([alphaDict[alpha] for alpha in word]) 

print("Value: {}".format(letter2Num(raw_input("Enter a word > ")))) 
0

Попробуйте что-нибудь подобное, используя значение по умолчанию dictionary.get() если ключ, введенный пользователем, является недопустимым возвращаемым значением является -1, а не None:

alpha_dict = {'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': 26} 
print "The dictionary is: %s" % alpha_dict 
print "The total of all the values in the dictionary is: %d" % sum(alpha_dict.values()) 
val_1 = raw_input("Please enter the key for value 1 you want to add? ") 
val_2 = raw_input("Please enter the key for value 2 you want to add? ") 
print "The sum = %d" % (alpha_dict.get(val_1, -1) + alpha_dict.get(val_2, -1)) 

Пример:

The dictionary is: {'e': 5, 'n': 14, 'i': 9, 'z': 26, 'o': 15, 'j': 10, 's': 19, 'f': 6, 'r': 18, 'x': 24, 't': 20, 'l': 12, 'a': 1, 'c': 3, 'u': 21, 'b': 2, 'k': 11, 'm': 13, 'p': 16, 'w': 23, 'd': 4, 'q': 17, 'v': 22, 'h': 8, 'g': 7, 'y': 25} 
The total of all the values in the dictionary is: 351 
Please enter the key for value 1 you want to add? y 
Please enter the key for value 2 you want to add? t 
The sum = 45 

Попробуй here!

0

Ваша функция просто распечатывает каждый номер, и нет типа возврата. Если вы хотите суммировать, верните суммирование.

import string 
// zip function is useful to combine same length sequence 
alphaDict = dict(zip(string.ascii_lowercase, range(1,27))) 

def letter2Num(word): 
''' sum numbers according to alphaDict from word''' 
    sum = 0 
    for char in word: 
     if char not in string.ascii_lowercase: 
      continue 
     sum += alphaDict[char] 
    return sum 

python не поддерживает неявный оператор '+' с 'int' и 'str'. , если вы хотите, вам нужно изменить str на int. просто используйте встроенную функцию int().

temp ='12345' // which is str type 
print type(temp) 
temp = int(temp) 
print type(int(temp)) // now int type 
Смежные вопросы