您好,我对编程非常陌生,所以请耐心等待。我正在尝试编写一个程序,要求您从三个选项中选择颜色,然后生成自己的颜色,并根据您的颜色是否与生成的颜色匹配来告诉您是赢还是输。我似乎无法确定我的语法,并且我不断收到我不熟悉的错误。 这是我的计划。
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()
答案 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如何知道什么名称的价值?这根本不可能。因此,请将其命名为color
和color2
或更具描述性的内容。或者取出第二个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()
只有当您打算为全局变量分配新值时,才需要global
关键字;如果您只是阅读或修改(即附加到列表),则不需要它。
无论如何,全局变量通常是个坏主意;它们使得更难以追踪程序中发生的事情并导致难以诊断的错误。传递参数并明确返回结果要好得多。
拥有大量几乎相同的函数通常是一个不好的标志,这意味着您应该重构代码。
按照惯例,变量应以全小写命名;以大写字母开头是为班级保留的。