Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/208: Рейтинг темы: голосов - 208, средняя оценка - 4.75
 Аватар для Lucky64
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288

Ищу доброго самаритянина по питону

16.01.2019, 16:27. Показов 45312. Ответов 508
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всех приветствую, немного о себе, 27 лет, женат, работаю системным админом в крупной компании. Всегда хотел программировать, но по стечению обстоятельств не сложилось, то работа не позволяла, не было времени, то бытовуха итд. Но вот решил что во что бы то не стало я овладею данной профессией. Начал свой путь программирования с питона. Сейчас читаю книги, прохожу на сайтах различные обучающие уроки итд, на ютюбе нашел не плохой канал где разжевывают все хорошо и вроде потихоньку получается писать (можно было бы идти на курсы, но не позволяет работа, питон питоном, а семью кормить надо, вроде и на работе время есть изучать, но вот уходить на курсы с работы итд, это не варик). Буквально вчера закончил разбираться и написал уже самостоятельно игру камень, ножницы, бумага, где играешь против компа. Ищу человека который просто направлял бы меня в нужное русло, подкидывал материал для изучения, который потом мне пригодится итп, который помог бы в трудностях. Просто учить все подряд без какого либо плана дает итог каши в голове. Если найдется тут такой человек, буду искренне благодарен ему!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.01.2019, 16:27
Ответы с готовыми решениями:

В зависимости от ведённого времени получите сообщение с пожеланием доброго утра, доброго дня, доброго вечера, спокойный
Плииз! Помогите с учёбой! В общем суть задания: В зависимости от ведённого времени (от 0 до 24) получите сообщение с пожеланием доброго...

В зависимости от введенного значения времени желает доброго утра, доброго дня, доброго вечера, доброй ночи.
Нужно составить программу, которая требует ввода времени дня и в зависимости от введенного значения желает доброго утра, доброго дня,...

Ищу доброго человечка, который поможет
Здравствуйте. Помогите пожалуйста сверстать небольшую страницу. Html, Css, Font Awesome

508
 Аватар для Lucky64
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
12.02.2019, 13:24  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Viktorrus Посмотреть сообщение
Лишняя инструкция забирает дополнительное время, что не желательно.
Поэтому я думаю, что ты скорее всего ошибся.
возможно, если найду то, о чем я вам говорил, скину сюда
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
12.02.2019, 13:44
Кстати в решениях в конце книги Лутц не использует return

% python
>>> def func(x): print(x)
...
>>> func(“spam”)
spam

Это значит, что ты все таки не так его понял.
И не нужно всегда использовать return , а только когда эта инструкция необходима,
только когда нужно вернуть какой то результат.

Добавлено через 2 минуты
Это решение Лутца показывает, что Лутц с тобой не согласен.

Добавлено через 9 минут
Кстати, я интерпретатор IDLE использую только когда нужно быстро посмотреть, что делает однострочная инструкция, Во всех остальных случаях я использую отладчик с созданием файла.
0
 Аватар для Lucky64
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
12.02.2019, 13:45  [ТС]
Viktorrus, возможно из-за этого я подумал что Лутц настаивал на использовании ретурн:
Взаимодействие: для передачи значений функции используйте аргументы, для возврата результатов – инструкцию return. Всегда следует стремиться сделать функцию максимально независимой от того, что происходит за ее пределами. Аргументы и инструкция return часто являются
лучшими способами ограничить внешнее воздействие небольшим числом
известных мест в программном коде.

и

На рис. 19.1 приводится схема организации взаимодействий функций с внешним миром – входные данные поступают в функции из элементов слева, а результаты могут возвращаться в любой из форм справа. Опытные программисты предпочитают использовать для ввода только аргументы, и для вывода –
только инструкцию return.

это страницы 537-538
Видать из за этого я решил использовать ретурн

