Продолжаем практиковаться в программировании. После пятой главы в книге: Майкл Доусон “Программируем на Python”, 2014 (Michael Dawson “Python Programming for the Absolute Beginner”, 3rd Edition), где я научилась делать словари и пользоваться списками, пора переходить к практике. Сделаем домашнее задание вместе!
Задача: Создайте программу, которая будет выводить список слов в случайном порядке. На экране должны печататься без повторений все слова из представленного списка.
SLOVA=['кот','медведь','миска','лобстер']
print('Есть писок слов:',SLOVA)
print('Эти слова в случайном порядке:')
import random
while SLOVA:
slovo=random.choice(SLOVA)
print(slovo)
SLOVA.remove(slovo)Так выглядит программа, когда ее запускаешь:
Есть писок слов: ['кот', 'медведь', 'миска', 'лобстер'] Эти слова в случайном порядке: миска лобстер кот медведь >>>
Задача: Напишите программу «Генератор персонажей» для ролевой игры. Пользователю должно быть предоставлено 30 пунктов, которые можно распределить между четырьмя характеристиками: Сила, Здоровье, Мудрость и Ловкость. Надо сделать так, чтобы пользователь мог не только брать эти пункты из общего «пула», но и возвращать их туда из характеристик, которым он решит присвоить другие значения.
print('Генератор Персонажей Игры')
print('''У вас есть 30 зарядов.
Их можно распределить на:
1.сила
2.ловкость
3.мудрость
4.здоровье
''')
zaryad=30
skill={'сила':'0',
'ловкость':'0',
'мудрость':'0',
'здоровье':'0'}
while zaryad>0:
navik=input('Напиши, какой навык изменить? ')
kak_izmenit=input('Добавить заряды (+) или удалить (-)? ')
if kak_izmenit=='+':
zaryad_add=int(input('Сколько зарядов добавить? '))
skill[navik]=zaryad_add
zaryad-=zaryad_add
print(skill)
elif kak_izmenit=='-':
zaryad+=skill[navik]
skill[navik]=0
print(skill)
print('У вас больше нет доступных зарядов')
print(skill)
Первый вариант решения получился немного не таким, как я хотела. Но на ночь глядя ничего лучше я пока не придумала. Пока программа работает так:
Генератор Персонажей Игры
У вас есть 30 зарядов.
Их можно распределить на:
1.сила
2.ловкость
3.мудрость
4.здоровье
Напиши, какой навык изменить? сила
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 7
{'сила': 7, 'ловкость': '0', 'мудрость': '0', 'здоровье': '0'}
Напиши, какой навык изменить? мудрость
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 7
{'сила': 7, 'ловкость': '0', 'мудрость': 7, 'здоровье': '0'}
Напиши, какой навык изменить? здоровье
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 30
{'сила': 7, 'ловкость': '0', 'мудрость': 7, 'здоровье': 30}
У вас больше нет доступных зарядов
{'сила': 7, 'ловкость': '0', 'мудрость': 7, 'здоровье': 30}
>>>
Решение не проверяет общую сумму присвоенных значений, так что у меня получилось, что можно присвоить больше 30 зарядов, что не соответствует условиям задачи.
И вот спустя 3 дня я написала новый код, и он мне нравится намного больше!
print('Генератор Персонажей Игры')
print('''У вас есть 30 зарядов.
Их можно распределить на:
1.сила
2.ловкость
3.мудрость
4.здоровье
''')
zaryad=30
skill={'сила':'0',
'ловкость':'0',
'мудрость':'0',
'здоровье':'0'}
zaryad_add=0
izmenit='1'
while izmenit =='1':
while zaryad>0:
navik=input('Напиши, какой навык изменить? ')
kak_izmenit=input('Добавить заряды (+) или удалить (-)? ')
if kak_izmenit=='+':
zaryad_add=int(input('Сколько зарядов добавить? '))
if zaryad-zaryad_add>=0:
zaryad-=zaryad_add
new_skill=int(skill[navik])+zaryad_add
skill[navik]=new_skill
print(skill)
else:
print('У вас всего 30 зарядов!')
print(skill)
elif kak_izmenit=='-':
zaryad+=skill[navik]
skill[navik]=0
print(skill)
print('У вас всего 30 зарядов!')
izmenit=input('''Хотите перераспределить заряды?
1 - Да!
2 - Нет. Оставить как есть и выйти.
''')
if izmenit =='1':
zaryad+=skill[navik]
skill[navik]=0
print(skill)
continue
Если запустить генератор статов персонажа, программа теперь работает так:
Генератор Персонажей Игры
У вас есть 30 зарядов.
Их можно распределить на:
1.сила
2.ловкость
3.мудрость
4.здоровье
Напиши, какой навык изменить? сила
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 1
{'сила': 1, 'ловкость': '0', 'мудрость': '0', 'здоровье': '0'}
Напиши, какой навык изменить? сила
Добавить заряды (+) или удалить (-)? 29
Напиши, какой навык изменить? сила
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 29
{'сила': 30, 'ловкость': '0', 'мудрость': '0', 'здоровье': '0'}
У вас всего 30 зарядов!
Хотите перераспределить заряды?
1 - Да!
2 - Нет. Оставить как есть и выйти.
1
{'сила': 0, 'ловкость': '0', 'мудрость': '0', 'здоровье': '0'}
Напиши, какой навык изменить? сила
Добавить заряды (+) или удалить (-)? -
{'сила': 0, 'ловкость': '0', 'мудрость': '0', 'здоровье': '0'}
Напиши, какой навык изменить? сила
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 30
{'сила': 30, 'ловкость': '0', 'мудрость': '0', 'здоровье': '0'}
У вас всего 30 зарядов!
Хотите перераспределить заряды?
1 - Да!
2 - Нет. Оставить как есть и выйти.
1
{'сила': 0, 'ловкость': '0', 'мудрость': '0', 'здоровье': '0'}
Напиши, какой навык изменить? ловкость
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 15
{'сила': 0, 'ловкость': 15, 'мудрость': '0', 'здоровье': '0'}
Напиши, какой навык изменить? сила
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 15
{'сила': 15, 'ловкость': 15, 'мудрость': '0', 'здоровье': '0'}
У вас всего 30 зарядов!
Хотите перераспределить заряды?
1 - Да!
2 - Нет. Оставить как есть и выйти.
1
{'сила': 0, 'ловкость': 15, 'мудрость': '0', 'здоровье': '0'}
Напиши, какой навык изменить? ловкость
Добавить заряды (+) или удалить (-)? -
{'сила': 0, 'ловкость': 0, 'мудрость': '0', 'здоровье': '0'}
Напиши, какой навык изменить?
Добавить заряды (+) или удалить (-)?
Напиши, какой навык изменить? сила
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 30
{'сила': 30, 'ловкость': 0, 'мудрость': '0', 'здоровье': '0'}
У вас всего 30 зарядов!
Хотите перераспределить заряды?
1 - Да!
2 - Нет. Оставить как есть и выйти.
2
>>>
Задача: Напишите программу «Кто твой папа?», в которой пользователь будет вводить имя человека, а программа – называть отца этого человека. Чтобы было интереснее, можно «научить» программу родственным отношениям среди литературных персонажей, исторических лиц и современных знаменитостей. Предоставьте пользователю возможность добавлять, заменять и удалять пары «СЫН – отец».
pari={'Кот':'Медведь',
'Бася':'Бурка',
'Жбоня':'Булочка'}
print(pari.keys())
vibor=0
while vibor != '4':
vibor=input('''1. Узнать пару.
2. Добавить свою пару.
3. Удалить пару из программы.
4. Выйти.
''')
if vibor == '1':
para=input('Для кого узнать пару? ')
print(para,'и', pari[para])
elif vibor == '2':
kluch=input('Введите имя: ')
para=input('Введите имя пары: ')
pari[kluch]=para
print(pari.keys())
elif vibor == '3':
kluch_del=input('Введите имя, чтобы удалить пару: ')
del pari[kluch_del]
print(pari.keys())
Запускаем программу:
dict_keys(['Кот', 'Бася', 'Жбоня']) 1. Узнать пару. 2. Добавить свою пару. 3. Удалить пару из программы. 4. Выйти. 1 Для кого узнать пару? Бася Бася и Бурка 1. Узнать пару. 2. Добавить свою пару. 3. Удалить пару из программы. 4. Выйти. 2 Введите имя: Хвост Введите имя пары: Пузико dict_keys(['Кот', 'Бася', 'Жбоня', 'Хвост']) 1. Узнать пару. 2. Добавить свою пару. 3. Удалить пару из программы. 4. Выйти. 3 Введите имя, чтобы удалить пару: Бася dict_keys(['Кот', 'Жбоня', 'Хвост']) 1. Узнать пару. 2. Добавить свою пару. 3. Удалить пару из программы. 4. Выйти. 4 >>>
Задача: Доработайте программу «Кто твой папа?» так, чтобы можно было, введя имя человека, узнать, кто его дед. Программа должна по-прежнему пользоваться одним словарем с парами «сын – отец». Подумайте, как включить в этот словарь несколько поколений.
pari={'Кот':['Медведь','Барсук'],
'Бася':['Бурка','Бургамистр'],
'Жбоня':['Булочка','Брыся']}
print(pari.keys())
vibor=0
while vibor != '5':
vibor=input('''1. Узнать пару.
2. Добавить свою пару.
3. Удалить пару из программы.
4. Узнать, кто еще ест из его миски.
5. Выйти.
''')
if vibor == '1':
para=input('Для кого узнать пару? ')
print(para,'и', pari[para][0])
elif vibor == '2':
kluch=input('Введите имя: ')
para=input('Введите имя пары: ')
pari[kluch]=para
print(pari.keys())
elif vibor == '3':
kluch_del=input('Введите имя, чтобы удалить пару: ')
del pari[kluch_del]
print(pari.keys())
elif vibor == '4':
kto_est=input('Введите имя, чтобы узнать кто еще
ест из его миски: ')
print('Хотя ', kto_est,'и', pari[kto_est][0],'пара,',
'но из их миски подъедает',pari[kto_est][1])
Работа программы выглядит так:
dict_keys(['Кот', 'Бася', 'Жбоня']) 1. Узнать пару. 2. Добавить свою пару. 3. Удалить пару из программы. 4. Узнать, кто еще ест из его миски. 5. Выйти. 1 Для кого узнать пару? Бася Бася и Бурка 1. Узнать пару. 2. Добавить свою пару. 3. Удалить пару из программы. 4. Узнать, кто еще ест из его миски. 5. Выйти. 2 Введите имя: Хвост Введите имя пары: Пузико dict_keys(['Кот', 'Бася', 'Жбоня', 'Хвост']) 1. Узнать пару. 2. Добавить свою пару. 3. Удалить пару из программы. 4. Узнать, кто еще ест из его миски. 5. Выйти. 3 Введите имя, чтобы удалить пару: Бася dict_keys(['Кот', 'Жбоня', 'Хвост']) 1. Узнать пару. 2. Добавить свою пару. 3. Удалить пару из программы. 4. Узнать, кто еще ест из его миски. 5. Выйти. 4 Введите имя, чтобы узнать кто еще ест из его миски: Жбоня Хотя Жбоня и Булочка пара, но из их миски подъедает Брыся 1. Узнать пару. 2. Добавить свою пару. 3. Удалить пару из программы. 4. Узнать, кто еще ест из его миски. 5. Выйти. 5 >>>