Форум сайта python.su
0
не понял ето как бы функция для одного слова?В примере про расстояние ее надо было бы вызывать 3 раза и так же как и я формировать строку вывода да? а то как я сделал совсем плохо?работает так то
Смотрю на вашу функцию и думаю что не меньше моей проги будет:
тут тоже придется писать цикл For либо 3 раза вызывать функцию(то есть писать 3 раза) цикл универсальнее будет да и в формировании строки вывода он нужен и при желании (я делал) нужен также еще 1 цикл if что бы не было 0 ежиков (0 метров) вобщем так же и будет только функция ето канеш лучче
Вопрос как в функцию как ваша подать слова(то есть метр, метров, метра и остальные)?руками прописывать или список создать?В смысле как лучше будет.
Отредактировано 1m0n2 (Май 14, 2016 14:45:49)
Офлайн
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 ... >>> while True: ... s = input("Введите расстояние в сантиметрах или нажмите Enter для завершения ") ... if not s: ... break ... try: ... n = int(s) ... except ValueError: ... print("Нужно вводить целое число") ... continue ... km = n // 100000 ... x = n % 100000 ... m = x // 100 ... sm = x % 100 ... km_text = select_ending(km, 'километров', 'километр', 'километра') ... m_text = select_ending(m, 'метров', 'метр', 'метра') ... sm_text = select_ending(sm, 'сантиметров', 'сантиметр', 'сантиметра') ... print("В расстоянии", km, km_text, m, m_text, sm, sm_text + '.') ... Введите расстояние в сантиметрах или нажмите Enter для завершения 1234567 В расстоянии 12 километров 345 метров 67 сантиметров. Введите расстояние в сантиметрах или нажмите Enter для завершения 12345 В расстоянии 0 километров 123 метра 45 сантиметров. Введите расстояние в сантиметрах или нажмите Enter для завершения 100000 В расстоянии 1 километр 0 метров 0 сантиметров. Введите расстояние в сантиметрах или нажмите Enter для завершения 100311 В расстоянии 1 километр 3 метра 11 сантиметров. Введите расстояние в сантиметрах или нажмите Enter для завершения 100321 В расстоянии 1 километр 3 метра 21 сантиметр. Введите расстояние в сантиметрах или нажмите Enter для завершения >>>
Офлайн
0
По моему вы не поняли меня счас попробую написать в программке.(Нужно время
)Читайте комменты в коде
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 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 = [" километр", " метр", " сантиметр"] ending = ["ов ", " ", "а "] outline = "В расстоянии " intermediateline = [km, m, sm] size = -1 for number in intermediateline: #цикл добавляет универсальности теперь чтобы добавить миллиметры(или что там за километрами -- световой год(у етой единицы другие окончания уффф)? если надо) достаточно добавить элементы в списки words и intermediateline и добавить формулу нахождения миллиметров size += 1 if number == 0: #с этим циклом не будет выводится нулевое значение(0 метров к примеру) по моему так симпотичнее continue else: outline += str(intermediateline[size]) outline += words[size] line = select_ending(intermediateline[size], ending[0], ending[1], ending[2]) outline += line print(outline)
Думал в параметрах функции можно записать список ending одним словом – выдало ощибку пришлось писать поэлементно.Вот тока как бы в цикле For обойтись без строки вывода а то ее код много строк занимает а если просто принтом как у вас оно в столбик выведет ведь?Отредактировано 1m0n2 (Май 14, 2016 16:57:13)
Офлайн
857
1m0n2Вот теперь метры замени на кошки, а сантиметры на яблоки. То, что слова километр, метр и сантиметр - однокоренные, - просто совпадение.
И записал функцию только один раз
1m0n2Научись для начала передавать данные между функциями. Передача данных в Excel сводится к передаче данных в функцию, которая знает, как сохранить их в документ Excel.
А можно вывести результаты в таблицу excel
Отредактировано py.user.next (Май 14, 2016 17:23:40)
Офлайн
0
Мдя пожалуй настала пора читать учебник дальше и изучать функции
Офлайн