Продолжаем изучать программирование. После третьей главы в книге: Майкл Доусон «Программируем на 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 smaller\n") 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()
Не судите строго за мой говнокод
import random
print(65*»#»)
print(«»»Привет в этой программе компьютер пытается отгадать число которое вы
загадали.Посмотрим так ли умён компьютер.»»»)
print(65*»#»)
komp = 0
variant = 0
score = 0
tvoy_chislo = int(input(«Твоё число:»))
while tvoy_chislo != komp:
score += 1
variant = random.randint(1,100)
if variant tvoy_chislo:
print(«Больше.»)
else:
print(«Компьютер угадал твоё число за:»,score,»попыток.»)
break
input(«Для выхода нажмите ENTER.»)
Число 8756 он отгадывал минуты 2.