2013-04-09 99 views
-13

我使用Python 3.0和打印功能無法正常工作ASD應該(U會揣摩出)Python - 爲什麼打印功能不工作?

import os 

def Start(): 
    print("Hello and welcome to my first Python game. I made it for fun and because I am pretty bored right now.") 
    print("I hope you enjoy my EPIC TEXT GAME")  
    play = input("do you want to play? (Y/N) ") 

def game2(): 
    print("asd") 
    input("asdsa") 

def game1(): 
    print("THIS SHOULD BE PRINTED!! BUT IT'S NOT!!") 
    word1 = input("what is the word? ") 

if word1 == "password": 
    game2() 
else: 
    os._exit(1) 

if play == "Y": 
    game1() 

if play == "N": 
    os._exit(1) 

一切工作,但該行那邊。爲什麼?

+10

請不要寫「你也會找出其中」。告訴我們你得到了什麼錯誤。幫助我們幫助你。 – YXD 2013-04-09 12:28:54

+10

並修復您的縮進。 – 2013-04-09 12:29:07

+0

你的錯誤在哪裏? 我正在運行Python2.X並且無法測試您的代碼,但是如果您提供錯誤代碼,錯誤輸出或哪一行是受影響的行,我可能會提供幫助。 – Torxed 2013-04-09 12:29:19

回答

1

您的縮進全都是錯誤的,而且您嵌套了函數。 word1從未被定義。

這裏的固定代碼:

import os 

def Start(): 
print("Hello and welcome to my first Python game. I made it for fun and because I am pretty bored right now.") 
print("I hope you enjoy my EPIC TEXT GAME")  
play = input("do you want to play? (Y/N) ") 
if play == "Y": 
    game1() 
if play == "N": 
    os._exit(1) 

def game2(): 
print("asd") 
input("asdsa") 

def game1(): 
print("THIS SHOULD BE PRINTED!! BUT IT'S NOT!!") 
word1 = input("what is the word? ") 
if word1 == "password": 
    game2() 
else: 
    os._exit(1) 

Start() 
+0

它的工作,謝謝,但我有一個問題。如果你看看我的另一個問題,你可以看到有人告訴我,首先我需要定義我的game1()變量befre打字:if play ==「Y」:game1().. – user2261574 2013-04-09 12:37:34

+0

@ user2261574:那是因爲你'重新運行它在主要範圍內。這裏''start1()'在'Start()'函數內被使用。 'Start()'函數運行_after_'game1()'後定義,ergo'game1()'在運行前定義。 – Manishearth 2013-04-09 12:39:46

+0

@ user2261574你應該看看你的代碼,就像一摞文件一樣。當你的代碼執行一堆文件中的第一篇文件時,將從堆中挑選並執行。接下來是堆中的第二個報告者。當試圖運行'game1()'時,Python必須「讀取」一個定義了「def game1()」的「論文」。也就是說,除非有(在前一行),否則不能調用'game1定義它......這就是代碼的工作原理。 – Torxed 2013-04-09 13:38:25

0
import os 

def Start(): 
    print("Hello and welcome to my first Python game. I made it for fun and because I am pretty bored right now.") 
    print("I hope you enjoy my EPIC TEXT GAME")  
    play = input("do you want to play? (Y/N) ") 

def game2(): 
    print("asd") 
    input("asdsa") 

def game1(): 
    print("THIS SHOULD BE PRINTED!! BUT IT'S NOT!!") 
    word1 = input("what is the word? ") 

    if word1.lower() == "password": 
     game2() 
    else: 
     os._exit(1) 

Start() # <- You never called start, which **declares** play (the variable) 
if play == "Y": 
    game1() 

if play == "N": 
    os._exit(1) 

你的代碼是遠遠不夠完善。 方式代碼工作是,它會從頂部到底部..意義,如果你不聲明play它永遠不會存在..

而且snice play聲明(創建)在你的函數Start()你需要調用start才能檢查play中的值。

這很糟糕,但它提供了一個解決方案,並解釋您正在做什麼以及如何工作。

另請注意:由於您想在word1輸入後執行檢查,因此我再次選擇了您的if word1 == "password": ...在編輯您的帖子時沒有意識到。

在左邊的截圖中,綠色塊是什麼執行紅線..
一旦play嘗試對"Y"進行比較,因爲play從未創建就會失敗.. 僅僅因爲你有這裏面Start()並不意味着你已經創建了它..你還需要請致電Start()爲了執行該代碼,否則Python將是懶惰並忽略函數Start()中的任何內容,因爲它會假定你會每當你準備好或需要訪問它時調用它(節省時間)。

enter image description here