Форум сайта python.su
0
Как вы интересно подправили цикл if
А скажите вот вы ввели переменную n и написали n = int(s) а чем плохо так как я писал s = int(s) я почемуто считал что плохо вводить много переменных без которых можно обойтись
Окончания можно замутить много циклов только надо (даже интересно стало такое сделать)
Вот подправил вторую программку
while True: x = input("Введите число или нажмите Enter для завершения: ") if not x: break try: x = int(x) except ValueError as err: print("Нужно вводить целое число") continue l = str(x) s = 0 i = 0 for y in l: z = int(y) s = s + z*10**i i = i + 1 print(s)
Отредактировано 1m0n2 (Май 14, 2016 04:58:28)
Офлайн
8
while True: number = input('Введите число:> ') if number.isdigit(): print(number[::-1])
s = s + z*10**i i = i + 1
s += z*10**i i += 1
Отредактировано Vigi (Май 14, 2016 05:29:16)
Офлайн
0
Vigi
крутооооо мне бы так уметь
4 строчки вместо моих 17
Отредактировано 1m0n2 (Май 14, 2016 05:37:12)
Офлайн
8
Учите мат часть…
Офлайн
0
Vigi
Учите мат часть…
Офлайн
857
1m0n2Плохо как раз переопределять имена, которые сначала использовались для одного, а потом используются для другого.
а чем плохо так как я писал s = int(s) я почемуто считал что плохо вводить много переменных без которых можно обойтись
1m0n2Это важные детали. Ты должен добиваться от программы того, что нужно тебе, а не полагаться на то, что она сама собой получится. Нужны правильные окончания - сделай правильные окончания.
Окончания можно замутить много циклов только надо (даже интересно стало такое сделать)
Офлайн
0
Дополнил первую программку теперь правильно выводит окончания а если ввести 0 то программка напишет в ответ : “Пусто” и предложит ввести число снова.Также дал почти всем ссылкам осмысленные имена. Долго я думал над этими окончаниями УФФФФФ
аж моск вскипел 
while True: length = input("Введите расстояние в сантиметрах или нажмите Enter для завершения ") if not length: break try: n = int(length) except ValueError: print("Нужно вводить целое число") continue if n == 0: print("Пусто") continue else: km = n // 100000 x = n % 100000 m = x // 100 sm = x % 100 words = [" километр", " метр", " сантиметр", "а ", "ов "] outline = "В расстоянии " intermediateline = [km, m, sm] size = -1 for number in intermediateline: size += 1 if number == 0: continue else: outline += str(intermediateline[size]) outline += words[size] n1 = number % 100 if 11 <= n1 <= 20: outline += words[4] else: n2 = n1 % 10 if 2 <= n2 <= 4: outline += words[3] else: if n2 == 1: outline += " " else: outline += words[4] print(outline)
возможно у вас получицца сделать проще.
Отредактировано 1m0n2 (Май 14, 2016 10:58:35)
Офлайн
5
Имхо.
Слишком толсто.
Офлайн
0
Lestoroer
Имхо. Слишком толсто.
старалса делать кампактнее.Мож када получче изучу питона будет получатся лучше.Вообще все это дело с окончаниями можно было бы упрятать в функцию и применять не тока в этой проге но и в других но я етого пока ни умею
Офлайн
857
>>> def select_ending(n, w0, w1, w2): ... """Выбрать одно из слов по двум младшим цифрам числа.""" ... out = None ... d1 = n % 10 ... d2 = n % 100 // 10 ... if d2 == 1: ... out = w0 ... else: ... if d1 == 1: ... out = w1 ... elif d1 in (2, 3, 4): ... out = w2 ... else: ... out = w0 ... return out ... >>> [(i, select_ending(i, 'ёжиков', 'ёжик', 'ёжика')) for i in range(35)] [(0, 'ёжиков'), (1, 'ёжик'), (2, 'ёжика'), (3, 'ёжика'), (4, 'ёжика'), (5, 'ёжиков'), (6, 'ёжиков'), (7, 'ёжиков'), (8, 'ёжиков'), (9, 'ёжиков'), (10, 'ёжиков'), (11, 'ёжиков'), (12, 'ёжиков'), (13, 'ёжиков'), (14, 'ёжиков'), (15, 'ёжиков'), (16, 'ёжиков'), (17, 'ёжиков'), (18, 'ёжиков'), (19, 'ёжиков'), (20, 'ёжиков'), (21, 'ёжик'), (22, 'ёжика'), (23, 'ёжика'), (24, 'ёжика'), (25, 'ёжиков'), (26, 'ёжиков'), (27, 'ёжиков'), (28, 'ёжиков'), (29, 'ёжиков'), (30, 'ёжиков'), (31, 'ёжик'), (32, 'ёжика'), (33, 'ёжика'), (34, 'ёжика')] >>>
Офлайн