Python 我需要在函数中使用变量的帮助
在函数中,变量没有按照我希望的方式定义,我遇到了麻烦。我收到错误消息“全局名称color1未定义”,即使我从一个函数返回color1,在该函数中我给它一个定义的值。 这是我的密码:Python 我需要在函数中使用变量的帮助,python,function,if-statement,return,global-variables,Python,Function,If Statement,Return,Global Variables,在函数中,变量没有按照我希望的方式定义,我遇到了麻烦。我收到错误消息“全局名称color1未定义”,即使我从一个函数返回color1,在该函数中我给它一个定义的值。 这是我的密码: import random card = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28
import random
card = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','51','52']
def computer_card1():
return random.choice(card)
def computer_card2():
return random.choice(card)
def player_color():
color_in = input('Purple, Black or Red? ').strip().lower()
return color_in
def cards():
if computer_card1() == 1:
color1 = black
value1 = 2
if computer_card1() == 2:
color1 = black
value1 = 3
if computer_card1() == 3:
color1 = black
value1 = 4
if computer_card1() == 4:
color1 = black
value1 = 5
if computer_card1() == 5:
color1 = black
value1 = 6
if computer_card1() == 6:
color1 = black
value1 = 7
if computer_card1() == 7:
color1 = black
value1 = 8
if computer_card1() == 8:
color1 = black
value1 = 9
if computer_card1() == 9:
color1 = black
value1 = 10
if computer_card1() == 10:
color1 = black
value1 = 11
if computer_card1() == 11:
color1 = black
value1 = 12
if computer_card1() == 12:
color1 = black
value1 = 13
if computer_card1() == 13:
color1 = black
value1 = 0
if computer_card1() == 14:
color1 = black
value1 = 2
if computer_card1() == 15:
color1 = black
value1 = 3
if computer_card1() == 16:
color1 = black
value1 = 4
if computer_card1() == 17:
color1 = black
value1 = 5
if computer_card1() == 18:
color1 = black
value1 = 6
if computer_card1() == 19:
color1 = black
value1 = 7
if computer_card1() == 20:
color1 = black
value1 = 8
if computer_card1() == 21:
color1 = black
value1 = 9
if computer_card1() == 22:
color1 = black
value1 = 10
if computer_card1() == 23:
color1 = black
value1 = 11
if computer_card1() == 24:
color1 = black
value1 = 12
if computer_card1() == 25:
color1 = black
value1 = 13
if computer_card1() == 26:
color1 = black
value1 = 0
if computer_card1() == 27:
color1 = red
value1 = 2
if computer_card1() == 28:
color1 = red
value1 = 3
if computer_card1() == 29:
color1 = red
value1 = 4
if computer_card1() == 30:
color1 = red
value1 = 5
if computer_card1() == 31:
color1 = red
value1 = 6
if computer_card1() == 32:
color1 = red
value1 = 7
if computer_card1() == 33:
color1 = red
value1 = 8
if computer_card1() == 34:
color1 = red
value1 = 9
if computer_card1() == 35:
color1 = red
value1 = 10
if computer_card1() == 36:
color1 = red
value1 = 11
if computer_card1() == 37:
color1 = red
value1 = 12
if computer_card1() == 38:
color1 = red
value1 = 13
if computer_card1() == 39:
color1 = red
value1 = 0
if computer_card1() == 40:
color1 = red
value1 = 2
if computer_card1() == 41:
color1 = red
value1 = 2
if computer_card1() == 42:
color1 = red
value1 = 3
if computer_card1() == 43:
color1 = red
value1 = 4
if computer_card1() == 44:
color1 = red
value1 = 5
if computer_card1() == 45:
color1 = red
value1 = 6
if computer_card1() == 46:
color1 = red
value1 = 7
if computer_card1() == 47:
color1 = red
value1 = 8
if computer_card1() == 48:
color1 = red
value1 = 9
if computer_card1() == 49:
color1 = red
value1 = 10
if computer_card1() == 50:
color1 = red
value1 = 11
if computer_card1() == 51:
color1 = red
value1 = 12
if computer_card1() == 52:
color1 = red
value1 = 13
if computer_card2() == 1:
color2 = black
value2 = 2
if computer_card2() == 2:
color2 = black
value2 = 2
if computer_card2() == 3:
color2 = black
value2 = 4
if computer_card2() == 4:
color2 = black
value2 = 5
if computer_card2() == 5:
color2 = black
value2 = 6
if computer_card2() == 6:
color2 = black
value2 = 7
if computer_card2() == 7:
color2 = black
value2 = 8
if computer_card2() == 8:
color2 = black
value2 = 9
if computer_card2() == 9:
color2 = black
value2 = 10
if computer_card2() == 10:
color2 = black
value2 = 11
if computer_card2() == 11:
color2 = black
value2 = 12
if computer_card2() == 12:
color2 = black
value2 = 13
if computer_card2() == 13:
color2 = black
value2 = 0
if computer_card2() == 14:
color2 = black
value2 = 2
if computer_card2() == 15:
color2 = black
value2 = 3
if computer_card2() == 16:
color2 = black
value2 = 4
if computer_card2() == 17:
color2 = black
value2 = 5
if computer_card2() == 18:
color2 = black
value2 = 6
if computer_card2() == 19:
color2 = black
value2 = 7
if computer_card2() == 20:
color2 = black
value2 = 8
if computer_card2() == 21:
color2 = black
value2 = 9
if computer_card2() == 22:
color2 = black
value2 = 10
if computer_card2() == 23:
color2 = black
value2 = 11
if computer_card2() == 24:
color2 = black
value2 = 12
if computer_card2() == 25:
color2 = black
value2 = 13
if computer_card2() == 26:
color2 = black
value2 = 0
if computer_card2() == 27:
color2 = red
value2 = 2
if computer_card2() == 28:
color2 = red
value2 = 3
if computer_card2() == 29:
color2 = red
value2 = 4
if computer_card2() == 30:
color2 = red
value2 = 5
if computer_card2() == 31:
color2 = red
value2 = 6
if computer_card2() == 32:
color2 = red
value2 = 7
if computer_card2() == 33:
color2 = red
value2 = 8
if computer_card2() == 34:
color2 = red
value2 = 9
if computer_card2() == 35:
color2 = red
value2 = 10
if computer_card2() == 36:
color2 = red
value2 = 11
if computer_card2() == 37:
color2 = red
value2 = 12
if computer_card2() == 38:
color2 = red
value2 = 13
if computer_card2() == 39:
color2 = red
value2 = 0
if computer_card2() == 40:
color2 = red
value2 = 2
if computer_card2() == 41:
color2 = red
value2 = 2
if computer_card2() == 42:
color2 = red
value2 = 3
if computer_card2() == 43:
color2 = red
value2 = 4
if computer_card2() == 44:
color2 = red
value2 = 5
if computer_card2() == 45:
color2 = red
value2 = 6
if computer_card2() == 46:
color2 = red
value2 = 7
if computer_card2() == 47:
color2 = red
value2 = 8
if computer_card2() == 48:
color2 = red
value2 = 9
if computer_card2() == 49:
color2 = red
value2 = 10
if computer_card2() == 50:
color2 = red
value2 = 11
if computer_card2() == 51:
color2 = red
value2 = 12
if computer_card2() == 52:
color2 = red
value2 = 13
return color1
return color2
return value1
return value2
def main():
card1 = computer_card1()
card2 = computer_card2()
pcolor = player_color()
print ( "The cards where:",card1,",",card2,",",pcolor )
if color1 == color2:
color = color1
else:
color = 'purple'
if color == pcolor:
print ('Win')
else:
print ('Lose')
请注意,在这种用法中,实际挑选两张卡片并进行比较会做大量不必要的工作;您可以更直接地使用
winner = random.choice(["red", "black", "purple", "purple"])
天哪!你仍然误解了很多事情年轻的学徒…:) 可变范围 让我们从一开始。让我解释一下 当您编写以下代码时
def myfunction():
a=5
打印(a)#好的
b=a#这条线路故障
您将得到一个失败,因为a
是local到myfunction
,也就是说它只存在于该函数中,最后一条语句引用了python不知道的变量。这是一个很好的特性,因为如果没有作用域,您必须非常小心,不要在程序的任何部分使用相同的变量名,否则可能会发生冲突。如果在一个小程序中很无聊,那么在更大的程序中就必须这样做(想想firefox的1020万行代码)
返回
关键字
return
关键字不会将变量放在全局范围内(变量随时可用的某些边界)。相反,它将结束当前函数,并将一些值传递给调用方。函数结尾的第一条语句,随后的return
永远不会到达。从调用方捕获返回值的过程如下:
def afunction():
a = 5
return a
b = afunction()
print(b) # will print `5`
def somefunction():
a = 7
b = "hello"
return a, b, "worlds"
sev, hel, wo = somefunction()
print(hel, sev, wo) # will print `hello 7 worlds`
Python提供了一种方便的方法,可以以元组的形式从函数返回多个值。人们这样使用它:
def afunction():
a = 5
return a
b = afunction()
print(b) # will print `5`
def somefunction():
a = 7
b = "hello"
return a, b, "worlds"
sev, hel, wo = somefunction()
print(hel, sev, wo) # will print `hello 7 worlds`
Python的禅宗和所有这些东西
最后一个主题是,一个好的程序有简单的算法,复杂性在于数据。Python有一套出色的工具,专门用于表达和操作复杂的数据集,和用于描述复杂数据、对它们进行分组并建立关系。使用它们,您将大大简化代码,因此要尽快学会使用它们
下面是一些精彩的文章:
- 尤其是
卡之外。i、 例如,您的错误正好告诉您出了什么问题。我对python不太熟悉,如何确切地使用模来代替if语句?这里使用模而不是过多的ifs更多地是关于编程而不是python。有某种复发,对吗?想想什么时候会产生不同的值。虽然我看到你有时跳过1,有时跳过11,有时跳过3等等。但我看不出它们之间的联系:p它们是卡片,这些值是针对特定的卡片的。例如,1是一张黑色的2卡,2是一张黑色的3卡,3是一张黑色的4卡,10是一张黑色的皇后卡。这更有意义吗?