2011-07-23 55 views
-1

我剛剛開始玩python並尋找建議。基本的python,def函數和調用文本菜單

問題是與菜單(),對七號線某種原因,我得到一個語法錯誤

$ MENU() 

不知道我做錯了。

def MENU(): 
    print("Menu:") 
    print("  0. Menu") 
    print("  1. Random Number Generator") 
    access = int(input("Make a selection from the above list: ") 

MENU() ## Problem area 

if access == 1: 
    ## Random Number Generator 
    import random 
    ## Imports random functions 
    count = 0 
    b = 0 
    ## Creates the loop function, printing out the dataset 
    while count < 100: 
     count += 1 
     a = random.randrange(1,101) 
     print(count,". ", a, end=" | ") 
     b += a 
    ## Shows the average values for the program, output 
    else: 
     print() 
     print("Finish!") 
     print(b) 
     print(b/100) 
     menu() 
else: 
    MENU() 

上下文:我使用這個系統只是爲了提高我的語言以及防止自己創建100行的10行文件。

+0

出於某種原因,該計劃的一部分沒有正確的格式,我敢肯定,我沒有它正確,但它不影響發生問題的可見性。 – Alex

回答

4

你錯過了在第5行的右括號:

access = int(input("Make a selection from the above list: ")) 
                  ^
2

我剛剛通過您的代碼瀏覽,雖然你可能已經現在想通了,我想了一些建議可能會幫助你獲得更多的進入蟒蛇。

首先,風格對python來說是非常重要的,它是一種白色空間語言。該語言也有一些很棒的功能,可以縮減代碼量,這又鼓勵了一種很好的風格。有一些名爲PEP指南,介紹了這一點。 PEP-8是python的風格指南,如果你正在獲取更多的python,我強烈推薦閱讀它。

另外,當我在學習python時,我發現這個learning python the hard way guide是一個很好的資源。當你進入Python時真的很有趣,希望你喜歡它!下面是您的代碼的另一個版本,可能更有意義。

import random # All imports should be at the top, if you know 
       # you are going to use them. 

def menu(): 
    print("Menu:") 
    print("  0. Menu") 
    print("  1. Random Number Generator") 
    access = int(input("Make a selection from the above list: ")) 
    return access # See explanation 

access = menu() # See explanation 

if access == 1: 
    count = 0 
    b = 0 

    while count < 100: 
     count += 1 
     a = random.randrange(1,101) 
     print(count,". ", a, end = " | ") 
     b += a 

    print() 
    print("Finish!") 
    print(b) 
    print(b/100) 
    menu() 

else: 
    menu() 

**說明:在此將訪問值存儲到變量中很重要。你不能在函數內設置一個值,並期望它爲腳本的其餘部分進行更新。這是因爲範圍界定。

**另外,如果您希望在執行選擇後每次都會再次調用菜單,但您需要重新考慮某種結構。

這樣做的另一種方法是使用for循環。要做到這一點,你就會有喜歡的東西:

for i in range(100): 
     a = random.randrange(1,101) 
     print(count,". ", a, end = " | ") 
     b += a 

    print() 
    print("Finish!") 
    print(b) 
    print(b/100) 
    menu() 
+0

如果你試圖向他展示python風格,你應該'如果訪問:'而不是'如果訪問== 1'並且'在範圍(100):而不是'count = 0'中進行計數,'while while計數<100「,」計數+ = 1「。撤銷對他的打印聲明的更改:他使用Python 3,'end'非常合理。另外,在'while'或'for'循環中擺脫'else':只有在有時你從循環中斷開時才應該使用它,否則就像在循環之後放置語句一樣。 – agf

+0

感謝您的建議,我已將大部分職業生涯花費在vfx中,其中很少使用python 3.0。 我故意儘量不要編輯他的代碼,希望在閱讀完指南後,明智地自行解決問題會更有益處。 當我試圖學習某些東西時,我發現很難當人們爲我做出所有的更正。 – rykardo

+0

沒有批評的意圖,我只是覺得我會提到其他變化(特別是'結束'),因爲你已經在談論風格,他們不值得一個新的答案。 – agf