| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
现将不懂的问题罗列如下: 
①,为什么会想出要假设一个变量“ignore”来判断是否打印每次的结果?因为我怎么想都想不出来? 
 
②,if counts > 100:#为什么要写出这样形式的代码?为什么会确定数字是100? 
             ignore = True#为什么要用True 和 False 的形式,并且还要将 True 和 False 的值赋值给变量ignore? 
 
      else: 
            ignore = False 
 
③、关于引入的变量last ,在代码的运行中,到底是怎么运行的,为什么可以假设last == 1 或者 last == 2 呢? 
 
④、关于判断连续出现最多次数的逻辑我也不是很懂? 
 
 if num % 2: 
        heads += 1 
        c_heads += 1 
 
        if not ignore:    ## 为什么突然就是 if not   ignore ,我不明白的是这个判断语句是判断的什么呀? 
            print("正面", end=" ") 
 
        # 如果上一次是反面:将连续正面的次数设置为1##为什么要这样写? 
        if last == 2: 
            c_heads = 1 
 
        # 判断连续正面的次数是否比max_heads大,如果是,取而代之 
        if c_heads > max_heads: 
            max_heads = c_heads 
 
        # 将上一次的状态设置为正面##为什么要这样写? 
        last = 1 
    else: 
        tails += 1 
        c_tails += 1 
         
        if not ignore: ## 为什么突然就是 if not   ignore ,我不明白的是这个判断语句是判断的什么呀? 
            print("反面", end=" ") 
 
        # 如果上一次是正面:连续反面的次数设置为1##为什么要这样写? 
        if last == 1: 
            c_tails = 1 
 
        # 判断连续反面的次数是否比max_tails大,如果是,取而代之 
        if c_tails > max_tails: 
            max_tails = c_tails 
 
        # 将上一次的状态设置为反面##为什么要这样写? 
        last = 2 
 
⑤、这次的问题有点多,因为确实看不懂这个代码的逻辑,麻烦各位大神耐心解答下,谢谢啦!!!   
 
 
 
完整的代码罗列如下: 
import random 
 
counts = int(input("请输入抛硬币的次数:")) 
 
# 利用 ignore 变量来判断是否打印每次的结果 
if counts > 100: 
    ignore = True 
else: 
    ignore = False 
 
heads = 0 # 统计正面的次数 
tails = 0 # 统计反面的次数 
 
last = 0 # 记录上一次的状态,如果是正面设置为1, 反面则设置为2 
c_heads = 0 # 统计连续正面的次数 
c_tails = 0 # 统计连续反面的次数 
max_heads = 0 # 统计连续正面的最多次数 
max_tails = 0 # 统计连续反面的最多次数 
 
i = 0 
print("开始抛硬币实验……") 
while i < counts: 
    num = random.randint(1, 10) 
 
    if num % 2: 
        heads += 1 
        c_heads += 1 
 
        if not ignore:        
            print("正面", end=" ") 
 
        # 如果上一次是反面:将连续正面的次数设置为1 
        if last == 2: 
            c_heads = 1 
 
        # 判断连续正面的次数是否比max_heads大,如果是,取而代之 
        if c_heads > max_heads: 
            max_heads = c_heads 
 
        # 将上一次的状态设置为正面 
        last = 1 
    else: 
        tails += 1 
        c_tails += 1 
         
        if not ignore: 
            print("反面", end=" ") 
 
        # 如果上一次是正面:连续反面的次数设置为1 
        if last == 1: 
            c_tails = 1 
 
        # 判断连续反面的次数是否比max_tails大,如果是,取而代之 
        if c_tails > max_tails: 
            max_tails = c_tails 
 
        # 将上一次的状态设置为反面 
        last = 2 
         
    i += 1 
 
print("") 
print("一共模拟了", counts, "次抛硬币,结果如下:") 
print("正面:", heads, "次", sep="") 
print("反面:", tails, "次", sep="") 
print("最多连续正面:", max_heads, "次", sep="") 
print("最多连续反面:", max_tails, "次", sep="") 
输入100,会把每次的结果打印给你看,正面,反面。。 
输入101,不会把每次的结果打印给你看,只会告诉你最终的结果 
 
 
 |   
 
 
 
 |