Разный вывод одинаковых кодов

Osamu

Новичок
Пользователь
Дек 19, 2024
2
0
1
Добрый день, я начинающий, и никак не могу понять - почему два одинаковых кода (1 - мой, писал с нуля в Pycharm; 2 - скопипастил с книги во всё тот же Pycharm) работают по-разному? Ниже два этих кода и скрины результатов их работы (и тот и другой работают корректно, за исключением места, которое я выделил. Я убрал все пробелы, чтобы не "растягивать" код). OS: Windows11, Pycharm Community 2024.1.5, Python 3.12.6
1. Мой код:

import random import time def display_intro(): print('''You're in front of two caves and have to walk through one of them. In the first one lives good dragon, who can do anything you want. In the second lives bad dragon, who will kill and eat you.''') print() def choose_cave(): cave = '' while cave != '1' and cave != '2': print('What cave will you choose? (type 1 or 2) ') cave = input() return cave def check_cave(chosen_cave): print("You're walking towards the cave ", choose_cave(), "...") time.sleep(2) print("The darkness inside it makes you thrill...") time.sleep(2) print("A huge dragon jumps out in front of you, open it's maw and...") print() time.sleep(2) friendly_cave = random.randint(1, 2) if chosen_cave == str(friendly_cave): print('...and says: "Welcome to my palace! You can ask for anything you want!"') else: print("...kill and eat you!..") play_again = 'yes' while play_again == 'yes' or play_again == 'y': display_intro() cave_number = choose_cave() check_cave(cave_number) print("Wanna try more? Type yes(y) on no(n): ") play_again = input()

Результат его работы:
mycodeoutput.jpg

2. Код из книги:
import random import time def display_intro(): print('''Вы находитель в землях, заселенных драконами. Перед собой вы видите две пещеры. В одной из них - дружелюбный дракон, который готов поделиться с вами своими сокровищами. Во второй - жадный и голодный дракон, который мигом вас съест.''') print() def choose_cave(): cave = '' while cave != '1' and cave != '2': print('В какую пещеру вы войдете? (нажмите 1 или 2') cave = input() return cave def check_cave(chosen_cave): print('Вы приближаетесь к пещере...') time.sleep(2) print('Ее темнота заставляет вас дрожать от страха...') time.sleep(2) print('Большой дракон выпрыгивает перед вами! Он раскрывает свою пасть и...') print() time.sleep(2) friendly_cave = random.randint(1, 2) if chosen_cave == str(friendly_cave): print('...делится с вами своими сокровищами!') else: print('...моментально вас съедает!') play_again = 'да' while play_again == 'да' or play_again == 'д': display_intro() caveNumber = choose_cave() check_cave(caveNumber) print('Попытаете удачу еще раз? (да или нет)') play_again = input()

Результат его работы:
bookcodoutput.jpg

Проблема только в том, что мой код требует выбирать пещеру два раза, а код из книги - как и надо - один раз. Почему так получается? Предполагаю, что проблема не в самом коде (сравнивал - всё одинаково), но в чем..?
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
434
119
43
Предполагаю, что проблема не в самом коде (сравнивал - всё одинаково), но в чем..?
Плохо сравнивал, посмотри внимательно в твоем коде помимо вызова функции choose_cave в цикле while play_again == 'yes' or play_again == 'y': она вызывается ещё и в функции check_cave, в то время как в коде из книги вызов choose_cave происходит только в цикле while play_again == 'да' or play_again == 'д':
 
  • Мне нравится
Реакции: Osamu

Osamu

Новичок
Пользователь
Дек 19, 2024
2
0
1
Уффф.... всё верно, каюсь... Спасибо, что мордочкой в блюдечко ткнули!
 

Форум IT Специалистов