Python: Problems and Solutions (Chapter 5 Lists and Dictionaries Hangman Game).


We continue to practice programming. After the fifth chapter in the book: Michael Dawson “Programming in Python”, 2014 (Michael Dawson “Python Programming for the Absolute Beginner”, 3rd Edition), where I learned how to make dictionaries and use lists, it’s time to move on to practice. Let’s do our homework together!

Task: Write a program that will display a list of words in random order. All words from the presented list should be printed on the screen without repetition.

SLOVA=['кот','медведь','миска','лобстер']
print('Есть писок слов:',SLOVA)
print('Эти слова в случайном порядке:')
import random
while SLOVA:
    slovo=random.choice(SLOVA)
    print(slovo)
    SLOVA.remove(slovo)

This is what the program looks like when you run it:

Есть писок слов: ['кот', 'медведь', 'миска', 'лобстер']
Эти слова в случайном порядке:
миска
лобстер
кот
медведь
>>> 

Task: Write a character generator program for a role-playing game. The user must be given 30 points, which can be divided among four characteristics: Strength, Health, Wisdom and Dexterity. It is necessary to make it so that the user can not only take these items from the general “pool”, but also return them there from the characteristics to which he decides to assign other values.

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)

The first solution turned out a little different than I wanted. But I haven’t come up with anything better for the night. While the program is running like this:

Генератор Персонажей Игры
У вас есть 30 зарядов.
      Их можно распределить на:
      1.сила
      2.ловкость
      3.мудрость
      4.здоровье
      
Напиши, какой навык изменить? сила
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 7
{'сила': 7, 'ловкость': '0', 'мудрость': '0', 'здоровье': '0'}
Напиши, какой навык изменить? мудрость
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 7
{'сила': 7, 'ловкость': '0', 'мудрость': 7, 'здоровье': '0'}
Напиши, какой навык изменить? здоровье
Добавить заряды (+) или удалить (-)? +
Сколько зарядов добавить? 30
{'сила': 7, 'ловкость': '0', 'мудрость': 7, 'здоровье': 30}
У вас больше нет доступных зарядов
{'сила': 7, 'ловкость': '0', 'мудрость': 7, 'здоровье': 30}
>>> 

The solution does not check the total sum of the assigned values, so it turned out that you can assign more than 30 charges, which does not meet the requirements of the problem.

And now, 3 days later, I wrote a new code, and I like it a lot more!

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

If you run the character stat generator, the program now works like this:

Генератор Персонажей Игры
У вас есть 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
>>>

Task: Write a program “Who is your dad?” in which the user will enter the name of a person, and the program will name the father of this person. To make it more interesting, you can “teach” the program about kinship among literary characters, historical figures and modern celebrities. Give the user the ability to add, replace, and remove SON-FATHER pairs.

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())

We start the program:

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
>>> 

Task: Refine the program “Who is your daddy?” so that it was possible, by entering the name of a person, to find out who his grandfather was. The program should still use the same vocabulary with son-father pairs. Consider how to include several generations in this vocabulary.

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])

The work of the program looks like this:

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
>>> 

 


This entry was posted in Python (en). Bookmark the permalink.

Leave a Reply

🇬🇧 Attention! Comments with URLs/email are not allowed.
🇷🇺 Комментарии со ссылками/email удаляются автоматически.