Определить процент строчных и прописных букв в строке

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

Как известно в кодировках символы упорядочены, при этом код символа 'a' меньше символа 'b'. Поэтому если очередной символ принадлежит диапазону от 'a' до 'z', значит это строчная буква; если диапазону от 'A' до 'Z' - то прописная.

Следует использовать ветку elif, а не else, т. к. помимо букв могут быть иные символы (пробелы, цифры, знаки препинания и др.).

В языке программирования Python можно выполнять "групповое" присваивание. Так выражение let_s = let_b = 0 является допустимым и означает, что сначала переменной let_b был присвоен 0, затем значение let_b было присвоено let_s.

string = input("Введите текст: ")
 
length = len(string)
let_s = let_b = 0
for i in string:
	if 'a'<=i<='z':
		let_s += 1
	elif 'A'<=i<='Z':
		let_b += 1
 
print("%% строчных букв: %.2f" % (let_s/length * 100))
print("%% прописных букв: %.2f" % (let_b/length * 100))

Удвоенный знак процента в начале строки вывода стоит для того, чтобы вывести один знак процента. Иначе одиночный % интерпретируется как начало формата вывода.

Пример выполнения кода:

Введите текст: Hello, M!
% строчных букв: 44.44
% прописных букв: 22.22

В языке Python есть строковые методы islower() и isupper(). Первый проверяет, являются ли все символы в строке маленькими, второй - большими. Эти методы могут работать и со строками длинной в один символ. Поэтому решение задачи может выглядеть так:

string = input()
 
length = len(string)
 
lower = upper = 0
 
for i in string:
    if i.islower():
        lower += 1
    elif i.isupper():
        upper += 1
 
per_lower = lower / length * 100
per_upper = upper / length * 100
print("Lower: %.2f%%" % per_lower)
print("Upper: %.2f%%" % per_upper)

Это более правильное решение, так как здесь проверяются и русские буквы.

Создано

Обновлено

Комментарии

s=input('Введите текст ')
up=0
low=0
al=0
for i in range(len(s)):
	if s[i].isalpha():
		if s[i].isupper():
			up+=1
		else:
			low+=1
		al+=1
print('Заглавных символов %.f%% \nПрописных %.f%%' %((up/al)*100,(low/al)*100))