Найти - Пользователи
Полная версия: Проект Эйлера, задача 17
Начало » Python для новичков » Проект Эйлера, задача 17
1
Funee_monkee
Здравствуйте, хотелось бы спросить ответа у старших, вобщем какие в коде есть стилистические ошибки, имеет ли место быть такой стиль написания кода, и что бы вы мне порекомендовали. P.S Я знаю что я не учел что в англ. языке после разряда сотен нужно говорить ‘and’ просто не берем это во внимание
 #Если записать числа от 1 до 5 английскими словами (one, two, three, four, five), то используется всего 3 + #3 + 5 + 4 + 4 = 19 букв.
#Сколько букв понадобится для записи всех чисел от 1 до 1000 (one thousand) включительно?
#Примечание: Не считайте пробелы и дефисы. 
def count_letters_one(number): #функция для счета букв однозначных чисел
    sum1 = 0
    if len(str(number)) == 1:
        if number == 1:
            sum1 += 3
        elif number == 2:
            sum1 += 3
        elif number == 3:
            sum1 += 5
        elif number == 4:
            sum1 += 4
        elif number == 5:
            sum1 += 4
        elif number == 6:
            sum1 += 3
        elif number == 7:
            sum1 += 5
        elif number == 8:
                sum1 += 5
        elif number == 9:
            sum1 += 4
        elif number == 0:
            sum1 += 0
    return sum1
def count_list(list): #функция принимает список, возвращает сумму элементов
    accum = 0
    for element in list:
        acc += element
    return accum
def count_letters_two(number): # функция для посчета букв в двузначных числах
    sum2 = 0
    if len(str(number)) == 2:
        if str(number)[0] == '1':
            if number == 11:
                sum2 += 6
            elif number == 12:
                sum2 += 6
            elif number == 13:
                sum2 += 8
            elif number == 14:
                sum2 += 8
            elif number == 15:
                sum2 += 7
            elif number == 16:
                sum2 += 7
            elif number == 17:
                sum2 += 9
            elif number == 18:
                sum2 += 8
            elif number == 19:
                sum2 += 8
            elif number == 10:
                sum2 += 3
        elif str(number)[0] == '2':
            sum2 = sum2 + count_letters_one(int(str(number)[1])) + 6
        elif str(number)[0] == '3':
            sum2 = sum2 + count_letters_one(int(str(number)[1])) + 6
        elif str(number)[0] == '4':
            sum2 = sum2 + count_letters_one(int(str(number)[1])) + 5
        elif str(number)[0] == '5':
            sum2 = sum2 + count_letters_one(int(str(number)[1])) + 5
        elif str(number)[0] == '6':
            sum2 = sum2 + count_letters_one(int(str(number)[1])) + 5
        elif str(number)[0] == '7':
            sum2 = sum2 + count_letters_one(int(str(number)[1])) + 7
        elif str(number)[0] == '8':
            sum2 = sum2 + count_letters_one(int(str(number)[1])) + 6
        elif str(number)[0] == '9':
            sum2 = sum2 + count_letters_one(int(str(number)[1])) + 6
    return sum2
def count_letters_three(number): #функция для подсчета букв в трехзначных числах
    sum3 = 0
    if len(str(number)) == 3:
        if str(number)[1] == 0:
            sum3 = sum3 + count_letters_one(int(str(number)[0])) + 7 +count_letters_one(int(str(number)[2]))
        else:
            sum3 = sum3 + count_letters_one(int(str(number)[0])) + int(count_letters_two(int(str(number)[1:]))) + 7
    return sum3
print(11 + count_list(list(map(count_letters_three,range(1,1000)))))#не делал функцию для подсчета #четырехзначныхчисел, просто прибавил сумму букв 'one thousand'
candymika
Interesting and amazing how your post is! It Is Useful and helpful for me That I like it very much, and I am looking forward to hearing from your next. Little Alchemy
AD0DE412
candymika
Interesting and amazing
и че тама интересного и прекрасного
Funee_monkee
хотелось бы спросить ответа у старших
не про меня кнешно но вот мне кажтся
 # что вашу конструкцию такого вида
elif number == 13:
    sum2 += 8
elif number == 14:
    sum2 += 8
    
# можно заменить на такого вида конструкцию   
elif num in [13, 14]:
    sum2 += 8
оно вроде читается легче (ну мне по крайней)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB