Найти - Пользователи
Полная версия: Учу питона :)
Начало » Python для новичков » Учу питона :)
1 2 3 4
1m0n2
Как вы интересно подправили цикл 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)
Vigi
while True:
    number = input('Введите число:> ')
    if number.isdigit():
        print(number[::-1])

бед стиль:
 s = s + z*10**i
 i = i + 1

можно:
s += z*10**i
i += 1

и переменным нужно давать осмысленные имена…
1m0n2
Vigi

крутооооо мне бы так уметь 4 строчки вместо моих 17
Vigi
Учите мат часть…
1m0n2
Vigi
Учите мат часть…

учу уже целых 2 программки написал одну поправил и еще надо править
в первом посте я так и сказал что в учебниках практики мало а без практики учение скрипит
py.user.next
1m0n2
а чем плохо так как я писал s = int(s) я почемуто считал что плохо вводить много переменных без которых можно обойтись
Плохо как раз переопределять имена, которые сначала использовались для одного, а потом используются для другого.

Во-первых, нарушается читаемость кода. Когда ты смотришь вниз и видишь деление s на 100000, то чтобы понять, что такое s, ты смотришь наверх, чтобы узнать, где она создаётся. И там ты видишь s = input(). Получается, что ты делишь строку. Ни внизу, ни наверху не написано, что ты где-то в середине кода поменял эту переменную со строки на число. Теперь представь, что у тебя таких переменных не одна, а десять. Из-за каждой переменной тебе надо будет перечитывать весь код десять раз.

Во-вторых, введённая строка может ещё понадобиться. Когда ты её перевёл в число, то исходную строку ты потерял. В этом коде это без разницы, а в других это может иметь значение, поэтому тебе придётся переделывать код на то, что и должно было быть изначально.

1m0n2
Окончания можно замутить много циклов только надо (даже интересно стало такое сделать)
Это важные детали. Ты должен добиваться от программы того, что нужно тебе, а не полагаться на то, что она сама собой получится. Нужны правильные окончания - сделай правильные окончания.
1m0n2
Дополнил первую программку теперь правильно выводит окончания а если ввести 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)
Намудрил канешно возможно у вас получицца сделать проще.
Lestoroer
Имхо.
Слишком толсто.
1m0n2
Lestoroer
Имхо. Слишком толсто.

я как смог старалса делать кампактнее.Мож када получче изучу питона будет получатся лучше.Вообще все это дело с окончаниями можно было бы упрятать в функцию и применять не тока в этой проге но и в других но я етого пока ни умею
py.user.next
>>> 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, 'ёжика')]
>>>
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