Loading...

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

sredo avatar sredo 2 Точки

"Programming basics with Python" - Април 2018 г. Проблем със задача: "Number 0...100 to Text".

Здравейте!

Забих на тази задача. Начинът, по който мога да реша задачата е като принтирам всяко едно число от 0 до 100...

Ще ми се да използвам по-автоматизирано решение за думите, които се повтарят многократно, но не се сещам точно как.

Ще се радвам ако помогнете с идеи как да се случат нещата.

Благодаря предварително. :)

0
Programming Basics 05/05/2018 17:08:46
TodorovP avatar TodorovP 177 Точки

Наименованията на числата от 1 до 9 се съдържат и в наименованията (единиците) на числата  [21...29], [31...39] и т.н. до 99.

0
Delerium avatar Delerium 29 Точки

Решавал съм я на C# дано успееш да се ориентираш в кода и да разбереш логиката https://pastebin.com/49agNgDu

Като цяло задачата не е за ниво basic, защото курса не обхваща масиви, а без тях решението ще е много по дълго.

0
svetlioi avatar svetlioi 41 Точки

Ето решение на C# за 100т.: ЦЪК

case 1 е същото като if [име на променливата]==1:

Ако не разбираш, помоли лектора да ви обясни swith.

Поздрави!

 

0
BoYaN avatar BoYaN 336 Точки

На python няма switch case :D
А линка, който си пуснал дава, че е private paste

0
07/05/2018 12:57:49
BoYaN avatar BoYaN 336 Точки

Здрасти,
трябва да първо да си вземеш единиците и десетиците, ако десетиците са 1 превиш и отделна проверка за тях.
На кратко това е логиката на цялата задата.
Ако имаш затруднения може да погледнеш решението ми

0
CremaDory avatar CremaDory 39 Точки

За да не пишеш хиляда ифове и елифове ,което си е малко безумие , разгледай речниците в Пайтън.С диктове задачата се решава ,доста по бързо .Ето ти още едно питонско решение .Логиката е следната - създаващ по 1 речник за цифрите ,десетиците и още един за числата между 11 и 19 включително .След това правиш проверки ,ако числото е под 10 - вадиш от речника с цифирте , ако е между 11 и 19 , вадиш от речника с числа между 11 и 19 .Ако е по голямо от 19 ,правиш проверка дали ако се раздели на 10 остатъка е нула .Ако е нула - вадиш числото от речника с десетиците .Ако има остатък вадиш едновременно първо от десетиците ,после от цифрите и принтираш резултата.Разбира се добавяш и условието Invalid number ако числото е по голямо от 100.В случая съм сложила малко неправилно 100 при десетиците ,и няма нужда от такава проверка .Ето и код:

figures ={0:"zero" ,1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine",10:'ten'}
teens={11:"eleven",12:"twelve",13:"thirteen",14:"fourteen",15:"fifteen",16:"sixteen",17:"seventeen",18:"eighteen",19:"nineteen"}
tenths={20:"twenty",30:"thirty",40:"forty",50:"fifty",60:"sixty",70:"seventy",80:"eighty",90:"ninety",100:"one hundred"}
a = int(input())
if a>=0 and a <=10:
    print(figures.get(a))
elif a>10 and a <=19:
    print(teens.get(a))
elif a>19 and a<=100:
    if a%10==0:
        print(tenths.get(a))
    else:
        print(tenths.get((a//10)*10) ,figures.get(a%10))
else:
    print("invalid number")

 

0
sredo avatar sredo 2 Точки

Благодаря ви за помоща. 

CremaDory решението ти е много кратко и готино. Ние обаче сме на трета лекция и все още не сме ги учили тези неща.

Аз си написах задачата ето така:

 

num = int(input())

if num < 0 or num > 100:
    print('invalid number')
elif num < 20:
    if num == 0:
        print('zero')
    elif num == 1:
        print('one')
    elif num == 2:
        print('two')
    elif num == 3:
        print('three')
    elif num == 4:
        print('four')
    elif num == 5:
        print('five')
    elif num == 6:
        print('six')
    elif num == 7:
        print('seven')
    elif num == 8:
        print('eight')
    elif num == 9:
        print('nine')
    elif num == 10:
        print('ten')
    elif num == 11:
        print('eleven')
    elif num == 12:
        print('twelve')
    elif num == 13:
        print('thirteen')
    elif num == 14:
        print('fourteen')
    elif num == 15:
        print('fifteen')
    elif num == 16:
        print('sixteen')
    elif num == 17:
        print('seventeen')
    elif num == 18:
        print('eighteen')
    elif num == 19:
        print('nineteen')
elif num == 100:
    print('one hundred')
elif num < 100:
    tens = num // 10
    units = num % 10
    if tens == 2:
        tens = 'twenty'
    elif tens == 3:
        tens = 'thirty'
    elif tens == 4:
        tens = 'forty'
    elif tens == 5:
        tens = 'fifty'
    elif tens == 6:
        tens = 'sixty'
    elif tens == 7:
        tens = 'seventy'
    elif tens == 8:
        tens = 'eighty'
    elif tens == 9:
        tens = 'ninety'

    if  units == 0:
        print('{}'.format(tens))
    else:
        if units == 1:
            units = 'one'
        elif units == 2:
            units = 'two'
        elif units == 3:
            units = 'three'
        elif units == 4:
            units = 'four'
        elif units == 5:
            units = 'five'
        elif units == 6:
            units = 'six'
        elif units == 7:
            units = 'seven'
        elif units == 8:
            units = 'eight'
        elif units == 9:
            units = 'nine'

        print('{} {}'.format(tens, units))



0
09/05/2018 13:54:54
KrIsKa7a avatar KrIsKa7a 29 Точки

Колегите са ти предложили решение с if-elif-else конструкцията, но толкова много if-ове е малко безсмислено да се пишат. Пускам ти едно алтернативно решение с масиви(не се изучават в този курс) да го разгледаш :)

Код: Numbers0..100

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