Найти - Пользователи
Полная версия: Замена числа. Есть функция?
Начало » Python для новичков » Замена числа. Есть функция?
1 2 3 4
jobsdata
FishHook
Пилите Шура - пилите Спасибо. Буду дальше мозг укреплять. Не подскажите от куда такие познания в Python? Что полезней всего почитать, посмотреть?
FishHook
jobsdata
Пилите Шура - пилите Спасибо. Буду дальше мозг укреплять. Не подскажите от куда такие познания в Python? Что полезней всего почитать, посмотреть?
http://python.su/forum/topic/28133/?page=1#post-151643
ayb
Есть еще 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]))
Originator
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 элементами среза но четко для себя не пойму.

ayb
А Вы попробуйте сделать вот так
"".join(cash[:4])

В данном случае нужно получить из списка чисел, список строк.
Originator
ayb
В данном случае нужно получить из списка чисел, список строк.
Т.е. преобразует последовательность числовую в строковый тип (литеры)?
py.user.next
Наверное, делает задачу “быки и коровы”, которая решена миллион раз на разных языках. :)
Originator
py.user.next
Наверное, делает задачу “быки и коровы”, которая решена миллион раз на разных языках.

Есть версия, может человек развивает экстрасенсорные способности, угадывает машинный рандом :-)
J.R.
.
FishHook
Тут нужны пояснения.
Во втором питоне функция 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, это только пример для понимания.


This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB