Это:
list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]
k=0
while k < 26:
list[k]=0
k +=1
print("list[1]=", list[1])
будет производить только список с 26 элементов, все со значением 0
Таким образом, вы можете заменить thiw с:
list = [0] * 26
Однако это на самом деле не нужно, чтобы построить этот список (как вы можете видеть позже). Кроме того, вы не должны использовать слово list
как имя переменной.
Вы также сделать следующее:
while k < 26:
k+= 1
oneChar = getLetIndex(mline, k)
if oneChar == 'z':
break
num1 = ord(oneChar)
print("char=", oneChar, "char-num=", num1)
if num1 != 32: # not space
list[num1-97+1] += 1
Это очевидно, что вы хотите перебрать в 26 раз, и останавливаетесь, когда встретив символ конца строки, которая устанавливается на z
вашего кода. Тебе тоже этого не нужно. И другое ограничение этого - что произойдет, если введенное предложение составляет более 26 символов?
От этого, если num1 != 32:
Я считаю, что вы не хотите считать пробелы. и позволяет использовать Counter
от collections
Этот код:
mline=input("enter a sentence=>")
print("you have entered=", mline)
k=0
while k < 26:
k+= 1
oneChar = getLetIndex(mline, k)
if oneChar == 'z':
break
num1 = ord(oneChar)
print("char=", oneChar, "char-num=", num1)
if num1 != 32: # not space
list[num1-97+1] += 1
теперь станут:
from collections import Counter
mline=input("enter a sentence=>")
mline = mline.replace(" ","") # this will get rid of spaces
c = Counter(mline) # create a counter object
for char, count in c.items(): # enumerate through the items
print("{} = {}".format(char, count)) # print the result
Теперь этот результат не отсортирован, но вы получите идею. Теперь вы можете продолжить эксперимент с кодом, добавить дополнительные операторы печати или что-то еще, что вам нравится делать.
HTH.
В последнем цикле while измените 'print (list [k])' to 'print (" {} = {} ". Format (chr (97 + k), list [k]))' – inspectorG4dget