2014-02-07 101 views
1

您好,我對編程非常陌生,所以請耐心等待。我正在嘗試編寫一個程序,要求您提供三種顏色,然後生成隨機顏色,並根據顏色是否與生成的顏色相匹配來告訴您是贏還是輸。我似乎無法確定我的語法,並且不斷收到我不熟悉的錯誤。 這是我的程序。函數內的變量

import random 


def ranred(): 
    global color 
    color = 1 
    global color_out 
    color_out = "purple" 
    f_color(color, color_in, color_out) 
    return color, colorq 


def ranblack(): 
    global color 
    color = 2 
    global color_out 
    color_out = "black" 
    f_color(color, color_in, color_out) 


def ranpurple(): 
    global color 
    color = 3 
    global color_out 
    color_out = "purple" 
    f_color(color, color_in, color_out) 


def f_color(color, color_in, color_out): 
    print (color_out) 
    if color == color_in: 
     print ("win") 
    else: 
     print ("lose") 


def main(): 
    color_in = input("Purple, Black or Red? ") 
    Purple = 1 
    purple = 1 
    Black = 2 
    black = 2 
    Red = 3 
    red = 3 
    randomcolor1 = random.randrange(0, 2) 
    randomcolor2 = random.randrange(0, 2) 
    if randomcolor1 == 1 and randomcolor2 == 1: 
     ranred() 
    if randomcolor1 == 2 and randomcolor2 == 2: 
     ranblack() 
    if randomcolor1 == 2 and randomcolor2 == 1: 
     ranpurple() 
    if randomcolor1 == 1 and randomcolor2 == 2: 
     ranpurple() 

main() 
+4

錯誤,比如....? – mhlester

+0

目前「函數定義中的」複製參數「顏色」 – user3285386

+0

非常感謝!當我運行新代碼時,我解決了現在是簡單錯字的問題它詢問我的輸入問題,然後輸出什麼都沒有。有任何建議嗎? – user3285386

回答

1
import random 

def computer_color(colors): 
    return random.choice(colors) 

def player_color(colors): 
    while True: 
     color = input('Purple, black, or red? ').strip().lower() 
     if color in colors: 
      return color 

def main(): 
    colors = ['purple', 'black', 'red'] 
    pc = player_color(colors) 
    cc = computer_color(colors) 

    if pc == cc: 
     print('Win!') 
    else: 
     print('Lose.') 

if __name__=="__main__": 
    main() 

  1. ,如果你打算一個新值分配給全局變量global關鍵字僅需要;如果您只是閱讀或修改(即附加到列表),則不需要。

  2. 在任何情況下,全局通常是一個壞主意;它們使追蹤程序中發生的事情變得更加困難,並導致難以診斷的錯誤。明確傳遞參數並返回結果要好得多。

  3. 有很多幾乎相同功能通常是一個壞的跡象,意味着你應該重構你的代碼。

  4. 按照慣例,變量應該全部小寫;以大寫字母開頭保留給課程。

1

當您將參數傳遞給函數時,它們必須具有唯一的名稱。

def f_color(color,color,color_out) 

看看你有兩樣東西叫做顏色? Python如何知道什麼名字帶有什麼價值?這根本不可能。所以將其命名爲colorcolor2或更具描述性的內容。或者拿出第二個color的論點,因爲它看起來不像你需要它。

然後,你必須適當地調用函數一樣,所以你的時候你怎麼稱呼它,你只有一種顏色參數傳遞:

f_color(color,color_out) 
2

你解釋的錯誤:

def f_color(color,color,color_out): 

正在服用兩個論據color。你只能有一個說法叫color

def f_color(color, color_out):