2016-12-30 3 views
1

Im новый для python, поэтому я решил помочь себе научиться, создав базовую игру, используя python 3! Моя проблема возникает, когда я пытаюсь использовать «def». Когда я пытаюсь запустить эту программу, она полностью пропускает все пользовательские данные из-за def. Целью использования функции в этом случае было бы возвращение игрока к тому, где он представляет две двери. Может быть, это проблема, связанная с отступом? Если кто-то может дать ему выстрел и посмотреть, сможете ли вы обнаружить ошибку, ваша помощь будет принята с благодарностью! : DКак определить функции в python для повторения подсказки? (Начинающий)

def sec1(): 
print ("You have two doors in front of you. Do you choose the door on the left or right?") 
room1 = input('Type L or R and hit Enter.') 

if room1 == "L": 
    print ("********") 
    print ("Good choice",name) 
elif room1 == "R": 
    print ("********") 
    print ("Uh oh. Two guards are in this room. This seems dangerous.") 
    print ("Do you want to retreat or coninue?") 
    roomr = input('Type R or C and hit enter.') 

if roomr == "R": 
    print ("Good choice!") 
    sec1() 
+0

Возможный дубликат [Как создать цепочку декораторов функций?] (Https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators) – Chris

ответ

1
def sec1(): 
    print ("You have two doors in front of you. Do you choose the door on the left or right?") 
    room1 = input('Type L or R and hit Enter.') 

тело функции должны быть отступы

1

В Python отступы очень важно. Вот пример кода с правильным отступом (и пару вольностей берут с моей стороны):

def sec1(): 
    print ("You have two doors in front of you. Do you choose the door on the left or right?") 
    name = input('Enter your name.') 
    room1 = input('Type L or R and hit Enter.') 

    if room1 == "L": 
     print ("********") 
     print ("Good choice",name) 
    elif room1 == "R": 
     print ("********") 
     print ("Uh oh. Two guards are in this room. This seems dangerous.") 
     print ("Do you want to retreat or coninue?") 
     roomr = input('Type R or C and hit enter.') 
     if roomr == "R": 
      print ("Good choice!") 
     elif roomr == "C": 
      print ("Run!") 

сек1()

+0

Отступ определенно что-то, что нужно искать в python! Это был всего лишь раздел моего кода, но я тем не менее ценю ваши вклады! – Chris

+0

Да! Скорее всего, проблема номер один для начинающих людей! Надеюсь, это даст вам хорошее представление о том, что вы должны наблюдать. Вы привыкнете к этому очень быстро. Я бы предпочел, чтобы вы использовали что-то вроде PyCharm. Это будет иметь большое значение, и как только вы немного освоите окружающую среду, вы сможете шаг за шагом пропустить свой код и посмотреть, что происходит в любой момент. Добро пожаловать на борт! –

2

У вас есть проблемы отступа. Отступы имеют значение в Python. В соответствии с PEP8 styling guideline рекомендуется использовать 4 spaces вместо tabs для отступов. Также вам не указана переменная имени.

Ниже быстрое решение:

def sec1(): 
    print("You have two doors in front of you. Do you choose the door on the left or right?") 
    room1 = input('Type L or R and hit Enter.') 

    name = "Player Name" 

    if room1 == "L": 
     print("********") 
     print("Good choice", name) 

    elif room1 == "R": 
     print("********") 
     print("Uh oh. Two guards are in this room. This seems dangerous.") 
     print("Do you want to retreat or coninue?") 
     roomr = input('Type R or C and hit enter.') 

     if roomr == "R": 
      print("Good choice!") 
      sec1() 

sec1() 

Почему мы Sec1() в то закончится?

Функции, подобные машинам. Он ничего не делает сам по себе. Кто-то должен управлять им. sec1() (обратите внимание на скобки) в конце посылает сигнал, чтобы начать выполнение функции sec1, определенной в верхней части.

Я думаю, что лучший способ научиться - это установить точки останова и использовать отладчик, чтобы узнать, в каком направлении движется программа.

Запустите программу в режиме отладки и щелкните по значкам, чтобы перейти, перейдите и т. Д. Это звучит сложно, но это очень просто и сэкономит вам много времени, как только вы знаете, как это сделать.

Математические функции

Может быть, это немного не по теме упомянуть Mathematical Functions здесь, но я думаю, что это полностью стоит. Функции на языках программирования в значительной степени вдохновлены Mathematical Functions, однако на большинстве языков программирования в эти дни (кроме языков функционального программирования, таких как Haskell, F# и т. Д.), Концепции оригинала Mathematical Functions довольно отклонились в течение года.

В математике вывод функции зависит только от ее ввода и не изменяет значения вне функции, однако на большинстве языков программирования это не всегда так, и иногда это может быть источником запуска временные ошибки.

Советы

Как вы новичок, я настоятельно рекомендую использовать правильный IDE (Integrated Development Environment), если вы еще не сделали. PyCharm имеет бесплатную версию сообщества. IDE поставляются с проверкой стиля PEP8, отладчиком, профилировщиком и т. Д. И помогут вам более легко изучить Python.

+0

Ваш ответ, кажется, подразумевает, в частности, новичка, что использование 4-х пространств имеет решающее значение для Python. Это совсем не так. Это хорошая практика, рекомендованная в PEP8, но совсем не обязательно. У этого пользователя есть проблема с отступом, но вкладки с пробелами не являются частью их проблемы. –

+1

@ Крис Ларсон Это правда. Это всего лишь рекомендация PEP8. Я постоянно смешивал вкладки с пробелами, когда изучал Python и путался. – Eddie

+0

Ха! Я тоже. И я не собирался препятствовать вашей точке, просто потому, что это могло быть неверно истолковано как источник проблемы кем-то новым для всего этого. Я действительно использую вкладки и конвертирую в пробелы, когда мне нужно разделить мой код. :/Плохая, плохая практика, я знаю. С другой стороны, может быть, не так уж плохо напугать новых людей, думая, что им нужно использовать 4 пробела. : D –

Смежные вопросы