lsmCC 发表于 2022-11-3 18:38:48

课后作业16讲有个代码看不懂

import random

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

# 利用 ignore 变量来判断是否打印每次的结果
if counts > 100:
    ignore = True
else:
    ignore = False

heads = 0 # 统计正面的次数
tails = 0 # 统计反面的次数

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

    if num % 2:
      heads += 1
      if not ignore:      
            print("正面", end=" ")
    else:
      tails += 1
      if not ignore:
            print("反面", end=" ")

    i += 1

print("")
print("一共模拟了", counts, "次抛硬币,结果如下:")
print("正面:", heads, "次", sep="")
print("反面:", tails, "次", sep="")
前面是ignore = true 可是后面那个if not ignore: 是表达的什么意思

Twilight6 发表于 2022-11-3 18:46:44


not 表示取反, not True =False、 not False = True 这里就是条件取反

而 ignore 在代码中作用是,当你输入的抛硬币次数小于 100 次,就打印每次抛硬币的结果

但是若大于 100 次就不打印每次抛硬币的结果,实际上不影响代码最终运行结果,只是影响显示效果

zy8818 发表于 2022-11-3 19:02:41

if counts > 100:
    ignore = True#大于100次为True
else:
    ignore = False

      if not ignore:#大于100次时 (not ignore)==(not true)==False,结果为大于100为False 不打印,
            print("反面", end=" ")

至于这种作秀的花样写法很绕,没有适用性,要写的简单易读可以修改成
#######################
if counts < 100:
    ignore = True#小于100次打印数据
else:
    ignore = False#大于100次不大于数据

      ifignore:#小于100次打印,这样加上注释一目了然,节约阅读代码的时间,谁会喜欢看绕弯弯的东西??
            print("反面", end=" ")
页: [1]
查看完整版本: 课后作业16讲有个代码看不懂