Loading...

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

ItsMomchilS avatar ItsMomchilS 28 Точки

the_most_powerful_word exercise question

Здравейте, имам един код от задача 6, ето тук: https://judge.softuni.bg/Contests/Practice/Index/1745#11

Работата е там, че имам 60/100 което пак е добре в сравнение с предишни опити. Но ми се искаше да ви попитам как да я напиша за да изглежда по-четливо и професионално?

Ето и програмата ми:

import math

word = input()
winner_word = ""
ascii_letters = 0
word_len = 0
word_sum = 0
winner_points = 0
ascii_number = 0
is_vowel_letter = False
sum_word_sum = 0

while word != "End of words":
    points = 0
    word_sum = 0
    if word == "End of words":
        break
    for letter in word:
        special_letters = "aeiouyAEIOUY"
        for special_letters in special_letters:
            ascii_letters = ord(special_letters)
            ascii_char = (ord(letter))
            ascii_number = ascii_char
            word_len = len(word)
            if word[0] == special_letters:
                is_vowel_letter = True
            elif not word[0] == special_letters:
                if not is_vowel_letter:
                    is_vowel_letter = False
        word_sum += ascii_char
    if is_vowel_letter:
        points = word_sum * word_len

    elif not is_vowel_letter:
        points = math.floor(word_sum / word_len)

    if points >= winner_points:
        winner_points = points
        winner_word = word
    word = input()

print(f"The most powerful word is {winner_word} - {winner_points}")

 

Знам предварително, че не изглежда добре от към подредба. Просто този тип ASCII задачи са ми по-труднички да ги пиша четливо. Благодаря за отделеното внимание!

Тагове:
1
Python
KALOYAN_123 avatar KALOYAN_123 34 Точки
Best Answer
Тук съм ти обяснил с коментари какво съм напрвил.
В judge минава с 100/100.
Само един съвет, старай се да пишеш по-четливи и с по-проста логика кодове, за по-добро разбиране на този, който ги чете, а и именно на теб.

Надявам се, че съм ти бил полезен!smileyyes

#import math
import sys
word = input()
winner_word = ""
winner_points = -sys.maxsize

'''
ascii_letters = 0
ascii_number = 0
sum_word_sum = 0
ascii_char = 0
'''

while word != "End of words":
    word_len = len(word)
    is_vowel_letter = False
    word_sum = 0
    #Променливата points ти е ненужна, зашото можеш да използваш променливата word_sum 
    #points = 0

    if word == "End of words":
        break

    for letter in word:
        #Тука провераяваме дали първата буква е съгласна 
        first_letter = word[0].lower()
        if first_letter == 'a' or first_letter == 'e' or first_letter == 'i' or \
                first_letter == 'o' or first_letter == 'u' or first_letter == 'y':
            is_vowel_letter = True
        #Тука ги преобразуваме от ascii таблицата
        first_letter_int = ord(letter)
        word_sum += first_letter_int
    #Тук проверяваме дали първата буква е била съгласна
    if is_vowel_letter:
        word_sum *= word_len
    else:
        #Тук има // , зашото искаме да го закръглим до цяло число
        word_sum //= word_len

    if word_sum > winner_points:
        #Тука искаме думата да има по-голяма стойност,
        #а не да бъде равна.
        winner_word = word
        winner_points = word_sum

    word = input()

print(f"The most powerful word is {winner_word} - {winner_points}")

'''
Този for loop отдолу може и да стане, но е много сложен.
И ненужен като можеш да използваш по-проста логика.
        special_letters = "aeiouyAEIOUY"
        for special_letters in special_letters:
            ascii_letters = ord(special_letters)
            ascii_char = (ord(letter))
            ascii_number = ascii_char
            word_len = len(word)
            if word[0] == special_letters:
                is_vowel_letter = True
            elif not word[0] == special_letters:
                if not is_vowel_letter:
                    is_vowel_letter = False
        word_sum += ascii_char
        
    if is_vowel_letter:
        points = word_sum * word_len

    elif not is_vowel_letter:
        points = math.floor(word_sum / word_len)

    if points >= winner_points:
        winner_points = points
        winner_word = word
    word = input()
'''

 

0
ItsMomchilS avatar ItsMomchilS 28 Точки

Благодаря ти за отговора! Да прав си че трябва да ги правя по–лесни за разбиране. В процес на подредба съм laugh старая се да мога да ги правя, както ти си направил твоята програма. Наистина добре ти се е получила задачата. Ще се постарая да не изглеждат вече така моите :D

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.