Чт, 22.02.2018, 15:08
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

   
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво

Сторінка 6 з 7«124567»
Модератор форуму: Ktara, Bandalak, НІКОЛЯ, volevikt 
Форум інформатиків » Розділ IV: ВДОСКОНАЛЕННЯ ФАХОВОЇ МАЙСТЕРНОСТІ УЧИТЕЛЯ ІНФОРМАТИКИ » 4.3 Авторські методики. Алгоритміка та програмування. » Розв'язуємо задачі в стилі Python (Відвикаємо від звичок Паскаля і т. п.)
Розв'язуємо задачі в стилі Python
swetikccc Дата: Ср, 06.12.2017, 19:46 | Повідомлення № 76
Ветеран спілкування
Повідомлень: 4023
Нагороди: 30
Рейтинг: 386
Цитата Bandalak ()
А мій розв'язок не правильний?
Повідомлення № 71

100% повинно бути вірне.
Пилипчук_О_П Дата: Ср, 06.12.2017, 19:48 | Повідомлення № 77
Ветеран спілкування
Повідомлень: 4011
Нагороди: 37
Рейтинг: 352
Цитата swetikccc ()
7351

735
751

Точно...
Треба видаляти першу цифру, яка менша за наступну. А якщо такої немає, то останню.
swetikccc Дата: Ср, 06.12.2017, 19:58 | Повідомлення № 78
Ветеран спілкування
Повідомлень: 4023
Нагороди: 30
Рейтинг: 386
Цитата Пилипчук_О_П ()
Треба видаляти першу цифру, яка менша за наступну. А якщо такої немає, то останню.

О дійно остананню.
Тоді у учня в алгоритмі непотрібен і перебір
mio Дата: Ср, 06.12.2017, 20:17 | Повідомлення № 79
Тут живе...
Повідомлень: 114
Нагороди: 2
Рейтинг: 29
Цитата 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 - Ср, 06.12.2017, 21:02
Пилипчук_О_П Дата: Ср, 06.12.2017, 21:38 | Повідомлення № 80
Ветеран спілкування
Повідомлень: 4011
Нагороди: 37
Рейтинг: 352
Пан mio пропонує згенерувати всі можливі числа і вибрати з них найбільше.
swetikccc Дата: Чт, 07.12.2017, 10:40 | Повідомлення № 81
Ветеран спілкування
Повідомлень: 4023
Нагороди: 30
Рейтинг: 386
Код
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 - Чт, 07.12.2017, 11:24
Bandalak Дата: Чт, 07.12.2017, 11:21 | Повідомлення № 82
Лідер форуму
Повідомлень: 5640
Нагороди: 41
Рейтинг: 265
Пане, swetikccc, поясніть роботу функції n.replace(n, '',1), будь-ласка!
swetikccc Дата: Чт, 07.12.2017, 13:50 | Повідомлення № 83
Ветеран спілкування
Повідомлень: 4023
Нагороди: 30
Рейтинг: 386
Цитата Bandalak ()
Пане, swetikccc, поясніть роботу функції n.replace(n, '',1), будь-ласка!
http://pythonz.net/references/named/str.replace/
Просто стираю символ(міняю на пусто)

Це не функція, а метод об'єкта типу рядок в 3 Пітоні.
САм за звичкою називаю функцією, але потрібно звикати що метод


Відредаговано: swetikccc - Чт, 07.12.2017, 13:53
VasilKolomiets Дата: Пн, 08.01.2018, 14:32 | Повідомлення № 84
Новий користувач
Повідомлень: 19
Нагороди: 1
Рейтинг: 21
Цитата Пилипчук_О_П ()
Задача 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 Дата: Пн, 08.01.2018, 16:55 | Повідомлення № 85
Ветеран спілкування
Повідомлень: 4023
Нагороди: 30
Рейтинг: 386
Цитата VasilKolomiets ()
print("Сумма цифр:", sum([int(ch) for ch in str1 ]) )

Перше ініціалізоване значення сh ?
VasilKolomiets Дата: Пн, 08.01.2018, 19:20 | Повідомлення № 86
Новий користувач
Повідомлень: 19
Нагороди: 1
Рейтинг: 21
Цитата VasilKolomiets ()
print("Сумма цифр:", sum([int(ch) for ch in str1 ]) )Перше ініціалізоване значення сh ?
не зрозумів питання... Якщо треба пояснень, то:
[int(ch) for ch in str1 ] створює список цифр, а sum() прекрасно працює з ітерованими об'єктами...
swetikccc Дата: Пн, 08.01.2018, 20:33 | Повідомлення № 87
Ветеран спілкування
Повідомлень: 4023
Нагороди: 30
Рейтинг: 386
Цитата VasilKolomiets ()
не зрозумів питання...

Дякую
https://habrahabr.ru/post/30232/

str1 = input()
print("Сумма цифр:", sum(list(map(int, str1))))

навыть простіше уже map примінила функцію int до кожного символу рядка і створила новий список
str1 = input()
print("Сумма цифр:", sum (map(int, str1))


Відредаговано: swetikccc - Пн, 08.01.2018, 20:52
VasilKolomiets Дата: Пн, 08.01.2018, 21:51 | Повідомлення № 88
Новий користувач
Повідомлень: 19
Нагороди: 1
Рейтинг: 21
Цитата 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 - Пн, 08.01.2018, 21:55
Пилипчук_О_П Дата: Вт, 09.01.2018, 02:24 | Повідомлення № 89
Ветеран спілкування
Повідомлень: 4011
Нагороди: 37
Рейтинг: 352
Цитата VasilKolomiets ()
але то вже збочення і не для дітей )))

Гарна фраза. А де межа? Як на мене, цінним є вміння писати ЗРОЗУМІЛІ програми. Незалежно від мови програмування. І практично всі мови це дозволяють робити (brainfuck не згадуємо).
Просувати Пайтон в шкільне середовище можна. Але не забуваймо, що його "недолугість" організатори олімпіад оцінили: в багатьох випадках дають в 10(!) разів більше часу на отримання результату, порівняно з іншими мовами. Ви в цьому бачите високий сенс?
VasilKolomiets Дата: Вт, 09.01.2018, 10:02 | Повідомлення № 90
Новий користувач
Повідомлень: 19
Нагороди: 1
Рейтинг: 21
Цитата 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 - Вт, 09.01.2018, 11:34
Форум інформатиків » Розділ IV: ВДОСКОНАЛЕННЯ ФАХОВОЇ МАЙСТЕРНОСТІ УЧИТЕЛЯ ІНФОРМАТИКИ » 4.3 Авторські методики. Алгоритміка та програмування. » Розв'язуємо задачі в стилі Python (Відвикаємо від звичок Паскаля і т. п.)
Сторінка 6 з 7«124567»
Пошук:


© Форум інформатиків України, 2007-2018.