Python: Задачи и решения (Глава 4. Циклы с оператором for, строки и кортежи. Игра “Анаграммы”).

Продолжаем практиковаться в программировании. После четвертой главы в книге: Майкл Доусон “Программируем на Python”, 2014 (Michael Dawson “Python Programming for the Absolute Beginner”, 3rd Edition), где я научилась пользоваться оператором for и создавать кортежи, предложены задания. Давайте делать их вместе. Я приведу свой вариант решения, а вы пишите ваши варианты в комментариях.

1. Напишите программу “Считалка”, которая бы считала по просьбе пользователя. Надо позволить пользователю ввести начало и конец счета, а также интервал между называемыми целыми числами.

nachano_scheta=int(input('Введите начало счета\n'))
konec_scheta=int(input('Введите конец счета\n'))
interval=int(input('Введите интервал счета\n'))
for i in range (nachano_scheta, konec_scheta, interval):
    print(i)

Пока я пыталась написать эту программу через while и for, я совсем забыла про функцию range(). Ну а когда вспомнила, то все оказалось намного проще. Вот так работает программа:

Введите начало счета
2
Введите конец счета
19
Введите интервал счета
4
2
6
10
14
18
>>> 

2. Напишите программу “Перевертыш”, которая принимала бы текст из пользовательского ввода и печатала этот текст на экране наоборот.

text=input('Введите текст, который вернется написанный в обратном порядке\n')
dlina=len(text)
text_new=''
while text:
    text_new+=text[dlina-1]
    text=text[:dlina-1]
    dlina=len(text)
print(text_new)

Эту программу я написала чуть ли не наугад, меня постоянно преследовало ощущение, что ничего не заработает и я все делаю неправильно. Но в итоге каким-то магическим образом программа заработала:

Введите текст, который вернется написанный в обратном порядке
Я кот Штукенция
яицнекутШ ток Я
>>> 

3. Доработайте игру «Анаграммы» так, чтобы к каждому слову полагалась подсказка. Игрок должен получать право на подсказку в том случае, если у него нет никаких предположений. Разработайте систему начисления очков, по которой бы игроки, отгадавшие слово без подсказки, получали больше тех, кто запросил подсказку.

print('Сейчас вы увидите случайную анаграмму, вам нужно угадать слово.\n')
input('Нажмите Entr, чтобы начать')
slova=('медведь',
       'канистра',
       'грильяж',
       'табуретка',
       'программист')
import random
slovo_1=random.choice(slova)
anagramma=''
slovo_2=slovo_1
while slovo_2:
    dlina=len(slovo_2)
    bukva_index=random.randint(0,(dlina-1))
    bukva=slovo_2[bukva_index]
    anagramma+=bukva
    if bukva_index!=0:
        slovo_nachalo=slovo_2[:bukva_index]
    else:
        slovo_nachalo=''
    slovo_konec=slovo_2[(bukva_index+1):]
    slovo_2=slovo_nachalo+slovo_konec
print(anagramma)
print ('Можно сразу попробовать угадать слово или попросить подсказку\n')
versiya=input('Нужна подсказка? да/нет\n')
ochki=100
if versiya == 'да':
    print('Слово начинается так:',slovo_1[:2],'...?')
    ochki-=5
otvet=input('Напишите слово и нажмите Entr, чтобы проверить вашу версию\n')
while otvet!=slovo_1:
    otvet=input('Напишите слово и нажмите Entr, чтобы проверить вашу версию\n')
    ochki-=1
print('Поздравляю, вы угадали!')
print('Вы набрали',ochki, 'из 100')
input('Нажмите Entr, чтобы выйти')

Работа программы выглядит так:

Сейчас вы увидите случайную анаграмму, вам нужно угадать слово.

Нажмите Entr, чтобы начать
иармтомспгр
Можно сразу попробовать угадать слово или попросить подсказку

Нужна подсказка? да/нет
да
Слово начинается так: пр ...?
Напишите слово и нажмите Entr, чтобы проверить вашу версию
программист
Поздравляю, вы угадали!
Вы набрали 95 из 100
Нажмите Entr, чтобы выйти
>>> 

4. Создайте игру “Отгадайка”, в которой компьютер выбирает какое-либо слово, а игрок должен его отгадать. Компьютер сообщает игроку, сколько букв в слове, и дает пять попыток узнать, есть ли какая-либо буква в слове, причем программа может отвечать только «Да» и «Heт». Вслед за тем игрок должен попробовать отгадать слово.

print('Игра "Отгадайка".\n Я загадаю слово, а ты будешь его угадывать.\n \
Я скажу тебе, сколько букв в этом слове. \n \
И еще ты можешь 5 раз узнать у меня, есть ли какая-либо буква в этом слове.')
input('Если готов играть, нажми Entr')
slova=('сосиска',
       'крокодил',
       'медведь',
       'завтрак',
       'компьютер')
import random
slovo=random.choice(slova)
print('В этом слове', len(slovo),'букв')
print('Теперь ты можешь 5 раз спросить меня, есть ли какая-то буква в этом слове?\n')
for _ in range (5):
    bukva=input('Напиши букву, которую хочешь проверить?')
    if bukva in slovo:
        print('Да')
    else:
        print('Нет')
otgadka=input('Какое слово было загадано?\n')
if otgadka==slovo:
    print('Ура, ты угадал!')
else:
    print('Нет, попробуй в другой раз')
input='Для выхода нажмите Entr'

Программу-то я написала, но оказалось, что играть в эту игру совершенно нереально. Угадать слово при таких условиях слишком сложно. Но для тренировки пойдет. Программа работает так:

Игра "Отгадайка".
 Я загадаю слово, а ты будешь его угадывать.
 Я скажу тебе, сколько букв в этом слове. 
 И еще ты можешь 5 раз узнать у меня, есть ли какая-либо буква в этом слове.
Если готов играть, нажми Entr
В этом слове 7 букв
Теперь ты можешь 5 раз спросить меня, есть ли какая-то буква в этом слове?

Напиши букву, которую хочешь проверить?а
Да
Напиши букву, которую хочешь проверить?т
Нет
Напиши букву, которую хочешь проверить?о
Да
Напиши букву, которую хочешь проверить?м
Нет
Напиши букву, которую хочешь проверить?л
Нет
Какое слово было загадано?
самолет
Нет, попробуй в другой раз
>>>
This entry was posted in Python. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *