Професионална програма
Loading...
MartinBG avatar MartinBG 3979 Точки

Грешката е в проверката на ред №8:

if dec < 97:

Трябва да е:

if 65 <= dec <= 90:

 

На позиция №97 в ASCII таблицата е буквата "а", но преди нея не е буквата "Z". Отделно, проверката ще хване и всички символи преди "А".

За да избегнете подобни грешки и да направите кода си по-четим, избягвайте да използвате подобни "магически" числа. Горната проверка може да се напише и така:

if 'A' <= value <= 'Z':

Това е доста по-четим вариант и не задължава четящият кода да търси в ASCII таблицата за да разбере какво трябва да прави проверката.

 

Проверката дали даден символ е главна буква е често срещан проблем в практиката и всеки програмен език има вградена функционалност за това. На Python горната проверка може да се напише и по този начин, с който минимизираме шанса за грешки и ясно комуникираме каква точно правим:

if value.isupper():

 

Цялото решение може много да се съкрати и да се подобри четимостта му, ако се използват вградените функционалности  на езика, например:

word = input()

indices = []
for index, value in enumerate(word):
    if value.isupper():
        indices.append(index)

print(indices)

 

 

====================

Ето и още по-съкратен вариант на решението, като в практиката е по-вероятно да видите решение, подобно на това:

word = input()

indices = [index for index, character in enumerate(word) if character.isupper()]

print(indices)

 

1
23/01/2021 17:07:22