Описание игры «Захват Марса»

Предыстория

Военные операции по захвату Марса провалились. Потому что в распоряжении марсиан находится неограниченный ресурс боеспособных жителей. Поскольку марсиане это однополые существа, размножающиеся клонированием, их технологии позволяют им в короткое время создавать огромную боеспособную армию. В связи с этим на Земле было принято решение разработать невоенную стратегию захвата Марса. Читать далее

Урок 35 видеокурса «Ленивый питон». Функции в Питоне

Сегодня мы сделаем то, что сделать нужно было уже давно. Мы познакомимся с таким явлением как функции в Пайтоне.

Function in Python – функция в Пайтоне – так будет называться тема этого урока.

Если говорить по существу, функция это конструкция. Но если говорить _правильно_, функция это объект. Функцию в Пайтоне считают именно объектом.

Хотя, в этом и нет противоречия.

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

Кстати, именно с кофеваркой я и буду сравнивать функцию, чтобы понять, что оно такое – функция.

Представим себе современную кофеварку. Кофеварка это объект, который принимает от человека некий исходный материал — кофейное зерно или порошок молотого кофе. Также кофеварка принимает от человека воду, а из электросети – электричество.

Затем кофеварка производит определённые действия. И в итоге выдаёт человеку кофейный напиток.

Аналогично работает и функция в Пайтоне. Вместо кофейного зерна в функцию загружают так называемые «аргументы». А вместо кофейного напитка она выдаёт значение. Проведя ряд определённых действий, то есть операций.

Теперь – по порядку.

Чтобы сварить кофе, сначала нужно купить кофеварку. Или сконструировать её самостоятельно.

Точно так же, чтобы использовать функцию, сначала необходимо её сконструировать, создать.

Создание или объявление функции в Пайтоне начинается с использования словечка def. Def это сокращение от английского глагола define. А глагол define имеет значение «определить, задать, охарактеризовать, очертить, установить значние». К примеру, задать границы явления или определить понятие. По сути, можно сказать, что define значит «очертить границы явления» или даже «создать явление».

Итак, первое действие того, кто хочет создать функцию, будет выглядеть вот так.

def function_name( argument ):

Что в переводе на человеческий русский язык означает:

“Пайтон, создай мне функцию с названием function_name, которая получит от меня аргумент, который я назвал argument”. Дальше следует двоеточие, за которым указываются те операции, которые будут происходить внутри функции.

Это была модель. А реальное применение может выглядеть вот так:


def exponentiator(number):
    return number ** 2

Сначала мы задали функцию под названием exponentiator (возводящая в степень) и дали ей аргумент, который называется number, а затем мы совершили ещё один важный шаг.

В функциях традиционно используется ещё один английский глагол. Это глагол «возвращать» — return. При помощи глагола return мы инструктируем функцию, что именно она должна возращать.

Вы уже догадались, что будет делать наша функция exponentiator?

Она будет возводить полученный аргумент, который называется number, во вторую степень, т.е. в квадрат. И возвращать результат этого возведения.

Давайте проверим. Итак, мы запускаем этот код на выполнение.

Для этого нам нужно просто ввести название функции, указав значение аргумента функции. То есть вместо слова number необходимо подставить реальное число.

exponentiator(10)

Выполнение произошло, но результат не был выведен на экран. А чтобы увидеть результат выполнения, мы должны  воспользоваться выводом на экран, т.е. использовать предложение print().

print(exponentiator(10))

Мы можем поменять значение аргумента и выполнить функцию снова.

print(exponentiator(12))

И снова.

print(exponentiator(25))

Несмотря на то, что людям, не знакомым с темой функций, этот пример может показаться довольно сложным, на самом деле это была очень простая функция.

Дело в том, что функция может принимать неограниченное количество аргументов разного типа. Внутри функции также могут находиться очень разные по степени сложности конструкции.

Давайте рассмотрим немного более сложный пример.

Давайте высчитаем некую сумму налога по некоей прогрессивной шкале. Давайте представим, что для суммы до 1000 единиц, ставка налога составляет 10%, а для суммы от 1001 до 5000 единиц ставка налога составляет 15%. А в случае, если сумма превышает 5001 единицу, мы ставка составит уже 20%. Мы хотим создать такую функцию, которая будет принимать в качестве аргумента значение суммы  и выдавать сумму налога.

Объявляем функцию.


def taxcalc(number):
	if number <= 1000:     	
            tax = number * 0.1
        elif number >= 1001 and number <= 5000:
     	    tax = number * 0.15
        elif number > 5000:
            tax = number * 0.2
        return tax

И тестируем эту функцию


print (taxcalc(1000))
print (taxcalc(1100))
print (taxcalc(3000))
print (taxcalc(5000))
print (taxcalc(6000))

В следующих уроках мы продолжим изучение возможностей функций в Питоне.

Урок 34 видеокурса «Ленивый питон». Дополнительная информация по переменным, print, booleans.

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

Поработаем совсем немного с предложением print.

При помощи предложения print мы умеем выводить на экран значения переменных. В случае с математическими вычислениями это выглядело вот так:

a = 100 + 100

print(a)

Стоит обратить внимание на такую особенность. Если Вы заключите математическую операцию непосредственно в скобки предложения print, то на экран будет выведен результат операции. Конечно, если внутри скобок мы не заключим содержимое в кавычки.

Сравниваем.

print(100 * 100)

print(“100 * 100“)

Эту особенность можно использовать в следующих конструкциях:

print(“Сколько же будет 100 * 100“, 100 * 100)

Помните, мы изучали булевы операторы?

!=

<>

>

<

>=

<=

Это операторы, которые помогают сравнивать. Наиболее правильное понимание этих операторов – эти операторы – вопросы. Всякий раз, когда мы используем эти операторы в выражениях, мы словно задаём вопрос интерпретатору Пайтон. Мы словно спрашиваем Пайтон, например, в этом выражении:

2 >= 1

«Правда ли, что 2 больше или равно 1?»

Что в этом случае должен сделать каждый порядочный интерпретатор?

Правильно, он должен ответить.

Итак, зададим следующий вопрос: «Правда ли, что если умножить сто на сто, то результат будет большим или будет равен результату возведения ста в сотую степень?»

print(100 * 100 >= 100 ** 100)

Также. Ещё одно небольшое напоминание, не связанное с предложением print.

Символ % применяется для логической операции деления по модулю (деления с остатком) и  называется в данном случае по-английски словом modulus. К операциям с вычислениями процентов этот символ никакого отношения не имеет и используется для деления по модулю совершенно случайно.

Уточнение по приоритетности операций.

Чтобы запомнить порядок операций, который существует в Пайтоне, Вам нужно выучить одну аббревиатуру.

PEMDAS

Parentheses

Exponents

Multiplication

Division

Addition

Subtraction

При переводе на русский эта аббревиатура будет звучать так:

СЭУДСВ

Скобки

Экспоненты, степени

Умножение

Деление

Сложение

Вычитание

Ещё один вопрос, эстетический.

Как правильно писать:

a = 10

или

a=10

Технически оба варианта верны. Однако добавление пробелов вокруг переменных, операторов и других элементов кода было придумано исключительно для удобства людей. Поэтому – когда Вы пишете код красиво, Вы пишете его красиво для себя.

Также поступил вопрос: существует ли простое упражнение для анализа и запоминания сложного кода?

Такое упражнение существует. Следует прочитать код построчно сверху вниз, проанализировав содержание каждой строки. А затем – прочитать код построчно снизу вверх, проанализировав содержание каждой строки. Сделав так 3-5 раз в течение 2-3 дней, Вы достаточно хорошо запомните код.

Ещё один вопрос касался длины названий переменных. Иногда в названиях переменных нужно использовать сразу несколько слов. Чтобы обозначить сложное понятие. Например, myblackcar, mywhitecar, mydadscar, mymomscar, Известно, что в некоторых языках программирования используется так называемый camelCase или верблюжийРегистр. Когда несколько слов пишутся вместе, но каждое новое слово пишется с заглавной буквы. В Пайтоне в таких случаях существует традиция использовать подчёркивание (по-английски оно называется underscore). Т.е.  правильно писать названия переменных в Пайтоне так: my_black_car, my_white_car, my_dads_car, my_moms_car. И, начиная с этого урока, мы будем использовать подчеркивание.

Также был вопрос: можно ли использовать в названии переменных только буквы или цифры тоже допускаются. Цифры допускаются, но нельзя начинать название переменной с цифры.

Видео:

Урок 33 видеокурса «Ленивый питон». Добавление ключей в словари

Программные коды урока. Чтобы выполнить, скопируйте в редактор и запустите интерпретатор Python.

Код может быть разбит на  фрагменты, которые могут быть разделены комментариями. Многострочные комментарии начинаются и заканчиваются тройными кавычками. Чтобы код выполнялся, просто удалите кавычки (раскомментируйте).



firstnames = ['Anthony', 'Timothy', 'Bob', 'Sean', 'John', 'Ivan', 'Sergey', 'Peter', 'Anton', 'Nikolas', 'Armen']
lastnames = ['Smith', 'Parker', 'Conrad', 'Washington', 'Kennedy']

coordinatorset = {'role': 'coordinator', 'capacity': 1000000, 'fuelhrusage': 1, 'hardware': 0, 'hardwareusage': 0, 'hrdistance': 20, 'weapons': 'Yes', 'ammunition': 1000, 'ammunitionhrusage': 100}
infectorset = {'role': 'infector', 'capacity': 500000, 'fuelhrusage': 2, 'hardware': 1000, 'hardwareusage': 10, 'hrdistance': 15, 'weapons': 'No', 'ammunition': 0, 'ammunitionhrusage': 0}
soldierset = {'role': 'soldier', 'capacity': 500000, 'fuelhrusage': 2, 'hardware': 0, 'hardwareusage': 0, 'hrdistance': 20, 'weapons': 'Yes', 'ammunition': 2000, 'ammunitionhrusage': 200}
technicianset = {'role': 'technician', 'capacity': 500000, 'fuelhrusage': 3, 'hardware': 1000, 'hardwareusage': 20, 'hrdistance': 15, 'weapons': 'Yes', 'ammunition': 1000, 'ammunitionhrusage': 100}
scoutset = {'role': 'scout', 'capacity': 1000000, 'fuelhrusage': 2, 'hardware': 0, 'hardwareusage': 0, 'hrdistance': 30, 'weapons': 'Yes', 'ammunition': 1000, 'ammunitionhrusage': 100}
workerset = {'role': 'worker', 'capacity': 500000, 'fuelhrusage': 3, 'hardware': 1500, 'hardwareusage': 40, 'hrdistance': 10, 'weapons': 'No', 'ammunition': 0, 'ammunitionhrusage': 0}

fsets = [coordinatorset, infectorset, soldierset, technicianset, scoutset, workerset]

i = 0
b = 0

for item in lastnames:
    c = 0
    for item in firstnames:
        tempdict = {'alias': firstnames[i] + lastnames[b], 'firstname': firstnames[i], 'familyname': lastnames[b]}
        if tempdict['firstname'] == 'Anthony':
            tempdict.update(coordinatorset)
        elif tempdict['firstname'] != 'Anthony' and c < len(fsets)-1:             tempdict.update(fsets[c])         elif tempdict['firstname'] != 'Anthony' and c == len(fsets)-1:             tempdict.update(fsets[c])             c = 0         file = open(lastnames[b] + ".txt", 'a')         file.write(str(tempdict) + '\n')         file.close()         temporarydict = {}         i = i + 1         c = c + 1     if i >= len(firstnames):
        file = open("Families.txt", 'a')
        file.write(lastnames[b] + '\n')
        file.close()
        b = b + 1
        i = 0

Видео:

Урок 32 видеокурса «Ленивый питон». Версия генератора, сохраняющая данные в виде словарей

Программные коды урока. Чтобы выполнить, скопируйте в редактор и запустите интерпретатор Python.

Код может быть разбит на  фрагменты, которые могут быть разделены комментариями. Многострочные комментарии начинаются и заканчиваются тройными кавычками. Чтобы код выполнялся, просто удалите кавычки (раскомментируйте).


