鱼C论坛

 找回密码
 立即注册
查看: 2072|回复: 1

[已解决]循环语句while课后作业的另一个问题

[复制链接]
发表于 2022-12-14 11:57:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大佬:

请教一下第016讲:了不起的分支和循环(III)中的课后作业要求加点代码,让它可以实现以下功能:

如果抛硬币的次数小于 100,则打印每次的结果,否则不打印
统计最终正面和反面的次数

课后答案如下:

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="")

问题是:(1)在while循环体中的if...else..中都分别有"if not ignore:",这个"if not ignore:"该如何理解?
       (2)另外"if not ignore:"是否等同于"ignore == False"? 但如果这么修改的话,系统又会报错,这是为何?
pic.jpg
最佳答案
2022-12-14 12:19:01
本帖最后由 香蕉那个不拿拿 于 2022-12-14 13:03 编辑

1: if not ignore:
他分为两部分,一是if语句,另一个是not ignore
你不明白的是not的作用,我们这里着重讲解
not是指将后方的变量的真伪值作转换

not True就是Flase
not Flase就是True
明白了这个问题,下一个问题就迎刃而解了

2
not ignore取决宇ignore的真伪值
比如前文中ignore在>100时为True
下文的not ignore就是Flase就不会打印
如果ignore<100就为Flase
下文的not ignore就是True就会打印

如果你想去掉not ignore的话,就这么改
import random

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

# 利用 ignore 变量来判断是否打印每次的结果
if counts > 100:
    ignore = Flase#敲黑板!这里把两种情况翻转了
else:
    ignore = True

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

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

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

    i += 1

print("")
print("一共模拟了", counts, "次抛硬币,结果如下:")
print("正面:", heads, "次", sep="")
print("反面:", tails, "次", sep="")



至于你的为什么报错
你的改法也行
但是你忘了加上if了呀,要认真
附上,按你那种改法的代码
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 ignore == Flase:      
            print("正面", end=" ")
    else:
        tails += 1
        if ignore == Flase:
            print("反面", end=" ")

    i += 1

print("")
print("一共模拟了", counts, "次抛硬币,结果如下:")
print("正面:", heads, "次", sep="")
print("反面:", tails, "次", sep="")


两种改法自由选择
满意给个最佳答案呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-14 12:19:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 香蕉那个不拿拿 于 2022-12-14 13:03 编辑

1: if not ignore:
他分为两部分,一是if语句,另一个是not ignore
你不明白的是not的作用,我们这里着重讲解
not是指将后方的变量的真伪值作转换

not True就是Flase
not Flase就是True
明白了这个问题,下一个问题就迎刃而解了

2
not ignore取决宇ignore的真伪值
比如前文中ignore在>100时为True
下文的not ignore就是Flase就不会打印
如果ignore<100就为Flase
下文的not ignore就是True就会打印

如果你想去掉not ignore的话,就这么改
import random

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

# 利用 ignore 变量来判断是否打印每次的结果
if counts > 100:
    ignore = Flase#敲黑板!这里把两种情况翻转了
else:
    ignore = True

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

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

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

    i += 1

print("")
print("一共模拟了", counts, "次抛硬币,结果如下:")
print("正面:", heads, "次", sep="")
print("反面:", tails, "次", sep="")



至于你的为什么报错
你的改法也行
但是你忘了加上if了呀,要认真
附上,按你那种改法的代码
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 ignore == Flase:      
            print("正面", end=" ")
    else:
        tails += 1
        if ignore == Flase:
            print("反面", end=" ")

    i += 1

print("")
print("一共模拟了", counts, "次抛硬币,结果如下:")
print("正面:", heads, "次", sep="")
print("反面:", tails, "次", sep="")


两种改法自由选择
满意给个最佳答案呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 20:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表