Добавлено через 1 минуту
Цитата Сообщение от Viktorrus Посмотреть сообщение
Это решение Лутца показывает, что Лутц с тобой не согласен.
ну значит будем исправляться)
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
12.02.2019, 14:31
Цитата Сообщение от Lucky64 Посмотреть сообщение
Аргументы и инструкция return часто являются
лучшими способами ограничить внешнее воздействие небольшим числом
известных мест в программном коде.
Лутц под этим подразумевает, что не нужно пытаться залезть из внешней программы внутрь функции, что бы забрать из нее какое либо значение, а сама функция должна возвращать это значение с помощью return. Я понимаю его слова именно так.
0
 Аватар для Lucky64
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
12.02.2019, 18:33  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Лутц под этим подразумевает, что не нужно пытаться залезть из внешней программы внутрь функции, что бы забрать из нее какое либо значение, а сама функция должна возвращать это значение с помощью return. Я понимаю его слова именно так.
буду знать

Добавлено через 53 минуты
Viktorrus,
3. Переменное число аргументов. Обобщите функцию adder из предыдущего
упражнения, чтобы она вычисляла сумму произвольного числа аргументов, и измените вызовы функции так, чтобы ей передавалось больше или
меньше двух аргументов. Какой тип имеет возвращаемое значение суммы?
(Подсказка: срез, такой как S[:0], возвращает пустую последовательность
того же типа, что и S, а с помощью встроенной функции type можно узнать
тип объекта – смотрите примеры с функцией min в главе 18, где используется подобный прием.) Что произойдет, если функции передать аргументы
разных типов? Что произойдет, если ей передать словари?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def adder1(*args):#Создаем функцию с произвольным количеством аргументов
    print('adder1', end=' ')#выводим на экран и ставим в конце выведенного пробел
    if type(args[0]) == type(0): # проверяем Целое число?
        sum = 0                  # Инициализировать нулем
    else:                        # иначе - последовательность:
        sum = args[0][:0]        # Использовать пустой срез первого аргумента
    for arg in args:#передаем арг аргументы
        sum = sum + arg#получаем сумму
    return sum#Возвращаем результат
def adder2(*args):
    print('adder2', end=' ')
    sum = args[0]  # Инициализировать значением первого аргумента
    for next in args[1:]:
        sum += next  # Прибавить аргументы 2..N
        return sum
for func in (adder1, adder2):
    print(func(2, 3, 4))
    print(func('spam', 'eggs', 'toast'))
    print(func(['a', 'b'], ['c', 'd'], ['e', 'f']))
Функцию Adder2 писал сам не смотря в ответ, так как не смог реализовать самостоятельно аддер1, пришлось заглянуть в ответы, но сам код я разобрал.

Добавлено через 1 час 45 минут
Viktorrus, Задание 4:
4. Именованные аргументы. Измените функцию adder из упражнения 2 так,
чтобы она принимала и вычисляла сумму/конкатенацию трех аргументов:
def adder(good, bad,ugly). После этого определите значения по умолчанию
для каждого из аргументов и поэкспериментируйте с функцией в интерактивной оболочке. Попробуйте передавать ей один, два, три и четыре аргумента. Попробуйте передавать аргументы по именам. Будет ли работать такой вызов: adder(ugly=1, good=2)? Почему? Наконец, обобщите новую версию
функции adder так, чтобы принимала и вычисляла сумму/конкатенацию
произвольного числа именованных аргументов. Решение будет напоминать
то, что было получено в упражнении 3, с той лишь разницей, что вам при-Закрепление пройденного 603
дется выполнить обход словаря, а не кортежа. (Подсказка: метод dict.keys()
возвращает список, который можно обойти с помощью цикла for или while,
но не забудьте обернуть его вызовом функции list в Python 3.0, чтобы обеспечить возможность обращения к элементам по индексам!)
решение первое:
Python
1
2
3
def adders(good=2, bad=3, ugly=5):
    return good + bad + ugly
print(adders([1,2,3],[2,3,4],[2]))
Тут я сам до всего додумался

второе:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def adder1(*args):     # Сумма значений произвольного количества
    tot = args[0] # присваиваем в данном случае переменной тот значение арг 0, то есть 1
    for arg in args[1:]:#Остальные значения передаем арг
        tot += arg#Затем прибавляем 1 элемент к остальным, проще говоря делаем 1+2+3
        return tot#Возвращаем результат 5 правильно? Тогда почему в принте он возвращает результат 3?
