Форум сайта python.su
0
Недавно начал изучать Python и решал задачки, но вот попалась та, которую решить я не могу. В общем, надо найти ввести год, а программа должна показать, какой это век. Я смог решить её только для года, где число цифр от 1 до 5. Не подскажете, как можно её решить для любого года? 
Офлайн
568
Vinciпоказывайте решение
Я смог решить её только для года, где число цифр от 1 до 5.
Офлайн
0
a=int(input('Введите год: ')) def vek(a): if len(str(a)) == 2: return('Нулевой век') elif len(str(a)) == 3: d=int(str(a)[0]) + 1 return(str(d) + ' век') elif len(str(a)) == 4: d=str(int(str(a)[0] + str(a)[1]) + 1) return(str(d) + ' век') elif len(str(a)) == 5: d=str(int(str(a)[0] + str(a)[1] + str(a)[2]) + 1) return(str(d) + ' век') else: return('Такому жизнь меня не готовила') print(vek(a))
Отредактировано Vinci (Май 28, 2015 19:20:27)
Офлайн
35
>>> 2016 / 100
20
>>> 123456789 / 100
1234567
Офлайн
0
Ахххх, понятно, благодарю.
Офлайн
103
botinag
век в григорианском календаре
Офлайн
0
Главное, что принцип понятен. Я всё сидел думал, как откинуть те две цифры, забыв напрочь о делении и что эти цифры после запятой можно легко убрать, сделав число целым 
Беда лишь в том, что, да, в русском признано делать нумерацию на римском.
Собственно, код, учитывая, что век начинается с xxx1:
a=int(input('Введите год: ')) def vek(a): if a % 100 == 0: d = int(a/100) else: d = int(a/100) + 1 return(str(d) + ' век') print(vek(a))
Отредактировано Vinci (Май 28, 2015 20:41:47)
Офлайн
88
q, r = divmod(a, b)
Офлайн
857
>>> def vek(year): ... return year // 100 + (year % 100 != 0) ... >>> vek(1) 1 >>> vek(101) 2 >>> vek(100) 1 >>>
Офлайн
1
Немного оффтопик, но чтобы не изобретать велосипеды, советую ознакомится: Часто задаваемые вопросы о календарях @ Клаус Тондеринг
Офлайн