firstnames = ['Anthony', 'Timothy', 'Bob', 'Sean', 'John']
lastnames = ['Smith', 'Parker', 'Conrad', 'Washington', 'Kennedy']
tempdict = {}
i = 0
b = 0
for item in lastnames:
    for item in firstnames:
        tempdict = {'alias': firstnames[i] + lastnames[b], 'firstname': firstnames[i], 'familyname': lastnames[b]}
        file = open(lastnames[b] + ".txt", 'a')
        file.write(str(tempdict) + '\n')
        file.close()
        temporarydict = {}
        i = i + 1
    if i >= len(firstnames):
        file = open("Families.txt", 'a')
        file.write(lastnames[b] + '\n')
        file.close()
        b = b + 1
        i = 0

Видео:

Урок 31 видеокурса «Ленивый питон». Словари в списке, словари в словарях

Программные коды урока. Чтобы выполнить, скопируйте в редактор и запустите интерпретатор Python.

Код разбит на  фрагменты, которые разделены комментариями. Комментарии начинаются и заканчиваются тройными кавычками. Чтобы код выполнялся, просто удалите кавычки (раскомментируйте).



# Double key (double index)
# Двойной ключ (двойной индекс)


"""
AnthonySmith = {'alias': 'AnthonySmith', 'firstname': 'Anthony', 'familyname': 'Smith', 'function': 'Coordinator', 'fuelcapacity': 1000000, 'fuelusagehr': 1}

print(AnthonySmith)

"""


"""

AnthonySmith = {'alias': 'AnthonySmith',
'name': {'first': 'Anthony', 'family': 'Smith'},
'function': 'Coordinator',
'fuel': {'capacity': 1000000, 'usageperhour': 1}}

print(AnthonySmith)

name = AnthonySmith['name']
print(name)

firstname = AnthonySmith['name']['first']
print(firstname)

family = AnthonySmith['name']['family']
print(family)




BobSmith = {'alias': 'BobSmith',
'name': {'first': 'Bob', 'family': 'Smith'},
'function': 'Infector',
'fuel': {'capacity': 500000, 'usageperhour': 2}}


BillSmith = {'alias': 'BillSmith',
'name': {'first': 'Bill', 'family': 'Smith'},
'function': 'Soldier',
'fuel': {'capacity': 500000, 'usageperhour': 2}}

brigade = [AnthonySmith, BobSmith, BillSmith]
print(brigade)


"""



# Increase fuel reserve by two times for all the cyborgs in brigade
# Увеличить в два раза запас топлива для всех киборгов в бригаде

"""
AnthonySmith = {'alias': 'AnthonySmith',
'name': {'first': 'Anthony', 'family': 'Smith'},
'function': 'Coordinator',
'fuel': {'capacity': 1000000, 'usageperhour': 1}}

BobSmith = {'alias': 'BobSmith',
'name': {'first': 'Bob', 'family': 'Smith'},
'function': 'Infector',
'fuel': {'capacity': 500000, 'usageperhour': 2}}

BillSmith = {'alias': 'BillSmith',
'name': {'first': 'Bill', 'family': 'Smith'},
'function': 'Soldier',
'fuel': {'capacity': 500000, 'usageperhour': 2}}

brigade = [AnthonySmith, BobSmith, BillSmith]
print(brigade)

for cyborg in brigade:
    #cyborg['fuel']['capacity'] = cyborg['fuel']['capacity'] * 2
    cyborg['fuel']['capacity'] *= 2
print(brigade)

"""

# Increase fuel reserve by three times for the cyborg with the first name Anthony
# Увеличить в три раза запас топлива для киборга, которого зовут Энтони
"""

AnthonySmith = {'alias': 'AnthonySmith',
'name': {'first': 'Anthony', 'family': 'Smith'},
'function': 'Coordinator',
'fuel': {'capacity': 1000000, 'usageperhour': 1}}

BobSmith = {'alias': 'BobSmith',
'name': {'first': 'Bob', 'family': 'Smith'},
'function': 'Infector',
'fuel': {'capacity': 500000, 'usageperhour': 2}}

BillSmith = {'alias': 'BillSmith',
'name': {'first': 'Bill', 'family': 'Smith'},
'function': 'Soldier',
'fuel': {'capacity': 500000, 'usageperhour': 2}}

brigade = [AnthonySmith, BobSmith, BillSmith]
#print(brigade)


for cyborg in brigade:
    if cyborg['name']['first'] == 'Anthony':
        cyborg['fuel']['capacity'] = cyborg['fuel']['capacity'] * 3
print(brigade)

"""


