2017-02-18 4 views
1

Мне поручено приступить к программе, которая будет дешифровать шифр Цезаря, и я смотрел другие вопросы, заданные ранее на этом сайте, и понимаю их в основном. Тем не менее, у меня есть очень простой вопрос о том, как получить подсчет каждой буквы внутри строки.Как получить подсчет каждой буквы в строке?

вот что я придумал до сих пор:

Input=input("input the text you want to decipher:") 

import string 
print(string.ascii_uppercase) 

def get_char(ch,shift): 
    #get a tally of the each letter 
    common_letter=#letter with most "tallies" 
    return common_letter 
    print(common_letter) 

#finding the shift 
def get_shift(s,ignore): 
    for x in Input: 
     shift=get_char-x 
     if shift=='e': 
      return x 
      print(x) 

def output_plaintext(s,shift): 

#convert back to English based off shift 
    pass 

def main(): 
# main body where i call together my other functions 
    pass 

input("is this decrypted?") 
#if no is inputted re run program with second most common letter 

Как получить количество каждой буквы в строку?

Натан

+0

Кажется, вы пропустили несколько отступов здесь, отформатированный как это он не должен работать на всех (особенно последние две функции). – fpietka

+0

Отступ правилен в python, должно быть, был испорчен при копировании и вклеен. – Nathannn

ответ

1

Вы можете получить последний символ в строке, используя следующий код:

string[len(string)-1]

+2

Еще проще: 'string [-1]' – fpietka

3

Это может помочь вам: -

from collections import Counter 
input='Nathannn' 
print Counter(input) 

Выход: -

Counter({'n': 3, 'a': 2, 'h': 1, 't': 1, 'N': 1}) 

Если вы хотите игнорировать случай использования input.lower(), а затем применить Counter(input)

1

Вот другой подход, если вы не можете использовать импортированные модули, например, collections:

>>> string = 'aardvark' 
>>> {letter: string.count(letter) for letter in set(string)} 
{'v': 1, 'r': 2, 'd': 1, 'a': 3, 'k': 1} 
Смежные вопросы