阿漾 发表于 2021-12-13 15:00:26

用random.randint()函数模拟掷硬币

友友们,请问为什么 if num % 2: 没有比较运算符也能运行下去呀?

谢谢大嘎

(其实程序和问题关系不大,以防万一还是放一下)

这是程序:
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

wp231957 发表于 2021-12-13 15:09:44

if num % 2:就相当于if num % 2不等于0

lightninng 发表于 2021-12-13 16:56:42

在很多编程语言中都有一个规则,如果整形被作为逻辑判断条件时,0等价于False,非0等价于True
python中,如果字符串被作为逻辑判断条件时,空字符串""等价于False,非空字符串等价于True
列表,字典等都同理~

阿漾 发表于 2021-12-13 18:26:44

lightninng 发表于 2021-12-13 16:56
在很多编程语言中都有一个规则,如果整形被作为逻辑判断条件时,0等价于False,非0等价于True
python中, ...

谢谢您的回答,但有一点不理解:
请问整形是什么呀?

我百度了,但没找到。

做最好的自己520 发表于 2021-12-13 19:12:56

阿漾 发表于 2021-12-13 18:26
谢谢您的回答,但有一点不理解:
请问整形是什么呀?



好家伙,是:整型{:10_257:},就是1,2,3,4,5.........自然数{:5_94:}

阿漾 发表于 2021-12-13 19:31:09

做最好的自己520 发表于 2021-12-13 19:12
好家伙,是:整型,就是1,2,3,4,5.........自然数

哈哈哈,好哒。

可是还是不太确定我对——“如果整形被作为逻辑判断条件的理解”是不是对的,麻烦您帮我看看。
谢谢!

在本题中,整型被作为逻辑判断条件,意思是num除以2的余数——这个整数,我就记为a吧,这个a被用来做逻辑判断。此时这个逻辑判断他是没有写明的,那是不是就是默认为同0作比较,也就是您说的这个规则。

做最好的自己520 发表于 2021-12-13 20:25:56

阿漾 发表于 2021-12-13 19:31
哈哈哈,好哒。

可是还是不太确定我对——“如果整形被作为逻辑判断条件的理解”是不是对的,麻烦您帮 ...

若这个逻辑判断(num % 2)没有写明,那就直接报错了
这里写了:num = random.randint(1, 10)
if num % 2:#不能被2整除,执行
      print("正面", end=" ")
    else:   #能被2整除 ,执行
      print("反面", end=" ")

看看是不是这样

阿漾 发表于 2021-12-13 21:54:43

做最好的自己520 发表于 2021-12-13 20:25
若这个逻辑判断(num % 2)没有写明,那就直接报错了
这里写了:num = random.randint(1, 10)



是我没有说清楚,我想问的是:您说的这个规则是指省略了 “if num % 2 =! 0:” 中的 “=! 0” 吗?

lightninng 发表于 2021-12-13 22:59:39

阿漾 发表于 2021-12-13 21:54
是我没有说清楚,我想问的是:您说的这个规则是指省略了 “if num % 2 =! 0:” 中的 “=! 0” 吗?

if 后面默认是逻辑判断语句,所以你可以将整型变量,字符串变量,甚至集合,列表,字典放在if后面作为判断条件,如果是整型就是判断是否等于0,字符串判断是否是空字符串,后面同理~~~
抱歉,,确实是字打错了~~

阿漾 发表于 2021-12-13 23:17:02

lightninng 发表于 2021-12-13 22:59
if 后面默认是逻辑判断语句,所以你可以将整型变量,字符串变量,甚至集合,列表,字典放在if后面作为判 ...

啊,好的,现在懂了,谢谢您呀

阿漾 发表于 2021-12-13 23:17:33

做最好的自己520 发表于 2021-12-13 20:25
若这个逻辑判断(num % 2)没有写明,那就直接报错了
这里写了:num = random.randint(1, 10)



我懂啦,谢谢您呀

做最好的自己520 发表于 2021-12-13 23:29:39

阿漾 发表于 2021-12-13 21:54
是我没有说清楚,我想问的是:您说的这个规则是指省略了 “if num % 2 =! 0:” 中的 “=! 0” 吗?

抱歉,你说口中的那个“规则”不是我说的{:10_262:}
2楼的意思是说,几乎所有编程语言:逻辑判断(表达式) 返回的结果: 0 表示假,1表示真。py对应的 0 == False(假) , 1 == True(真) 同理

如果是这方面知识想了解请观看:https://www.bilibili.com/video/BV15P4y1W7NX?spm_id_from=333.999.0.0
与 https://www.bilibili.com/video/BV1BK411V7SW?spm_id_from=333.999.0.0

若有误还请指正{:10_275:}

nettkd 发表于 2021-12-14 10:14:47

阿漾 发表于 2021-12-13 18:26
谢谢您的回答,但有一点不理解:
请问整形是什么呀?



整型就是指整数

nettkd 发表于 2021-12-14 10:17:56

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


求教各位前辈,这里面为什么要用randint(1,10)呢?用randint(1,2)应该也可以实现吧

阿漾 发表于 2021-12-16 21:31:32

nettkd 发表于 2021-12-14 10:17
import random

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


有很多方法,他选择了其中这么一种。

阿漾 发表于 2021-12-16 21:32:54

做最好的自己520 发表于 2021-12-13 23:29
抱歉,你说口中的那个“规则”不是我说的
2楼的意思是说,几乎所有编程语言:逻辑判断(表达式 ...

哦哦,原来如此,现在理解更加深刻了,谢谢您。

nettkd 发表于 2021-12-17 07:51:52

阿漾 发表于 2021-12-16 21:31
有很多方法,他选择了其中这么一种。

嗯嗯,我是说既然只有正面和反面两种结果 ,为什么要用(1,10)?(1,2)不是更合理吗

傻眼貓咪 发表于 2021-12-17 13:58:57

nettkd 发表于 2021-12-17 07:51
嗯嗯,我是说既然只有正面和反面两种结果 ,为什么要用(1,10)?(1,2)不是更合理吗

是没错,但是你想想
假设:你想测试到底喜欢吃辣的人比较多,还是不喜欢吃辣的人比较多(虽然知道答案必然只有喜欢和不喜欢两种),你会只想测试两个人?还是十个人?还是一千个人为准呢?

nettkd 发表于 2021-12-17 15:39:56

傻眼貓咪 发表于 2021-12-17 13:58
是没错,但是你想想
假设:你想测试到底喜欢吃辣的人比较多,还是不喜欢吃辣的人比较多(虽然知道答案必 ...

这个……我感觉脑子不够用了。控制硬币次数的不是counts吗?num只是表示正面和反面两种结果吧?是不是我理解错了啊

傻眼貓咪 发表于 2021-12-17 16:02:08

nettkd 发表于 2021-12-17 15:39
这个……我感觉脑子不够用了。控制硬币次数的不是counts吗?num只是表示正面和反面两种结果吧?是不是我 ...

没错,但是次数和取样数不同{:10_279:}

你可以重复一直做同样的实验多次,每次取样1000人为实验对象,当然无论是次数或取样数都会影响结果
页: [1]
查看完整版本: 用random.randint()函数模拟掷硬币