Python3 - liczenie liter tekstu (słownik)

0

Witam. Niedawno rozpocząłem zabawę z językiem Python i chciałbym się dowiedzieć, dlaczego mój program nie wyświetla wartości słownika dla określonej litery, i gdzie ew. znajduje się błąd?

tekst = 'to jest test tego programu'
wartosci = []
klucze = []
i = 0
j = 0
lit = ''
for i in range(26):
	wartosci.append(0)
	klucze.append(chr(97+i))

	d = zip(klucze,wartosci)
	slow = dict(d)

for a in tekst:
	if ord(a) >= 97 and ord(a) <= 122:
		slow[a] = slow[a] + 1
print(slow)

for z in range(0,26):
	slow[chr(97+z)] = i
	if i > j:
		i = j
		lit = z
	else:
		j = j
print(slow[chr(97+lit)])
 
2

collections.Counter

from collections import Counter

#trivial impl
def purified(text):
	return "".join(text.split()).lower()
	
text = "Ala ma kota"
print(Counter(purified(text)))
4
  1. Skasuj to czym prędzej.
  2. Doczytaj co to dict i co to defaultdict(int)
  3. To co zrobiłeś nie ma najmniejszego sensu, bo zauważ co robisz W PĘTLI! W każdym obiegu przypisujesz do nieg wartość TYLKO DLA JEDNEJ LITERKI. Masakra jakaś.
slow = defaultdict(int)
for literka in tekst:
    slow[literka] = slow[literka]+1

I voila, cały twój program. Tylko że po ludzku i działa.

0

Dziękuję. Tylko miałbym jeszcze pytanie jak sprawić, żeby program sam wypisał najczęściej powtarzającą się literę?

0

Sam to nic nie zrobi. Musisz napisać kod który wybierze największą wartość i wypisze literę.

1
from collections import Counter
 
#trivial impl
def purified(text):
    return "".join(text.split()).lower()
 
text = "Ala ma kota"
dictionary = Counter(purified(text))
theMostCommonLetter = max(dictionary, key=dictionary.get)
print(theMostCommonLetter, ':', dictionary[theMostCommonLetter])

a : 4

Pamiętaj, że jeśli dobrze nazwiesz swój problem to na 100% znajdziesz go na stackoverflow :P

2

Dzięki, działa, ale połowy nie rozumiem xD

https://docs.python.org/3.3/library/functions.html#max
Funkcja max zwraca 'największy' element z danego zbioru (w tym przypadku jest to zmienna dictionary). key w tej funkcji oznacza co ma sprawdzać (porównywać) funkcja, w twoim przypadku jest to dictionary.get. get pobiera wartość w słowniku, więc w funkcja max wybierze największą wartość właśnie po wartościach w słowniku. Jeśli nie wiesz zbyt wiele o słownikach to doczytaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1