# Deleting elements from dictionary
# Удаление элементов из словаря

# In case with a simple dictionary
# В случае с простым словарем
"""

AnthonySmith = {'alias': 'AnthonySmith', 'firstname': 'Anthony', 'familyname': 'Smith', 'function': 'Coordinator', 'fuelcapacity': 1000000, 'fuelusagehr': 1}
print(AnthonySmith)

del AnthonySmith['fuelcapacity']
print(AnthonySmith)

"""


# Deleting elements from dictionary
# Удаление элементов из словаря

# In case with embedded dictionaries
# В случае со вложенными словарями

"""
AnthonySmith = {'alias': 'AnthonySmith',
'name': {'first': 'Anthony', 'family': 'Smith'},
'function': 'Coordinator',
'fuel': {'capacity': 1000000, 'usageperhour': 1}}

print(AnthonySmith)

del AnthonySmith['fuel']['capacity']
print(AnthonySmith)
"""


# In case with embedded dictionaries inside the list
# В случае с вложенными словарями внутри списка

"""
AnthonySmith = {'alias': 'AnthonySmith',
'name': {'first': 'Anthony', 'family': 'Smith'},
'function': 'Coordinator',
'fuel': {'capacity': 1000000, 'usageperhour': 1}}

BobSmith = {'alias': 'BobSmith',
'name': {'first': 'Bob', 'family': 'Smith'},
'function': 'Infector',
'fuel': {'capacity': 500000, 'usageperhour': 2}}

BillSmith = {'alias': 'BillSmith',
'name': {'first': 'Bill', 'family': 'Smith'},
'function': 'Soldier',
'fuel': {'capacity': 500000, 'usageperhour': 2}}

brigade = [AnthonySmith, BobSmith, BillSmith]
print(brigade)

for cyborg in brigade:
    del cyborg['fuel']['capacity']

print(brigade)
"""


Видеозапись урока:

Урок 29 из видеокурса «Ленивый питон». Изучаем словари (dictionaries)

В двадцать девятом уроке мы продолжили работу над применением словарей, рассмотрев многие интересные моменты. Мы познакомились с рядом новых для нас методов, применимых со словарями. Смотрите ниже.



# Связываем страны со столицами
asia = {
    'Azerbaijan': 'Baku',
    'Armenia': 'Yerevan',
    'Afghanistan': 'Kabul'
    }


# Связываем столицы с данными о населении
population = {
    'Baku': 2137000,
    'Yerevan': 1060000,
    'Kabul': 3000000
    }


#Новый метод:
#очистка словаря
#dict.clear() 

#Применение метода
print('+' * 5)
population.clear()
print(population)


#Новый метод:
# .copy - создание копии словаря
# dict.copy()

print('+' * 5)
countriesofasia = asia.copy()
print(asia)
print(countriesofasia)


#Новый метод:
# .keys - извлечение только ключей из словаря
# dict.keys()
print('+' * 5)
#print(asia.keys())

asiaclone = asia.keys()
print(asiaclone)


#Новый метод:
# .values - извлечение только значений из словаря
# dict.values()
print('+' * 5)
#print(asia.values())

asiavalues = asia.values()
print(asiavalues)

