铃铃 发表于 2020-7-25 02:10:16

想明晰关于对硬币模拟实验的代码含义(入门小白提问)

import random

counts = int(input("请输入抛硬币的次数:"))
i = 0

print("开始抛硬币实验:")
while i < counts:
    num = random.randint(1, 10)

    if num % 2:
      print("正面", end=" ")
    else:
      print("反面", end=" ")

    i += 1


疑问:1、为什么生成伪随机数要用randint(1,10),为什么是(1,10)的范围【开始想用sample或choice】
          2、num%2是什么意思?

Twilight6 发表于 2020-7-25 02:10:17



1、为什么生成伪随机数要用randint(1,10),为什么是(1,10)的范围【开始想用sample或choice】

random 模块的randint方法,是在定义范围内随机一个整数,所以使用它

而 sample 是在可以从指定的序列中,随机的截取指定长度的片断,不作原地修改,一般用于多次抽取序列中不同的元素并返回,所以用 sample 很明显不符合这题题意

和 choice 在一个序列中随机选择一个返回,这个的确可以,要看具体情况,这里实际上可以直接 choice([ 1, 2]) 即可达到题意

如果是猜数字啥的,用 randint 就更为方便,choice 还需要提供一个序列,而且不如 randint 直接随机整数来的快


2、num%2是什么意思?

num % 2 是求余操作符,就是求 num 除以 2 的余数,Python 中数字只要不为 0 ,则都可以视为布尔类型值的 True

所以这里的 if 只有在 num 整除以 2,即 num%2 == 0 的时候才不成立,然后执行 else 的代码块,否则条件成立 都是执行 if 的代码块


my少年时代 发表于 2020-7-25 02:57:07

randint 1到任意一个大于1的偶数都可以,不一定到10
num%2 是num除以2的余数。在判断的时候1相当于True,0相当于False

陈尚涵 发表于 2020-7-25 08:42:49


问题1:为什么生成伪随机数要用randint(1,10),为什么是(1,10)的范围【开始想用sample或choice】
这段代码表示生成一个1到10的随机数,sample和choice还得创建一个列表。不如这样直接生成随机整形来的快。
问题2:num%2是什么意思
num%2返回num除以2的余数,如果是0,就是说这是双数,也是假,输出(“正面”),如果这是单数,就是1,也就是真,输出(“反面”)

陈尚涵 发表于 2020-7-25 08:43:42

如果帮到你了,设置最佳答案可好呀{:10_297:}

永恒的蓝色梦想 发表于 2020-7-26 16:22:27

陈尚涵 发表于 2020-7-25 08:43
如果帮到你了,设置最佳答案可好呀

你充钱啦~{:10_256:}

陈尚涵 发表于 2020-7-26 16:25:09

永恒的蓝色梦想 发表于 2020-7-26 16:22
你充钱啦~

嘿嘿那是,我的零花钱终于有199啦{:10_298:}

陈尚涵 发表于 2020-7-26 16:27:14

永恒的蓝色梦想 发表于 2020-7-26 16:22
你充钱啦~

哈哈哈,我的贡献终于不是-5了,不用被人嘲笑了{:10_256:}{:10_256:}{:10_256:}{:10_256:}

陈尚涵 发表于 2020-7-26 16:31:57

永恒的蓝色梦想 发表于 2020-7-26 16:22
你充钱啦~

谢谢好友送的贡献{:10_256:}{:10_256:}{:10_256:}
页: [1]
查看完整版本: 想明晰关于对硬币模拟实验的代码含义(入门小白提问)