В тази програма ще се научите да броите броя на всяка гласна в низ, като използвате разбиране на речника и списъка.
За да разберете този пример, трябва да имате познанията по следните теми за програмиране на Python:
- Python за Loop
- Струнове на Python
- Струнни методи
Изходен код: Използване на речник
# Program to count the number of each vowels # string of vowels vowels = 'aeiou' ip_str = 'Hello, have you tried our tutorial section yet?' # make it suitable for caseless comparisions ip_str = ip_str.casefold() # make a dictionary with each vowel a key and value 0 count = ().fromkeys(vowels,0) # count the vowels for char in ip_str: if char in count: count(char) += 1 print(count)
Изход
(„o“: 5, „i“: 3, „a“: 2, „e“: 5, „u“: 3)
Тук взехме низ, съхраняван в ip_str. Използвайки метода casefold()
, ние го правим подходящ за сравнения без случаи. По принцип този метод връща малка буква на низа.
Използваме метода на речника, за fromkeys()
да конструираме нов речник с всяка гласна като негов ключ и всички стойности, равни на 0. Това е инициализацията на броя.
След това итерираме над входния низ, използвайки цикъл for.
Във всяка итерация проверяваме дали символът е в речниковите ключове ( True
ако е гласна) и увеличаваме стойността с 1, ако е вярно.
Изходен код: Използване на списък и разбиране на речника
# Using dictionary and list comprehension ip_str = 'Hello, have you tried our tutorial section yet?' # make it suitable for caseless comparisions ip_str = ip_str.casefold() # count the vowels count = (x:sum((1 for char in ip_str if char == x)) for x in 'aeiou') print(count)
На изхода на тази програма е същата, както по-горе.
Тук сме вложили разбиране на списък в разбиране на речника, за да преброим гласните в един ред.
Разбирането на речника се изпълнява за всички гласни символи и разбирането на списъка в рамките на разбирането на речника проверява дали някакви символи в низа съвпадат с тази гласна.
В края се генерира списък с 1 s за броя на всеки гласен знак. В sum()
метода се използва за изчисляване на сумата от елементите за всеки списък.
Тази програма обаче е по-бавна, тъй като итерираме целия входен низ за всяка гласна.