Продолжаем изучать программирование. После третьей главы в книге: Майкл Доусон “Программируем на Python”, 2014 (Michael Dawson “Python Programming for the Absolute Beginner”, 3rd Edition), где я изучила особенности работы с текстом в языке программирования Python, предложены задания. Давайте выполнять их вместе. Я приведу свой вариант решения, а вы пишите ваши варианты в комментариях.
Программа “Угадай число” от Игроглаза, не подсматривая решение:
import random
guess = ""
guess_num = 0
number = int(random.randint(1,100))
print ("I made a guess: number 1-100. Can you guess it?n")
while guess != number:
guess = int(input("Enter your proposal: n"))
if guess > number:
print("No, it's smaller..n")
elif guess < number:
print("No, it's bigger..n")
else:
print("Finally, you got it!n")
guess_num += 1
print ("Number was ", number, ". You guessed it with",
guess_num, "times. Good job!")
input()
Кстати, в книге в этой программе ошибка. Вне цикла там стоит tries = 1; тогда как оно должно начинаться с нуля.
1) Напишите программу — симулятор пирожка с «сюрпризом», — которая бы при запуске отображала один из пяти различных «Сюрпризов», выбранный случайным образом.
Вариант Штукенции:
import random
surpriz_1='Unicorn'
surpriz_2='Medal'
surpriz_3='Funny cat'
surpriz_4='Palm tree'
surpriz_5='Dino'
rezult=random.randint(1,5)
if rezult==1:
print(surpriz_1)
elif rezult==2:
print(surpriz_2)
elif rezult==3:
print(surpriz_3)
elif rezult==4:
print(surpriz_4)
else:
print(surpriz_5)

Вариант Игроглаза:
import random
num = random.randint(1,5)
if num == 1:
pie = "селедкой"
if num == 2:
pie = "мясом"
if num == 3:
pie = "курицей"
if num == 4:
pie = "сеном"
if num == 5:
pie = "опилками"
print ("Держи пирожок с", pie)
input()2) Напишите программу, которая бы «Подбрасывала» условную монету 100 раз и сообщала, сколько раз выпал орел, а сколько — решка.
Вариант Штукенции:
import random
orel_1='orel'
reshka_2='reshka'
orel_sum=0
reshka_sum=0
count=0
while count!=100:
count+=1
result=random.randint(1,2)
if result==1:
orel_sum+=1
else:
reshka_sum+=1
print('Орел:',orel_sum,'Решка:',reshka_sum)

Вариант Игроглаза:
import random
n = 0
counter = 0
while n < 100:
flip = random.randrange(2)
if flip == 0:
coin = "Орёл"
counter += 1
else:
coin = "Решка"
print ("Бросаем монетку..", coin)
n += 1
print ("Орёл выпал", counter, "раз; решка", 100-counter, "раз")
input()
3) Измените программу «Отгадай число» таким образом, чтобы у игрока было ограниченное количество попыток. Если игрок не укладывается в заданное число (и проигрывает), то программа должна выводить сколь возможно суровый текст.
Вариант Штукенции:
import random
print('Я загадала целое число от 0 до 100. Угадай с 5 попыток!')
chislo=random.randrange(101)
popitka_count=0
while popitka_count<=4:
popitka_count+=1
popitka=int(input('Это число:'))
if popitka<chislo:
print('Больше!')
elif popitka>chislo:
print('Меньше!')
else:
print('Ничего себе! Ты отгадал! Это правда',chislo)
print('Количество попыток:',popitka_count)
break
if popitka_count==5 and popitka!=chislo:
print('О, ужас! Ты совершенно не умеешь читать мои мысли!n
Так и не смог угадать число за 5 попыток :(')

Вариант Игроглаза:
import random
guess = ""
guess_num = 0
number = int(random.randint(1,100))
print ("Try to guess a number 1-100 with 6 tries..n")
while guess != number:
if guess_num > 6:
print("Sorry, you've lost! It was", number)
break
guess = int(input("Enter your proposal: n"))
if guess > number:
print("No, it's smaller..n")
elif guess < number:
print("No, it's bigger..n")
else:
print("Finally, you got it!n")
guess_num += 1
if guess == number:
print ("Number was ", number, ". You guessed it with",
guess_num, "times. Good job!")
input()4) А вот задача посложнее. Напишите на псевдокоде алгоритм игры, в которой случайное число от 1 до 100 загадывает человек, а отгадывает компьютер. Прежде чем приступать к решению, задумайтесь над тем, какой должна быть оптимальная стратегия отгадывания. Если алгоритм на псевдокоде будет удачным, попробуйте реализовать игру на Python.
Вариант Штукенции:
print('Загадай любое целое число от 1 до 100.
А я его отгадаю. Говори мне </>.
Когда я угадаю, напиши "yes"n')
input('Нажми Entr, когда загадал')
import random
low_num=0
high_num=100
gues=random.randint(low_num,high_num)
print('Это число',gues,'?')
otvet=input('Угадал?n')
while otvet!='y':
if otvet=='<':
high_num=gues-1
gues=random.randint(low_num,high_num)
print(gues)
otvet=input('Угадал?n')
elif otvet=='>':
low_num=gues+1
gues=random.randint(low_num,high_num)
print(gues)
otvet=input('Угадал?n')
input('Ура! Я отгадал! Нажми Enter, чтобы выйти.')
Вариант Игроглаза. Чтобы решать такие задачки эффективно, нужно рисовать графики или схемы. Нарисуйте прямую и отметьте там 0 в начале и 100 в конце… метод бисекции состоит в том, чтобы брать среднее значение и назначать его либо началом или концом графика в новой итерации):
# Bisection method
begin = 0
end = 100
guess = ""
print ("I'll guess a number 1-100.. answer 'yes' if I correct
and 'less' or 'more' if number is bigger or smallern")
while True:
guess = (begin + end) // 2
print ("Is it", int(guess), "?")
answer = input()
if answer == "yes" or (end - begin == 2):
break
if answer == "more":
begin = guess
elif answer == "less":
end = guess
print ("Number was ", guess, ". Good job!")
input()