def adder2(**args): # Сумма значений произвольного количества именованных арг.
    argskeys = list(args.keys()) # функция list необходима в 3.0!
    tot = args[argskeys[0]]
    for key in argskeys[1:]:
        tot += args[key]
        return tot
def adder3(**args):    # То же самое, но преобразует в список значений
    args = list(args.values()) # list необходима для индексирования в 3.0!
    tot = args[0]
    for arg in args[1:]:
        tot += arg
        return tot
def adder4(**args):    # То же самое, но использует версию с позиционными арг.
    return adder1(*args.values())
print(adder1(1, 2, 3), adder1('aa', 'bb','cc'))
print(adder2(a=1, b=2, c=3), adder2(a='aa', b='bb', c='cc'))
print(adder3(a=1, b=2, c=3), adder3(a='aa', b='bb', c='cc'))
print(adder4(a=1, b=2, c=3), adder4(a='aa', b='bb', c='cc'))
Вот тут мне не понятны некоторые вещи, вопросы задал в комментариях к коду

Добавлено через 1 минуту
Viktorrus, И последний пример я 2 последние функции понял не совсем до конца, завтра продолжу и полностью разберу его что бы осознать, сейчас в голове уже каша... думал сегодня закончу все задания, но не тут то было...

Добавлено через 40 минут
Viktorrus,
Цитата Сообщение от Lucky64 Посмотреть сообщение
Вот тут мне не понятны некоторые вещи, вопросы задал в комментариях к коду
Виктор по поводу первой части кода вопрос снимается, я сам допустил ошибку в отступе, поместил ретурн внутри функции, и он возвращал результат не туда, промучился полтора часа, и все же нашел этот косяк... Сейчас буду разбирать следующую часть кода adder2
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
12.02.2019, 18:34
Задание 3
По ходу рассмотрения сразу буду писать замечания.
1. Не рекомендуется давать переменным имена, такие же как у ключевых слов в питоне. sum - это имя встроенной функции питона, поэтому не стоит давать своей переменной такое же имя. Правда Лутц в своем примере adder1 сам нарушает это правило, о котором он в каком то месте книги говорит. Но все равно, рекомендуется его придерживаться, хотя в данном примере это не ошибка.
0
 Аватар для Lucky64
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
12.02.2019, 19:02  [ТС]
Viktorrus,
В общем вот полностью разобрал код из 4 задания, надо было просто понять хорошо как точно работает первая функция, остальные сразу стали практически ясны. Проверьте мое описание каждого элемента пжлст, вроде все уяснил правильно, и огромное спасибо за ваше время и за то, что терпите мои глупые вопросы по 100 раз на дню Все я пошел теперь точно спать, голова никакая уже)
Python
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
def adder1(*args):     # Сумма значений произвольного количества
    tot = args[0] # позиционных аргументов
    for arg in args[1:]:#Переменной арг передаем остальные значения из аргс начиная со второго слева
        tot += arg#Складываем все значения
    return tot#И отправляем результат в функцию аддер1
def adder2(**args): # Сумма значений произвольного количества именованных арг.
    argskeys = list(args.keys()) # функция list необходима в 3.0!
    tot = args[argskeys[0]]# присваиваем переменной тот значение первого значения из словаря
    for key in argskeys[1:]:#Переводим остальные значения начиная со второго слева переменной кеу
        tot += args[key]#Складываем результаты
    return tot#Возвращаем результат в функцию аддер2
'''Тут все происходит точно так же как и в функциях выше, идинственное отличие в том,
 что в этот раз мы ищем значение словарей а не ключи'''
def adder3(**args):    # То же самое, но преобразует в список значений
    args = list(args.values()) # присваиваем значение словаря
    tot = args[0]
    for arg in args[1:]:
        tot += arg
    return tot
def adder4(**args):    # То же самое, но использует версию с позиционными арг.
    return adder1(*args.values())#Помещает в качестве аргументов только сами значения словаря?
print(adder1(1, 2, 3), adder1('aa', 'bb','cc'))
print(adder2(a=1, b=2, c=3), adder2(a='aa', b='bb', c='cc'))
print(adder3(a=1, b=2, c=3), adder3(a='aa', b='bb', c='cc'))
print(adder4(a=1, b=2, c=3), adder4(a='aa', b='bb', c='cc'))
Добавлено через 2 минуты
Цитата Сообщение от Viktorrus Посмотреть сообщение
1. Не рекомендуется давать переменным имена, такие же как у ключевых слов в питоне. sum - это имя встроенной функции питона, поэтому не стоит давать своей переменной такое же имя. Правда Лутц в своем примере adder1 сам нарушает это правило, о котором он в каком то месте книги говорит. Но все равно, рекомендуется его придерживаться, хотя в данном примере это не ошибка.
Да я что то проморгал этот момент, я тоже помню что он писал об этом, но в данном случае просто уже замылился глаз...

Добавлено через 5 минут
Цитата Сообщение от IRIP Посмотреть сообщение
Маленькая ремарка - когда пишешь код, лучше сразу его форматировать по всем правилам.
например:
Последовал вашему совету и оформил как надо, спс!
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
12.02.2019, 20:06
Задание 3
В adder2 одна ошибка. не верный отступ. В результате твоя функция складывает только 2 первых элемента.
adder1 и adder2 должны выдавать одинаковые результаты, а у тебя выводит:
adder1 9
adder1 spameggstoast
adder1 ['a', 'b', 'c', 'd', 'e', 'f']
adder2 5
adder2 spameggs
adder2 ['a', 'b', 'c', 'd']

Это происходит потому, что отступ у return больше чем нужно и происходит выход из функции сразу после первого шага в цикле for .
Должно быть так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def adder1(*args):#Создаем функцию с произвольным количеством аргументов
    print('adder1', end=' ')#выводим на экран и ставим в конце выведенного пробел
    if type(args[0]) == type(0): # проверяем Целое число?
        sum = 0                  # Инициализировать нулем
    else:                        # иначе - последовательность:
        sum = args[0][:0]        # Использовать пустой срез первого аргумента
    for arg in args:#передаем арг аргументы
        sum = sum + arg#получаем сумму
    return sum#Возвращаем результат
def adder2(*args):
    print('adder2', end=' ')
    sum = args[0]  # Инициализировать значением первого аргумента
    for next in args[1:]:
        sum += next  # Прибавить аргументы 2..N
    return sum         # return должен быть на уровне for (т.е. после завершения всего цикла)
for func in (adder1, adder2):
    print(func(2, 3, 4))
    print(func('spam', 'eggs', 'toast'))
    print(func(['a', 'b'], ['c', 'd'], ['e', 'f']))
Тогда на выходе получим как и в решении у Лутца:
adder1 9
adder1 spameggstoast
adder1 ['a', 'b', 'c', 'd', 'e', 'f']
adder2 9
adder2 spameggstoast
adder2 ['a', 'b', 'c', 'd', 'e', 'f']

Добавлено через 2 минуты
Остальное в задании 3 все правильно.

Добавлено через 12 минут
Кстати ты понял, для чего Лутц в функции adder1 инициализирует sum таким способом?
Python
1
2
    else:                        # иначе - последовательность:
        sum = args[0][:0]        # Использовать пустой срез первого аргумента
Таким способом мы обходимся одним циклом, вместо двух, для строк и для списков отдельно.
Эта запись позволяет в случае строк получить sum = "" пустую строку, которую потом будем заполнять символами,
а в случае списков получить sum = [] пустой список, для дальнейшего заполнения элементами списков.
Интересное решение.
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
12.02.2019, 20:50
Цитата Сообщение от Lucky64 Посмотреть сообщение
Последовал вашему совету и оформил как надо, спс!
попробуйте редактор wing101 - бесплатный, легковесный, шустрый =) и для любой платформы =)
0
 Аватар для Lucky64
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
12.02.2019, 20:56  [ТС]
Цитата Сообщение от IRIP Посмотреть сообщение
попробуйте редактор wing101 - бесплатный, легковесный, шустрый =) и для любой платформы =)
Только начал привыкать к PyCharm вполне устраивает
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
12.02.2019, 21:06
Задание 4
Замечание: когда в списке или картеже всего один элемент, рекомендуется ставить после него запятую, что бы не было путаницы с индексацией.
Python
1
2
3
def adders(good=2, bad=3, ugly=5):
    return good + bad + ugly
