Python random.randint不生成随机值

Python random.randint不生成随机值,python,python-2.7,random,Python,Python 2.7,Random,我正在Python2.7中导入random。我想让这段代码生成两张随机卡片。当前代码不会生成随机卡。如果我请求卡片(9,11),代码生成的卡片(9,J)总数为19。输出没有任何随机性 def blackjack(A,B): print "Welcome to Blackjack!" print "Your cards are",name[A-1],"&",name[B-1] total = value[A-1] + value[B-1] print "Your c

我正在Python2.7中导入
random
。我想让这段代码生成两张随机卡片。当前代码不会生成随机卡。如果我请求卡片(9,11),代码生成的卡片(9,J)总数为19。输出没有任何随机性

def blackjack(A,B):
   print "Welcome to Blackjack!"
   print "Your cards are",name[A-1],"&",name[B-1]
   total = value[A-1] + value[B-1]
   print "Your card total is",total

import random
A = random.randint(1,13)
B = random.randint(1,13)


name = ('A','2','3','4','5','6','7','8','9','10','J','Q','K')
value = (11,2,3,4,5,6,7,8,9,10,10,10,10)    
示例输出:

>>> blackjack(9,11)
Welcome to Blackjack!
Your cards are 9 & J
Your card total is 19

您似乎混淆了定义函数和调用函数以及参数的工作方式

def blackjack(A,B):
   print "Welcome to Blackjack!"
   print "Your cards are",name[A-1],"&",name[B-1]
   total = value[A-1] + value[B-1]
   print "Your card total is",total
在函数中,
A
B
是占位符。它们将被插入括号中的任何内容替换。由于作用域,您的函数不知道在其外部定义的
A
B
的任何内容

是Python如何知道要使用哪些变量的。下面可以看到一个简单的示例:

>>> a = 10
>>> def bar():
    a = 5   
>>> a
10
函数内部的
a
不会影响函数外部的。你的功能正好相反。
A
outrside函数不会影响内部,除非您将其作为参数传递

试试这个:

blackjack(random.randint(1,13), random.randint(1,13))
看看你能得到什么


您可以阅读更多关于函数如何工作的内容

很明显,如果您总是使用参数9和11调用函数,它总是会使用值9和11。你需要实际使用你正在生成的随机数。我尝试了几个数字组合:21点(1,10)欢迎使用21点!您的卡是A&10您的卡总数是21>>>21点(6,11)欢迎使用21点!您的卡数为6张&J您的卡总数为16张>>>21点(3,7)欢迎使用21点!您的卡数为3和7您的卡总数为10将A和B传递给您的函数:21点(A,B)参数名称、函数中的
A
B
是任意的。只要你在你的职能范围内适当地起诉他们,你就可以把他们编成你想要的任何东西。您无法将它们与功能之外的变量进行匹配。谢谢您的指导。我会做更多的研究。