文章目录
前言一、题目二、算法思想三、代码
前言
此题的解决方法不唯一,你可以参考一下对应的解题思路,建议不要直接复制黏贴代码。
一、题目
二、算法思想
大致的题意是说从1开始计数,一遇到7的倍数或数字中含有7时,就跳过这个数直到成功计数的个数达到n个为止而我们需要统计输出的是玩这个计数游戏的甲乙丙丁四人遇到“跳过数”的次数,并输出四人的结果。
我使用的存储结构是字典,以四个人的中文名称作为对应的键,并初始化值为0并定义了两个变量,一个是当前报的数,一个是当前报数的人名。先创建了一个函数,用于判断一个数是否含有7或为7的倍数python中可以使用in方法来判断一个字符存在于另一个字符串中,所以可以直接使用if ’7’ in str(number)来判断转换为字符串后的number中是否含有数字7。
使用死循环进行计数,当成功计数达到n个就break出去符合“跳过数”时就统计一下因为遇到“跳过数”时不能算到成功计数个数里,所以需要自减运算与后面的自加运算进行抵消。之后就是将当前玩家跳到下一玩家,当前数加1,成功计数个数加1。
三、代码
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())
dic
= {}
dic
['甲'] = 0
dic
['乙'] = 0
dic
['丙'] = 0
dic
['丁'] = 0
now
= 1
now_player
= '甲'
number
= 0
while True:
if number
==n
:
break
if check_seven
(now
):
dic
[now_player
] += 1
number
-= 1
if now_player
== '甲':
now_player
= '乙'
elif now_player
== '乙':
now_player
= '丙'
elif now_player
== '丙':
now_player
= '丁'
elif now_player
== '丁':
now_player
= '甲'
now
+= 1
number
+= 1
print(dic
['甲'])
print(dic
['乙'])
print(dic
['丙'])
print(dic
['丁'])