print(adders([1,2,3],[2,3,4],[2,]))
К стати у Лутца в решении к этому заданию в функции adder2 ошибка в отступе в цикле. Ты молодец, ее исправил. У Лутца в этой книге встречаются ошибки (видимо пропущенные при издании) но очень редко, всего несколько штук на всю книгу.
Задание 4 все правильно, только у меня в примечаниях небольшие замечания к терминологии и пояснения.

Python
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
def adder1(*args):     # Сумма значений произвольного количества
    tot = args[0] # позиционных аргументов
    for arg in args[1:]:#Переменной арг передаем остальные значения из аргс начиная со второго слева
        tot += arg#Складываем все значения
    return tot#И отправляем результат в функцию аддер1
                # Правильно сказать: Функция возвращает результат.
def adder2(**args): # Сумма значений произвольного количества именованных арг.
    argskeys = list(args.keys()) # функция list необходима в 3.0!
    tot = args[argskeys[0]]# присваиваем переменной тот значение первого значения из словаря
                           # на самом деле argskeys это уже не словарь, так как в словаре
                           # элементы не упорядочены, а здесь мы с помощью функции list(args.keys())
                           # получили список ключей из словоря
    for key in argskeys[1:]:#Переводим остальные значения начиная со второго слева переменной кеу
        tot += args[key]#Складываем результаты
    return tot#Возвращаем результат в функцию аддер2
'''Тут все происходит точно так же как и в функциях выше, идинственное отличие в том,
 что в этот раз мы ищем значение словарей а не ключи'''
def adder3(**args):    # То же самое, но преобразует в список значений
    args = list(args.values()) # присваиваем значение словаря
                      # правильнее сказать: выводим в список значения из словаря
    tot = args[0]
    for arg in args[1:]:
        tot += arg
    return tot
def adder4(**args):    # То же самое, но использует версию с позиционными арг.
    return adder1(*args.values())#Помещает в качестве аргументов только сами значения словаря?
print(adder1(1, 2, 3), adder1('aa', 'bb','cc'))
print(adder2(a=1, b=2, c=3), adder2(a='aa', b='bb', c='cc'))
print(adder3(a=1, b=2, c=3), adder3(a='aa', b='bb', c='cc'))
print(adder4(a=1, b=2, c=3), adder4(a='aa', b='bb', c='cc'))
0
 Аватар для Lucky64
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
13.02.2019, 18:33  [ТС]
Viktorrus, да с терминодогией у меня пока проблемы, думаю с практикой все усвою в дальнейшем

Добавлено через 6 часов 50 минут
Viktorrus, Задание:
5. Напишите функцию с именем copyDict(dict), которая копирует словарь, получаемый в виде аргумента. Она должна возвращать новый словарь, содержащий все элементы аргумента. Используйте метод keys для выполнения
итераций (или, в Python 2.2, выполните обход ключей словаря без вызова
метода keys). Копирование последовательностей выполняется достаточно
просто (выражение X[:] выполняет поверхностное копирование)� будет ли
этот метод работать со словарями?

Решение:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def copyDict(old):#создаем функцию
    new = {}#Создаем пустой словарь
    for key in old.keys():#Передаем ключи словаря переменной кей
        new[key] = old[key]#присваиваем полученное значение
    return new#Возвращаем результат
def addDict(d1, d2):
    new = {}#Опять создаем словарь в новой функции
    for key in d1.keys():#передаем ключи в кей
        new[key] = d1[key]#и все то же самое что и выше
    for key in d2.keys():#
        new[key] = d2[key]#
    return new#
print(copyDict({2:1, 3:2, 1:3}))
print(addDict({2:1, 5:2, 7:3}, {2:1, 4:3}))
Решил не сам, ответ из книги, но код разобрал без проблем. Вот это меня беспокоит, что код читать начал с легкостью, а писать самостоятельно опираясь на задачу не могу...

Добавлено через 20 минут
Viktorrus, Задание:
Снова простые числа. Вспомните следующий фрагмент из главы 13, который определяет – является ли целое положительное число простым:
Python
1
2
3
4
5
6
7
8
x = y // 2                          # Для значений y > 1
while x > 1:
    if y % x == 0:                  # Остаток
        print(y, ‘has factor’, x)
        break                       # Обойти блок else
    x = x-1
else:                               # Обычный выход
    print(y,is prime’)
Оформите этот фрагмент в виде функции в файле модуля (значение y должно передаваться как аргумент) и добавьте несколько вызовов функции в конец этого файла. При этом замените оператор // на / в первой строке, чтобы
увидеть, как изменилось действие оператора деления в Python 3.0 и как это
изменение отрицательно влияет на работоспособность данного фрагмента
(вернитесь к главе 5, если вам необходимо освежить свои знания). Что вы
можете сказать об отрицательных значениях? Сумеете ли вы повысить скорость работы этой функции?
Решение:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def prime(y):#Создаем функцию
    if y <= 1:#Если игрик меньше или равен одному
        print(y, 'not prime')#Напечатать след. вывод
    else:#Иначе
        x = y // 2#Икс равен игрик деление без остатка
        while x > 1:#Пока икс меньше 1
            if y % x == 0:#Если игрик делится на икс и остаток будет равняться нулю
                print(y, 'has factor', x)#Напечатать след вывод
                break#обойти иф
            x -= 1#Отнять от икса 1
        else:#Иначе
            print(y, 'is prime')#напечатать это
prime(2)#Задаю значение функции
То же самое, переделать самостоятельно не смог, в голове был план, реализовать сам не смог... готовый код разобрал без проблем и потом понял как это было просто...

Добавлено через 1 час 31 минуту
Viktorrus, 9 задание:
9. Генераторы  списков. Напишите программный код, который будет создавать новый список, содержащий квадратные корни всех чисел из следующего списка: [2, 4, 9, 16, 25]. Начните с реализации на основе цикла for,
затем на основе функции map и, наконец, в виде генератора списков. Для вычислений используйте функцию sqrt из модуля math (то есть выполните import math и вызывайте функцию, как math.sqrt(x)). Какой из трех вариантов,
на ваш взгляд, является лучшим?
решения:
Цикл фор:
Python
1
2
3
4
5
6
7
from math import *
f=[2, 4, 9, 16, 25]
for x in f:
    z=[]
    g=sqrt(x)
    z.append(g)
    print(z)
функция мар:
Python
1
2
3
from math import *
f=[2, 4, 9, 16, 25]
print(list(map(sqrt, f)))
генератор списков:
Python
1
2
3
4
5
from math import *
f=[2, 4, 9, 16, 25]
g=[]
g=[sqrt(x) for x in f]
print(list(g))
Все 3 варианта я написал сам опираясь на полученные знания при прочтении книги, в конец учебника за ответами не ходил и по этому не знаю правильно ли получилось, но все три варианта выдают нужный результат. Не хочу лезть в ответы лишний раз
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
13.02.2019, 19:26
Джентльмены, предлагаю это бесконечное обсуждение элементарных задач двумя новичками перенести в личку.
0
 Аватар для Lucky64
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
13.02.2019, 19:44  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Джентльмены, предлагаю это бесконечное обсуждение элементарных задач двумя новичками перенести в личку.
А в чем собственно проблема, "профессионал"? Вроде как тема в разделе "питон для начинающих", а значит вполне естественно, что тут новички... Мы чем-то, и кому-то мешаем?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
13.02.2019, 21:33
Цитата Сообщение от Lucky64 Посмотреть сообщение
Решил не сам, ответ из книги, но код разобрал без проблем. Вот это меня беспокоит, что код читать начал с легкостью, а писать самостоятельно опираясь на задачу не могу...
Я тоже вначале сам писать не мог, но поделав задачи с форума постепенно стал писать и сам.
0
 Аватар для Lucky64
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
13.02.2019, 22:26  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Я тоже вначале сам писать не мог, но поделав задачи с форума постепенно стал писать и сам.
Это успокаивает)
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
13.02.2019, 22:30
Lucky64,
Python
1
2
3
4
5
6
7
from math import *
f=[2, 4, 9, 16, 25]
for x in f:
    z=[]
    g=sqrt(x)
    z.append(g)
    print(z)
Здесь ты сделал не то, что тебя просят. Правильно понять задачу и составить алгоритм, это половина дела. Ты вывел на экран квадратные корни чисел из списка. А тебя просят
Цитата Сообщение от Lucky64 Посмотреть сообщение
Напишите программный код, который будет создавать новый список
Ты список не создал. Рассмотрим что делает твой код.
Ты на каждом шаге в цикле обнуляешь список z = [], затем заносишь в него корень числа и распечатываешь его. После прохода всего цикла у тебя в z будет не список корней всех чисел , а только одно число, корень из 25.
Происходит это потому, что у тебя z внутри цикла, а должно быть перед циклом. Тогда z = [] сработает только один раз и с каждым шагом цикла в него будет добавляться по новому элементу.
И еще одна ошибка, почему ты не заметил, что код не правильный. Распечатывать z нужно после цикла, что бы получить окончательный вариант работы цикла, а у тебя print() внутри цикла и печатает результат одного шага цикла.
Подредактируй свой код.
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
13.02.2019, 22:35
Цитата Сообщение от Viktorrus Посмотреть сообщение
Правильно понять задачу и составить алгоритм, это половина дела
без понимания принципов составления алгоритмов - тяжко ...
хорошо, про принципы

2017-2018 Алгоритмы и структуры данных на Python 3
Тимофей Хирьянов

на ютуб
0
 Аватар для Lucky64
20 / 9 / 0
Регистрация: 16.01.2019
Сообщений: 288
13.02.2019, 22:55  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Здесь ты сделал не то, что тебя просят. Правильно понять задачу и составить алгоритм, это половина дела. Ты вывел на экран квадратные корни чисел из списка.
Все исправил, спасибо!
Python
1
2
3
4
5
6
7
from math import *
f=[2, 4, 9, 16, 25]
z=[]
for x in f:
    g=sqrt(x)
    z.append(g)
print(z)
Добавлено через 48 секунд
Цитата Сообщение от IRIP Посмотреть сообщение
2017-2018 Алгоритмы и структуры данных на Python 3
Тимофей Хирьянов
\
возьму на заметку, спс
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
13.02.2019, 22:56
Lucky64,
Python
1
2
3
from math import *
f=[2, 4, 9, 16, 25]
print(list(map(sqrt, f)))
Здесь у тебя на экран выводится нужный список. Но я предполагаю, что в задании просят сначала создать список. А потом для проверки ты можешь его вывести на экран.
Python
1
2
3
4
from math import *
f=[2, 4, 9, 16, 25]
z = list(map(sqrt, f))
print(z)
Но это ошибка организационная, а функцию map() ты применил правильно.
Хотя еще замечание, в задании говорится
Цитата Сообщение от Lucky64 Посмотреть сообщение
то есть выполните import math и вызывайте функцию, как math.sqrt(x)
Если делать как просят, то импорт модуля и обращение к функции должны выглядеть по другому, так как просят в задании.

Python
1
2
3
4
import math
f=[2, 4, 9, 16, 25]
z = list(map(math.sqrt, f))
print(z)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2019, 22:56
Помогаю со студенческими работами здесь

Ищу доброго человека, который прособеседует по java
Ищу доброго человека чтобы поспрашивал по java, дабы проверить знания. Мечу на позицию java junior. Хочется проверить свои знания перед...

Кр по питону ?
У меня третий вариант и я не могу решить как это делать

Лабораторная по питону
Есть 2 емкости : кубическая с ребром Ф, цилиндрическая с высотой Н и радиусом R. Определить поместится ли жидкость объемом М в первую...

Задание по питону
Дана последовательность случайных чисел длиной n. Выбросить из ряда те элементы, значение которых равно a и b. Вывести полученное, а затем...

Питону не понравилось
import threading, time flag = True def proc(n): while flag==True: print(n) time.sleep(0.3) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
200
Закрытая тема Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru