Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果使用变量,random.choice将显示相同的答案_Python_Random - Fatal编程技术网

Python 如果使用变量,random.choice将显示相同的答案

Python 如果使用变量,random.choice将显示相同的答案,python,random,Python,Random,当我运行此代码时,print(x)每次都会打印相同的字母,但当我像第二个示例那样运行它时,print(random.choice(b))它会按预期工作。有什么区别?我检查了答案,找到了“种子”的引用,但在此之前我没有使用random.seed() import random b = "Hello World" x = random.choice(b) print(x) print(x) print(x) # same answer as many times as you want to pri

当我运行此代码时,
print(x)
每次都会打印相同的字母,但当我像第二个示例那样运行它时,
print(random.choice(b))
它会按预期工作。有什么区别?我检查了答案,找到了“种子”的引用,但在此之前我没有使用
random.seed()

import random
b = "Hello World"
x = random.choice(b)
print(x)
print(x)
print(x)
# same answer as many times as you want to print
print(random.choice(b))
print(random.choice(b))
print(random.choice(b))
# random choice each time
random.choice(b)
仅在将返回值赋给
x
时调用一次,而不会在每次引用该变量时再次调用它。每次打印
x
时,您都会看到初始分配的结果。当您执行
print(random.choice(b))
时,它每次都在
b
上调用
random.choice()。如果每次引用变量时,分配给变量的值都发生了变化,那么这确实是一个很大的问题

你在这里所做的事情其实没有太大区别:

x = random.choice(b)
print(x)
print(random.choice(b))
你在这里做什么:

x = random.choice(b)
print(x)
print(random.choice(b))
不同之处在于,您执行后3次(即调用
random.choice()
3x并打印结果3x),因此您可以看到3个不同的结果。如果您这样做:

x = random.choice(b)
print(x)
x = random.choice(b)
print(x)
x = random.choice(b)
print(x)

每次您都会看到不同的结果(或者每次至少看到一个随机结果-可能是相同的)。

通过打印指定的值3次将不会更改变量的值,除非您调用随机函数再次生成新的随机变量:)

区别在于第一个,
x=random.choice(b)
x
设置为随机,然后打印
x
,即从
b
中随机选择的字母。当您声明
x
时,它仅随机选择
x
是什么。第二个,
print(random.choice(b))
每次都生成一个新的random

您可以使用以下代码使x等于random.choice:

b = "Hello world!" 
x = random.choice
print(x(b))

这与
print(random.choice(b))

打印
x
3次有什么意义?在Python中,
x
会得到一个赋值。它不会与从中获取该值的线路保持“实时”连接。只是为了表明前三条线路的答案相同,后三条线路的答案不同,每一条线路的答案可以是任意数字。“给我一个随机对象并将其标记为
x
。显示标记为
x
的对象。再给我看看。Rad,为什么它使用变量分配的值相同,而使用模块分配的值不同?