"""


#Новый метод:
# .get - извлечение пар ключ-знаение, возможность выполнения действий в случае, если пары ключ-значение отсутствуют

print('+' * 5)
countryone = asia.get('Azerbaijan')
print(countryone)

countryone = asia.get('Tokyo')
print(countryone)


# Использование метода .get с оператором 'if'

print( '+' * 5)
country = asia.get('Armenia')

# Условие на случай, если такой страны в словаре нет:
if not country:
    print( "Sorry, no info about this country.")

if country:
    print(country)





#Добавляем списки в качестве значений - такое решение не всегда идеально
# dict = {'key': [value, value, value], 'key2': [value, value, value]}
print('+' * 5)
citiesoffrance = {'city': ['Paris', 'Marseille', 'Lyon'], 'population': ['3M', '2M', '1M']}
#print(citiesoffrance)


#или
print(citiesoffrance['city'][0])
print(citiesoffrance['population'][0])


#или
print('+' * 5)
print(citiesoffrance['city'][0], citiesoffrance['population'][0])


# А вот почему включать списки в словари это не всегда хорошая мысль.
print( '+' * 5)
for city, population in citiesoffrance.items():
    print( "%s has the population of %s" % (city, population))



# Такое решение было бы куда лучше
citiesoffrance = {'Paris': '3M', 'Marseille': '2M', 'Lyon':'1M'}
for city, population in citiesoffrance.items():
    print( "%s has the population of %s" % (city, population))


Видеозапись:

Урок 28 из видеокурса «Ленивый питон». Изучаем словари (dictionaries)

В этом уроке мы продолжили изучать примеры использования словарей. Традиционно, ниже в тексте ты найдешь и видеозапись урока, и коды, в нем использованные.


# Связываем страны со столицами
asia = {
    'Azerbaijan': 'Baku',
    'Armenia': 'Yerevan',
    'Afghanistan': 'Kabul'
    }


# Связываем столицы с данными о населении
population = {
             'Baku': 2137000,
             'Yerevan': 1060000,
             'Kabul': 3000000
}

# Добавляем ещё данных о населении (столиц Бангладеш или Бахрейна)
population['Dhaka'] = 18000000
population['Manama'] = 157000

# Выводим на экран информацию о населении
print('+' * 5)
print("Baku has the population of:", population['Baku'])
print("Yerevan has the population of:", population['Yerevan'])

# Выводим на экран информацию о столицах
print('+' * 5)
print("Azerbaijan's capital is:", asia['Azerbaijan'])
print("Armenia's capital is:", asia['Armenia'])

# Выводим на экран информацию о столицах без упоминания названий столиц
print( '+' * 5)
print( "Azerbaijan's capital has the population of: ", population[asia['Azerbaijan']])
print( "Armenia's capital has the population of: ", population[asia['Armenia']])

# Используем метод dict.items()
#dict.items()
#%s

# Выводим на экран информацию о каждой столице из словаря
print( '+' * 5)
for country, capital in asia.items():
    # print( "%s has %s" % (country, capital))
    print( "%s's capital is %s" % (country, capital))

# Выводим на экран данные о населении каждой столицы из списка
print( '+' * 5)
for capital, number in population.items():
    print( "%s has the population of %s" % (capital, number))

# Выводим на экран оба фрагмента одновременно
print('+' * 5)
for country, capital in asia.items():
    print( "%s has the capital of %s with the population of %s" % (country, capital, population[capital]))

Урок 27 из видеокурса «Ленивый питон». Изучаем словари в Пайтоне (dictionaries)

В этом уроке мы начали изучение таких хранилищ данных как словари. По-английски они называются dictionaries. Понятие «словарь» не ограничивает возможности хранения данных словами. Дело в том, что словарь по определению это неупорядоченная последовательность произвольных (т.е. без разницы одного типа или разных типов) данных с возможностью вызова по ключу.

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

 

 



# Модель. Как объявить пустой словарь.
d = {}

# Модель. Как объявить словарь с содержанием.
d = {'key': value, 'nextkey': value, 'anotherkey': value}

# Применение. Как объявить словарь с содержанием.
d = {'alias': 'JohnSmith', 'firstname': 'John', 'familyname': 'Smith'}
print(d)

# Модель. Как объявить словарь с использованием функции dict.
d = dict(key=value, nextkey=value, anotherkey=value)

# Применение. Как объявить словарь с использованием функции dict.
d = dict(alias='JohnSmith', firstname='John', familyname='John')
print(d)

# Ещё один пример применения. Как объявить словарь с использованием функции dict.
d = dict.fromkeys(['key', 'nextkey', 'anotherkey'])

# Ещё один пример применения. Как объявить словарь с использованием функции dict.
d = dict.fromkeys(['alias', 'firstname', 'familyname'])
print(d)

# Модель. Наполнение словаря при помощи цикла for.
d = {key: value for expression}

# Применение. Наполнение словаря при помощи цикла for.
d = {a: 'abc' for a in range(5)}
print(d)

# Применение. Наполнение словаря при помощи цикла for.
d = {anykey: 10 for anykey in range(5)}
print(d)

# Применение. Наполнение словаря при помощи цикла for.
d = {a: a + 1 for a in range(5)}
print(d)

# Применение. Наполнение словаря при помощи цикла for.
d = {a: a + a for a in range(10)}
print(d)

# Применение. Наполнение словаря при помощи цикла for.
d = {a: a - 1 for a in range(5)}
print(d)

# Применение. Наполнение словаря при помощи цикла for.
d = {a: a - a for a in range(5)}
print(d)

# Применение. Наполнение словаря при помощи цикла for.
d = {a: a ** 2 for a in range(5)}
print(d)

# Применение. Наполнение словаря при помощи цикла for.
d = {a: a / 2 for a in range(5)}
print(d)

# Модель. Добавление нового ключа и значения в словарь.
#d[key] = value

# Применение. Добавление нового ключа и значения в словарь.
d = {0: 1, 1: 2, 2:3, 3:4, 4:5}
d[5] = 6

# Модель. Добавление словаря в словарь.
dictionary.update(otherdictionary)

# Применение. Добавление словаря в словарь.
dd = {6:7, 7:8}
d.update(dd)

ddd = {a: a + 1 for a in range(8, 15)}
d.update(ddd)

print(d)

Урок 26 из видеокурса «Ленивый питон». Генератор списков с записью в файлы

В этом уроке мы завершили создание первой версии генератора сочетаний имя+фамилия. Такие сочетания нам нужны для игры «Захват Марса», над которой мы работаем в рамках этого курса.

Этот генератор создает в той директории, где находится скрипт с программным кодом следующие файлы:

families.txt

Smith.txt, Parker.txt, Conrad.txt, Washington.txt, Kennedy.txt


firstnames = ['Anthony', 'Timothy', 'Bob', 'Sean', 'John']
lastnames = ['Smith', 'Parker', 'Conrad', 'Washington', 'Kennedy']
temporarylist = []
i = 0
b = 0
c = 0
for item in lastnames:
    for item in firstnames:
        temporarylist.insert(c, firstnames[i] + lastnames[b])
        i = i + 1
        c = c + 1
    if i > len(firstnames) - 1:

        # New block 1. Now writing current family name to Families.txt
        file = open("Families.txt", 'a')
        file.write(lastnames[b] + '\n')
        file.close()

        # New block 2. Now writing chain of cyborg-names to Smith.txt, Parker.txt etc.
        print(lastnames[b], ' = ', temporarylist)
        file = open(lastnames[b] + ".txt", 'w')
        temporarylist = str(temporarylist)
        file.write(temporarylist)
        temporarylist = []
        file.close()

        b = b + 1
        i = 0
        c = 0

Видеозапись урока:

Изучаем Питон. Урок 25 из видеокурса «Ленивый питон». Работа с файлами, режимы записи в файлы, режимы открытия файлов

В этом уроке мы сосредоточили внимание на операциях с файлами. Мы открыли для себя, что сущность, создаваемая для работы с файлом называется файловы объектом (file object).

 

Мы ознакомились с моделью файлового объекта:


file object = open(file_name [, access_mode][, buffering])

 

Мы ознакомились с таблицей, содержащей список режима работы с файлом:


Mode  Read? Write? Overwrites  Creates new file 
                   existing    if file does not
                   file?       exist?

r       Y     N      N            N               
rb      Y     N      N            N               

r+      Y     Y      N            N               
rb+     Y     Y      N            N               

w       N     Y      Y            Y               
wb      N     Y      Y            Y               

w+      Y     Y      Y            Y               
wb+     Y     Y      Y            Y               

a       N     Y      N            Y               
ab      N     Y      N            Y               

a+      Y     Y      N            Y               
ab+     Y     Y      N            Y               

 

Мы поработали с таким программным кодом:


workfile = open('Superfile.txt', 'a')
workfile.write("This is my first line")
workfile.write("\n")
workfile.write("This is my second line")
workfile.close()
print('Done')

 

Видеозапись урока: