Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 15, 2015 19:52:18

jobsdata
Зарегистрирован: 2015-09-15
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Замена числа. Есть функция?

FishHook
Пилите Шура - пилите Спасибо. Буду дальше мозг укреплять. Не подскажите от куда такие познания в Python? Что полезней всего почитать, посмотреть?

Офлайн

#2 Сен. 15, 2015 19:55:36

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Замена числа. Есть функция?

jobsdata
Пилите Шура - пилите Спасибо. Буду дальше мозг укреплять. Не подскажите от куда такие познания в Python? Что полезней всего почитать, посмотреть?
http://python.su/forum/topic/28133/?page=1#post-151643



Офлайн

#3 Сен. 15, 2015 20:08:33

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Замена числа. Есть функция?

Есть еще random.sample.

"".join(map(str, sample(range(9), 4)))

То есть если выпало число 4521, ввели 4831, совпало два числа, получить кол-во совпавших чисел?

from random import sample
generated = "".join(map(str, sample(range(9), 4)))
print(generated)
user_input = input()
print(len([x for x in user_input if x in generated
           and len(user_input) == 4]))

Отредактировано ayb (Сен. 15, 2015 20:17:01)

Офлайн

#4 Сен. 15, 2015 21:27:47

Originator
От: Харьков, Украина
Зарегистрирован: 2015-08-01
Сообщения: 29
Репутация: +  1  -
Профиль   Отправить e-mail  

Замена числа. Есть функция?

FishHook
Уж больно сложен и одновременно прост и красив способ вами предложенный. Заинтересовал, пытаюсь понять его, если не затруднит - проверьте мои рассуждения кода

1 import random
2 cash = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3 random.shuffle(cash)
4 print("".join(map(str, cash[:4])))
C import и cash понятно.
Метод shuffle перемешивает содержимое списка (т.е. список имеет в данный момент иной порядок).
А вот print выводит 4 числа взятых срезом cash, которые пока как список у нас, map передает всю последовательность методу join который все “склеивает” с разделителем указанным в вызывающей строке (т.е. пустым местом “”).
Если честно, не совсем понимаю присутствие str, как бы догадываюсь что связано с 4 элементами среза но четко для себя не пойму.

Отредактировано Originator (Сен. 15, 2015 21:29:18)

Офлайн

#5 Сен. 15, 2015 22:15:00

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Замена числа. Есть функция?

А Вы попробуйте сделать вот так

"".join(cash[:4])

В данном случае нужно получить из списка чисел, список строк.

Офлайн

#6 Сен. 15, 2015 22:35:07

Originator
От: Харьков, Украина
Зарегистрирован: 2015-08-01
Сообщения: 29
Репутация: +  1  -
Профиль   Отправить e-mail  

Замена числа. Есть функция?

ayb
В данном случае нужно получить из списка чисел, список строк.
Т.е. преобразует последовательность числовую в строковый тип (литеры)?

Офлайн

#7 Сен. 16, 2015 01:59:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Замена числа. Есть функция?

Наверное, делает задачу “быки и коровы”, которая решена миллион раз на разных языках. :)



Офлайн

#8 Сен. 16, 2015 07:06:37

Originator
От: Харьков, Украина
Зарегистрирован: 2015-08-01
Сообщения: 29
Репутация: +  1  -
Профиль   Отправить e-mail  

Замена числа. Есть функция?

py.user.next
Наверное, делает задачу “быки и коровы”, которая решена миллион раз на разных языках.

Есть версия, может человек развивает экстрасенсорные способности, угадывает машинный рандом :-)

Офлайн

#9 Сен. 16, 2015 09:13:09

J.R.
Зарегистрирован: 2015-07-18
Сообщения: 147
Репутация: +  16  -
Профиль  

Замена числа. Есть функция?

.

Отредактировано J.R. (Фев. 27, 2016 15:49:58)

Офлайн

#10 Сен. 16, 2015 10:23:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Замена числа. Есть функция?

Тут нужны пояснения.
Во втором питоне функция map возвращает список. То есть выполняя вот такой код

def predicate(i):
    return i * i
lst = map(predicate, [1, 2, 3, 4])
мы получим список квадратов чисел 1, 2, 3, 4 - для каждого элемента будет вызвана функция predicate, возвращающая квадрат числа.
Но в третьем питоне всё немного сложнее. Мы не получим список, мы получим итератор.
В питоне есть четыре базовых типов коллекций: кортеж (tuple), список (list), словарь (dict) и множество (set).
Коллекции в том или ином виде хранят наборы каких-то объектов (элементов). У коллекции всегда есть размер - текущее количество объектов в коллекции. Мы можем сделать перебор коллекции, пройдя по всем её элементам и выполнять какие-то специфические для коллекции действия: отсортировать элементы, добавить, удалить и т.д.

Итератор - это такая специальная языковая конструкция, по которой так же можно произвести перебор элементов, но она не хранит весь набор и вообще этот набор может быть бесконечным. В отличие от коллекций, итераторы генерируют каждое следующее значение на каждом витке цикла.
Например, нам нужна последовательность чисел от одного до n . Она у нас может использоваться как список, то есть мы планируем извлекать элементы по их порядковому номеру, отсортировать список по какому-то критерию, отфильтровать (например убрать простые числа) и так далее. Но в другой задаче нам все эти действия не нужны, мы хотим просто пройти по числовой прямой и список нам не нужен, нам нет нужды хранить в памяти миллион чисел, нам достаточно итератора.

def vector():
    i = 0
    while True:
        yield i
        i += 1    

теперь если мы можем сделать так
for j in vector():
    .....


ПС: не стоит в своем коде писать такую функцию, потому что в питоне есть range, это только пример для понимания.




Отредактировано FishHook (Сен. 16, 2015 10:27:20)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version