python - random.randint 不生成随机值

标签 python python-2.7 random

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

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

在您的函数中,AB 是占位符。它们将被替换为您在括号中输入的内容。由于作用域的限制,您的函数不知道在其外部定义的 AB 的任何信息。

Scoping Python 就是如何知道要使用哪些变量的。这里可以看到一个简单的实际例子:

>>> a = 10
>>> def bar():
    a = 5   
>>> a
10

函数内部的a不会影响外部的。在你的函数中,情况正好相反。函数外部的 A 不会影响内部除非您将其作为参数传递

试试这个:

blackjack(random.randint(1,13), random.randint(1,13))

看看你会得到什么。

您可以阅读有关函数如何工作的更多信息 here

关于python - random.randint 不生成随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30905269/

相关文章:

python - 引用计数降为零后多久调用 `__del__`?

python - 使用 *list 传递参数不适用于 execl

python - 如何在运行时更改处理单元(从GPU到CPU)?

python - Odoo V11 - 如何强制计算字段手动编辑?

Python-pptx : issue with insert_picture() function - 'sha1' AttributeError

java - 为每个数组值生成一个唯一的随机数

php - MYSQL数据库中的随机图片

bash - 我该如何加快速度?

python - 在 python 中将函数应用于目录的每个元素的内容时出现问题?

linux - 如何使用 SPARC 求解器的输出作为 python 文件的输入?