Софтуерно Инженерство
Loading...
+ Нов въпрос
daninemski avatar daninemski 2 Точки

14.Numbers to words /Functions

number_of_nums = int(input())

import math
def lettersize(number):
    if int(number) < 0:
        minus_number = number
        number = abs(int(number))
        number = str(number)
    elif int(number) >= 0:
        minus_number = number
    num_in_letters = ""
    hundreds = ""
    desetici = ""
    edinici = ""
    operator = "minus"
    if int(number) == 1 or 20 < int(number) < 100 and number[1] == "1" or (100 < int(number) <= 999 and (number[2] == "1" and number[1] != 1)):
        num_in_letters = "one"
        desetici = "one"
    elif int(number) == 2 or 20 < int(number) < 100 and number[1] == "2" or 100 < int(number) <= 999 and number[2] == "2" and number[1] != 1:
        num_in_letters = "two"
        desetici = "two"
    elif int(number) == 3 or 20 < int(number) < 100 and number[1] == "3" or 100 < int(number) <= 999 and number[2] == "3" and number[1] != 1:
        num_in_letters = "three"
        desetici = "three"
    elif int(number) == 4 or 20 < int(number) < 100 and number[1] == "4" or 100 < int(number) <= 999 and number[2] == "4" and number[1] != 1:
        num_in_letters = "four"
        desetici = "four"
    elif int(number) == 5 or 20 < int(number) < 100 and number[1] == "5" or 100 < int(number) <= 999 and number[2] == "5" and number[1] != 1:
        num_in_letters = "five"
        desetici = "five"
    elif int(number) == 6 or 20 < int(number) < 100 and number[1] == "6" or 100 < int(number) <= 999 and number[2] == "6" and number[1] != 1:
        num_in_letters = "six"
        desetici = "six"
    elif int(number) == 7 or 20 < int(number) < 100 and number[1] == "7" or 100 < int(number) <= 999 and number[2] == "7" and number[1] != 1:
        num_in_letters = "seven"
        desetici = "seven"
    elif int(number) == 8 or 20 < int(number) < 100 and number[1] == "8" or 100 < int(number) <= 999 and number[2] == "8" and number[1] != 1:
        num_in_letters = "eight"
        desetici = "eight"
    elif int(number) == 9 or 20 < int(number) < 100 and number[1] == "9" or 100 < int(number) <= 999 and number[2] == "9" and number[1] != 1:
        num_in_letters = "nine"
        desetici = "nine"
    if int(number) == 10 or 100 < int(number) < 999 and number[1] + number[2] == "10":
        num_in_letters = "ten"
        desetici = "ten"
    elif int(number) == 11 or 100 < int(number) < 999 and number[1] + number[2] == "11":
        num_in_letters = "eleven"
        desetici = "eleven"
    elif int(number) == 12 or 100 < int(number) < 999 and number[1] + number[2] == "12":
        num_in_letters = "twelve"
        desetici = "twelve"
    elif int(number) == 13 or 100 < int(number) < 999 and number[1] + number[2] == "13":
        num_in_letters = "thirteen"
        desetici = "thirteen"
    elif int(number) == 15 or 100 < int(number) < 999 and number[1] + number[2] == "15":
        num_in_letters = "fifteen"
        desetici = "fifteen"
    elif int(number) == 16 or 100 < int(number) < 999 and number[1] + number[2] == "16":
        num_in_letters = "sixteen"
        desetici = "sixteen"
    elif int(number) == 17 or 100 < int(number) < 999 and number[1] + number[2] == "17":
        num_in_letters = "seventeen"
        desetici = "seventeen"
    elif int(number) == 18 or 100 < int(number) < 999 and number[1] + number[2] == "18":
        num_in_letters = "eighteen"
        desetici = "eighteen"
    elif int(number) == 19 or 100 < int(number) < 999 and number[1] + number[2] == "19":
        num_in_letters = "nineteen"
        desetici = "nineteen"
    elif int(number) == 14 or 100 < int(number) < 999 and number[1] + number[2] == "14":
        num_in_letters = "fourteen"
        desetici = "fourteen"
    elif int(number) == 0:
        num_in_letters = "zero"
    if  19 < int(number) <= 999:                     # + desetici 20 30 40 50
        if number[1] == "2" and 100 < int(number) < 999 or 0 < int(number) < 100 and number[0] == "2":
            desetici = "twenty"
        elif number[1] == "3" and 100 < int(number) < 999 or 0 < int(number) < 100 and number[0] == "3":
            desetici = "thirty"
        elif number[1] == "4" and 100 < int(number) < 999 or 0 < int(number) < 100 and number[0] == "4":
            desetici = "fourty"
        elif number[1] == "5" and 100 < int(number) < 999 or 0 < int(number) < 100 and number[0] == "5":
            desetici = "fifty"
        elif number[1] == "6" and 100 < int(number) < 999 or 0 < int(number) < 100 and number[0] == "6":
            desetici = "sixty"
        elif number[1] == "7" and 100 < int(number) < 999 or 0 < int(number) < 100 and number[0] == "7":
            desetici = "seventy"
        elif number[1] == "8" and 100 < int(number) < 999 or 0 < int(number) < 100 and number[0] == "8":
            desetici = "eighty"
        elif number[1] == "9" and 100 < int(number) <= 999 or 0 < int(number) < 100 and number[0] == "9":
            desetici = "ninety"
        if number[0] == "1" and 99 < int(number) < 999:
            hundreds = "one-hundred"
        elif number[0] == "2" and 99 < int(number) < 999:
            hundreds = "two-hundred"
        elif number[0] == "3" and 99 < int(number) < 999:
            hundreds = "three-hundred"
        elif number[0] == "4" and 99 < int(number) < 999:
            hundreds = "four-hundred"
        elif number[0] == "5" and 99 < int(number) < 999:
            hundreds = "five-hundred"
        elif number[0] == "6" and 99 < int(number) < 999:
            hundreds = "six-hundred"
        elif number[0] == "7" and 99 < int(number) < 999:
            hundreds = "seven-hundred"
        elif number[0] == "8" and 99 < int(number) < 999:
            hundreds = "eight-hundred"
        elif number[0] == "9" and 99 < int(number) <= 999:
            hundreds = "nine-hundred"
    if 1000 > int(minus_number) >= 0:
        if 0 <= int(minus_number) <= 19:
            print(num_in_letters)
        if 20 <= int(minus_number) <= 99:
            print(f"{desetici} {num_in_letters}")
        if 100 <= int(minus_number) <= 999 and number[1] != "1" and number[1] != "0":
            print(f"{hundreds} and {desetici } {num_in_letters}")
        if 100 <= int(minus_number) <= 999 and number[1] == "1":
            print(f"{hundreds} and {desetici}")
        if 100 <= int(minus_number) <= 999 and number[1] == "0":
            if number[2] != "0":
                print(f"{hundreds} and {desetici}")
            if number[2] == "0":
                print(f"{hundreds}")
    elif -1000 < int(minus_number) < 0:
        if 0 <= abs(int(minus_number)) <= 19:
            print(f"minus {num_in_letters}")
        if 20 <= abs(int(minus_number)) <= 99:
            print(f"minus {desetici} {num_in_letters}")
        if 100 <= abs(int(minus_number)) <= 999 and number[1] != "1" and number[1] != "0":
            print(f"minus {hundreds} and {desetici} {num_in_letters}")
        if 100 <= abs(int(minus_number)) <= 999 and number[1] == "1":
            print(f"minus {hundreds} and {desetici}")
        if 100 <= abs(int(minus_number)) <= 999 and number[1] == "0":
            if number[2] != "0":
                print(f"{hundreds} and {desetici}")
            if number[2] == "0":
                print(f"minus {hundreds}")
    elif int(minus_number) < -999:
        print("too small")
    elif int(minus_number) > 999:
        print("too large")

for i in range(number_of_nums):
    lettersize(input())

 

Привет, с този код judge ми дава 70/100

единстената грешка, която ми "подсказва" е при ZeroTest 2

input  2, 15, 350   

на мен си ми излиза отговора, само че според мен в джъдж теста е грешен

 

Дали някой може да погледне и да ми даде съвет какво ми се губи, Благодаря

УСЛОВИЕ

Задача: числа към думи Да се напише функция letterize(number), която прочита цяло число и го разпечатва с думи на английски език според условията по-долу: • Да се отпечатат с думи стотиците, десетиците и единиците (и евентуални минус) според правилата на английския език. • Ако числото е по-голямо от 999, трябва да се принтира "too large". • Ако числото е по-малко от -999, трябва да се принтира "too small". • Ако числото е отрицателно, трябва да се принтира "minus" преди него. • Ако числото не е съставено от три цифри, не трябва да се принтира. 

 

Тагове:
ss3434 avatar ss3434 3 Точки

Здравейте,тазаи за дача от основи на програмирането ли е, защото досега не съм срещал такава,и  ако да може ли линк към улсовията на тази други такива допалнителни задачи както и линк към  judge.Предварително благодаря

0
daninemski avatar daninemski 2 Точки

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

 

Поздрави

0