函数内的变量

时间:2014-02-07 20:10:50

标签: python function if-statement

您好,我对编程非常陌生,所以请耐心等待。我正在尝试编写一个程序,要求您从三个选项中选择颜色,然后生成自己的颜色,并根据您的颜色是否与生成的颜色匹配来告诉您是赢还是输。我似乎无法确定我的语法,并且我不断收到我不熟悉的错误。 这是我的计划。

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()

3 个答案:

答案 0 :(得分:2)

您解释的错误:

def f_color(color,color,color_out):

正在使用两个参数color。您只能有一个名为color的参数:

def f_color(color, color_out):

答案 1 :(得分:1)

将参数传递给函数时,它们必须具有唯一的名称。

def f_color(color,color,color_out)

看看你有两件叫做颜色的东西? Python如何知道什么名称的价值?这根本不可能。因此,请将其命名为colorcolor2或更具描述性的内容。或者取出第二个color参数,因为它看起来不像你需要它。

然后你必须适当地调用这个函数,所以当你调用它时,你只传入一个颜色参数:

f_color(color,color_out)

答案 2 :(得分: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. 按照惯例,变量应以全小写命名;以大写字母开头是为班级保留的。