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 раз спросить меня, есть ли какая-то буква в этом слове?

Напиши букву, которую хочешь проверить?а
Да
Напиши букву, которую хочешь проверить?т
Нет
Напиши букву, которую хочешь проверить?о
Да
Напиши букву, которую хочешь проверить?м
Нет
Напиши букву, которую хочешь проверить?л
Нет
Какое слово было загадано?
самолет
Нет, попробуй в другой раз
>>>

Запись опубликована в рубрике Python. Добавьте в закладки постоянную ссылку.

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

  1. Коляныч) говорит:

    import random
    print(«»»
    Это игра <>
    тебе нужно отгадать слово загаданное
    компьютером за отведённое колличество попыток.
    «»»
    )
    slovo =(«магазины»,»яблоко»,»велосипед»,»книга»,»принтер»)
    vibor_kompa = random.choice(slovo)
    print(«В секретном слове»,len(vibor_kompa),»букв.»)
    variant = «»
    score = 0
    variant += vibor_kompa
    bukva = input(«\nНазови букву у тебя шесть попыток: «)
    while variant != bukva and score != 5:
    if bukva in vibor_kompa:
    print(«Есть такая буква в этом слове.»)
    score += 1
    else:
    print(«Такой буквы нет крутите барабан.»)
    score += 1
    bukva = input(«\nНазови букву у тебя шесть попыток: «)

    variant = input(«\nНазови слово полностью: «)
    if variant == vibor_kompa:
    print(«Ты угадал.Это победа!!!»)
    else:
    print(«Попытки кончились — GAME OVER!!!»)
    input(«\nДля выхода нажмите ENTER.»)

  2. Коляныч) говорит:

    # В это программе вы вводите текс который печатается задом на перёд.
    text = input(«Введите текст: «)
    for letter in reversed(text):
    print(letter)

    input(«\n\nДля выхода нажмите ENTER.»)

  3. DarMorar говорит:

    range не включает второе значение в диапазон. Если выбрать счёт от 1 до 10 с шагом 1, то посчитает 1 2 3 4 5 6 7 8 9

Добавить комментарий для Коляныч) Отменить ответ

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