 |
Вітаю Вас, Гість · RSS |
 |
Розв'язуємо задачі в стилі Python
| |
swetikccc |
Дата: We, 06.12.2017, 19:46 | Повідомлення № 76 |
Ветеран спілкування
Повідомлень: 4208
| Цитата Bandalak (  ) А мій розв'язок не правильний? Повідомлення № 71 100% повинно бути вірне.
|
|
| |
Пилипчук_О_П |
Дата: We, 06.12.2017, 19:48 | Повідомлення № 77 |
Ветеран спілкування
Повідомлень: 4330
| Цитата swetikccc (  ) 7351
735 751 Точно... Треба видаляти першу цифру, яка менша за наступну. А якщо такої немає, то останню.
|
|
| |
swetikccc |
Дата: We, 06.12.2017, 19:58 | Повідомлення № 78 |
Ветеран спілкування
Повідомлень: 4208
| Цитата Пилипчук_О_П (  ) Треба видаляти першу цифру, яка менша за наступну. А якщо такої немає, то останню. О дійно остананню. Тоді у учня в алгоритмі непотрібен і перебір
|
|
| |
mio |
Дата: We, 06.12.2017, 20:17 | Повідомлення № 79 |
Тут живе...
Повідомлень: 124
| Цитата swetikccc (  ) Задача B. Число Код # зчитуємо рядок цифр і перетворюємо цей рядок у список, наприклад: для рядка 7531 --> отримуємо список ['7', '5', '3', '1'] number = list(input()) # створюємо ще один список my_temp_list = [] # проходимо по індексах (значення item) елементів у списку із введених чисел for item in range(len(number)): # на кожній ітерації # беремо зріз списку [:item] - від початку списку і до значення item (але не враховуючи item), результат - новий список # беремо зріз списку [item + 1:] - від значення item+1 і до кінця списку, результат - новий список # додаємо результати зрізів (додаємо два списки і отримуємо єдиний) # join - об'єднання елементів єдиного списку у рядок, без розділювача # приєднання кожного попереднього об'єднання до списку my_temp_list за допомогою append my_temp_list.append(''.join(number[:item] + number[item + 1:])) # сортування за допомогою sorted(), в порядку зростання, наступний рядок наведений для перегляду всього відсортованого списку print(sorted(my_temp_list)) # -1 - беремо з відсортованого списку my_temp_list останній елемент print(sorted(my_temp_list)[-1])
Відредаговано: mio - We, 06.12.2017, 21:02 |
|
| |
Пилипчук_О_П |
Дата: We, 06.12.2017, 21:38 | Повідомлення № 80 |
Ветеран спілкування
Повідомлень: 4330
| Пан mio пропонує згенерувати всі можливі числа і вибрати з них найбільше.
|
|
| |
swetikccc |
Дата: Th, 07.12.2017, 10:40 | Повідомлення № 81 |
Ветеран спілкування
Повідомлень: 4208
| Код n = input() k = len(n) z =0 for j in range(len(n)-1): if n<n[j+1] : n= n.replace(n, '',1) z=1 break
if z == 0: n= n.replace(n[k-1], '',1)
print (n)
Перевірте відступи!
Відредаговано: Bandalak - Th, 07.12.2017, 11:24 |
|
| |
Bandalak |
Дата: Th, 07.12.2017, 11:21 | Повідомлення № 82 |
Лідер форуму
Повідомлень: 6386
| Пане, swetikccc, поясніть роботу функції n.replace(n, '',1), будь-ласка!
|
|
| |
swetikccc |
Дата: Th, 07.12.2017, 13:50 | Повідомлення № 83 |
Ветеран спілкування
Повідомлень: 4208
| Цитата Bandalak (  ) Пане, swetikccc, поясніть роботу функції n.replace(n, '',1), будь-ласка! http://pythonz.net/references/named/str.replace/ Просто стираю символ(міняю на пусто)
Це не функція, а метод об'єкта типу рядок в 3 Пітоні. САм за звичкою називаю функцією, але потрібно звикати що метод
Відредаговано: swetikccc - Th, 07.12.2017, 13:53 |
|
| |
VasilKolomiets |
Дата: Mo, 08.01.2018, 14:32 | Повідомлення № 84 |
Новий користувач
Повідомлень: 19
| Цитата Пилипчук_О_П (  ) Задача 6 str1 = input() sum = 0 for i in str1: sum += int(i) print("Сумма цифр:", summa) Задача 6 str1 = input() print("Сумма цифр:", sum([int(ch) for ch in str1 ]) )
взагалі то працює і варіант print("Сумма цифр:", sum([int(ch) for ch in input() ]) )
але то вже збочення і не для дітей )))
|
|
| |
swetikccc |
Дата: Mo, 08.01.2018, 16:55 | Повідомлення № 85 |
Ветеран спілкування
Повідомлень: 4208
| Цитата VasilKolomiets (  ) print("Сумма цифр:", sum([int(ch) for ch in str1 ]) ) Перше ініціалізоване значення сh ?
|
|
| |
VasilKolomiets |
Дата: Mo, 08.01.2018, 19:20 | Повідомлення № 86 |
Новий користувач
Повідомлень: 19
| Цитата VasilKolomiets (  ) print("Сумма цифр:", sum([int(ch) for ch in str1 ]) )Перше ініціалізоване значення сh ? не зрозумів питання... Якщо треба пояснень, то: [int(ch) for ch in str1 ] створює список цифр, а sum() прекрасно працює з ітерованими об'єктами...
|
|
| |
swetikccc |
Дата: Mo, 08.01.2018, 20:33 | Повідомлення № 87 |
Ветеран спілкування
Повідомлень: 4208
| Цитата VasilKolomiets (  ) не зрозумів питання... Дякую https://habrahabr.ru/post/30232/
str1 = input() print("Сумма цифр:", sum(list(map(int, str1))))
навыть простіше уже map примінила функцію int до кожного символу рядка і створила новий список str1 = input() print("Сумма цифр:", sum (map(int, str1))
Відредаговано: swetikccc - Mo, 08.01.2018, 20:52 |
|
| |
VasilKolomiets |
Дата: Mo, 08.01.2018, 21:51 | Повідомлення № 88 |
Новий користувач
Повідомлень: 19
| Цитата mio (  ) Пан mio пропонує згенерувати всі можливі числа і вибрати з них найбільше. s = input('give me the number:') print('максимальне число дами', max([int(s[:i]+s[i+1:]) for i in range(len(s)-1)]))
не проверял на +/- 1 в индексе. И не самое быстрое решение. Тупо в лоб.
Відредаговано: VasilKolomiets - Mo, 08.01.2018, 21:55 |
|
| |
Пилипчук_О_П |
Дата: Tu, 09.01.2018, 02:24 | Повідомлення № 89 |
Ветеран спілкування
Повідомлень: 4330
| Цитата VasilKolomiets (  ) але то вже збочення і не для дітей ))) Гарна фраза. А де межа? Як на мене, цінним є вміння писати ЗРОЗУМІЛІ програми. Незалежно від мови програмування. І практично всі мови це дозволяють робити (brainfuck не згадуємо). Просувати Пайтон в шкільне середовище можна. Але не забуваймо, що його "недолугість" організатори олімпіад оцінили: в багатьох випадках дають в 10(!) разів більше часу на отримання результату, порівняно з іншими мовами. Ви в цьому бачите високий сенс?
|
|
| |
VasilKolomiets |
Дата: Tu, 09.01.2018, 10:02 | Повідомлення № 90 |
Новий користувач
Повідомлень: 19
| Цитата VasilKolomiets (  ) Гарна фраза. А де межа? Як на мене, цінним є вміння писати ЗРОЗУМІЛІ програми. Незалежно від мови програмування. І практично всі мови це дозволяють робити (brainfuck не згадуємо). Просувати Пайтон в шкільне середовище можна. Але не забуваймо, що його "недолугість" організатори олімпіад оцінили: в багатьох випадках дають в 10(!) разів більше часу на отримання результату, порівняно з іншими мовами. Ви в цьому бачите високий сенс? Мова пайтон має окрім "дзен" пайтон ще й стандарти PEP-8 оформлення коду та використання імен. Це досить чітко малює "межу" гарного. В ній є слоган на кшалт "ми тут зібралися дорослі за власним бажанням". Тобто вона дозволяє "дорослим" робити все. Це що стосується межі. Друге - швидкість виконання. Наразі найбільш уживані галузі пайтону такі: 1) інтернет (де швидкість виконання ніщо у порівнянні зі швидкістю ввода тексту людиною) 2) утиліти в ОС. де час вводу команди з параметрами завжди більший за спрацювання 3) BigData, де програма являє собою виклик функцій з модулів що написані на с . Зараз пайтон є замінником фортрану. Тобто на великих обчисленнях вирішує якість бібліотеки а не синтаксис мови. 4) прототипне програмування. тобто швидке створення робочої програми з метою перших продажів або збору коштів. А далі - переписування "вузьких місць" на с, с++б асемблері, Таке подвійне писання дає ззменшення сумарного часу написання коду.
Останнє: у 10 разів довше відбувається перше виконання. коли байт код построєно - удруге виконується значно швидше.
Як на мене, то пайтон має три рівні, або три шари.
Перший - те що є у багатьох мовах - як Паскаль, наприклад. Оператори, функції, ООП Другий - уміння зшивати об'єкти Пайтону зі своїми об'єктами. Це можливість "качачого" та "гусиного" наслідування об'єктів Третій - сопрограми та асинхронне програмування, програмування абстрактних класів, об'єкти з множинним "батьківством"
відповідно перший рівень - рівень школи (рівень "будь-якої" мови) другий рівень - рівень ВУЗу 1-2 курси третій рівень - "можливості за викликом" про які не знають більшість кодерів, що перейшли наприклад, з С++ до Пайтону.
Ось наприклад тут: https://dystosvita.gnomio.com/mod/page/view.php?id=2695 порівнюють код на різних мовах... При будь якому порівнянні код Пайтону на 20-30% коротший і зрозуміліший. А міг би бути ще коротший, якби автори дійсно знали Пайтон. Приклад:
Завдання:
Цитата Вивести парні числа заданої послідовності у зворотному порядку ^_^ Їх розв'язання:
n=int(input()) line=input().split() spysok=[] for i in range(n): spysok.append(int(line))
for nomer in range(n-1,-1,-1): if spysok[nomer]%2==0: print spysok[nomer],
це розв'язання вже нав'язане мисленням зі статичними масивами. Звідки взялося n?? У завданні нічого не сказано! Навіщо себе обмежувати? Той хто міркує у "динамічному світі Пайтон" написав би так:
spysok = [int(x) for x in input('введіть цілі числа через пробіл:').split()] for x in spysok[::-1]: if not x%2: print(x)
останні три рядки за бажанням можна переписати в один:
[print(x) for x in spysok[::-1] if not x%2]
все відпрацює, та буде зайвий пустий список. це - "збочення" ))) бо породжує непотрібну структуру
Відредаговано: VasilKolomiets - Tu, 09.01.2018, 11:34 |
|
| |
© Форум інформатиків України, 2007-2022.  |