Python笔记-CSP 201912-1 报数

    科技2024-01-10  107

    文章目录

    前言一、题目二、算法思想三、代码

    前言

    此题的解决方法不唯一,你可以参考一下对应的解题思路,建议不要直接复制黏贴代码。

    一、题目

    二、算法思想

    大致的题意是说从1开始计数,一遇到7的倍数或数字中含有7时,就跳过这个数直到成功计数的个数达到n个为止而我们需要统计输出的是玩这个计数游戏的甲乙丙丁四人遇到“跳过数”的次数,并输出四人的结果。 我使用的存储结构是字典,以四个人的中文名称作为对应的键,并初始化值为0并定义了两个变量,一个是当前报的数,一个是当前报数的人名。先创建了一个函数,用于判断一个数是否含有7或为7的倍数python中可以使用in方法来判断一个字符存在于另一个字符串中,所以可以直接使用if ’7’ in str(number)来判断转换为字符串后的number中是否含有数字7。 使用死循环进行计数,当成功计数达到n个就break出去符合“跳过数”时就统计一下因为遇到“跳过数”时不能算到成功计数个数里,所以需要自减运算与后面的自加运算进行抵消。之后就是将当前玩家跳到下一玩家,当前数加1,成功计数个数加1。

    三、代码

    # coding=utf-8 #作者:小狐狸 #题目:报数 def check_seven(number): ''' 查看输入的数是否含有7或7的倍数,number为int类型 是返回True,否返回False ''' if number%7==0: return True if '7' in str(number): return True return False if __name__ == "__main__": n = int(input()) ## print(n) dic = {} dic['甲'] = 0 dic['乙'] = 0 dic['丙'] = 0 dic['丁'] = 0 now = 1 #当前的数 now_player = '甲' #当前报数的玩家 number = 0 #已报的个数 while True: if number==n: #报了n次结束 break if check_seven(now): #若当前玩家的数符合跳过数的条件时 dic[now_player] += 1 number -= 1 #与之后的次数累加消除 #跳到下一玩家 if now_player == '甲': now_player = '乙' ## print('甲',now) elif now_player == '乙': now_player = '丙' ## print('乙',now) elif now_player == '丙': now_player = '丁' ## print('丙',now) elif now_player == '丁': now_player = '甲' ## print('丁',now) now += 1 number += 1 print(dic['甲']) print(dic['乙']) print(dic['丙']) print(dic['丁'])
    Processed: 0.010, SQL: 8