“物不知数”出自《孙子算经》。题目为:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”。
意思是说有一些物品,不知道有多少个,如果一次3 个 3 个的数,还多出 2 个;一次5 个 5 个的数则多出 3 个;一次 7 个 7 个的数也会多出 2 个。
现假设物品总数不超过 n (n<=1000),请编程计算满足条件的物品个数并输出。
一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;
7个7个数也会多出2个。输入一个正整数,从小到大依次输出所有不超过输入数字
且满足条件的物品数量,有多个答案时每行输出一个。
例如输入:200
输出:
23
128
n = int(input())
其实就是找出除3余2、除5余3、除7余2 的数
n = int(input())
for i in range(n+1):
if i%3 == 2 and i%5 == 3 and i%7 == 2:
print(i)
人狗大战游戏
#创建一个类(该类的属性会为后面的类继承调用)
class lable:
def __init__(self, name, aggr, hp): #类属性
self.name = name
self.aggr = aggr
self.hp = hp
class dog(lable): #创建狗的类,并且继承lable(父类)的属性
def __init__(self, name, aggr, hp, kind):
lable.__init__(self, name, aggr, hp)
self.kind = kind
#定义狗的攻击方法
def attack(self, person):
#人的血等于人当前的血量减去狗的攻击力
person.hp -= self.aggr
class person(lable): #创建人的类,同样继承lable(父类)的属性
def __init__(self, name, aggr, hp, sex):
lable.__init__(self, name, aggr, hp)
self.sex = sex
#初始化人的钱为0
self.money = 0
#定义人的攻击方法,参数对象是狗
def person_attack(self, dog):
#狗的血量等于狗当前的血量减去人的攻击力
dog.hp -= self.aggr
#定义人买枪的方法
def person_gun(self, gun):
if self.money >= gun.g_price:
#如果钱够就买枪
self.money -= gun.g_price
self.gun = gun
#枪的攻击力赋值与人的攻击力
self.aggr = gun.g_aggr
else:
print('余额不足,请充值金额打狗!')
class gun: #创建gun枪的类
#类属性 记录子弹数量,初始化为0
num_bullet = 0
def __init__(self, name, aggr, zds, price):
self.g_name = name
self.g_aggr = aggr
self.g_zds = zds
self.g_price = price
def hand_w(self,dog):
#定义人开枪的方法
while self.g_zds > 0:#保证子弹数一直是正数
if dog.hp > 0:
#人用枪打狗,伤害为枪伤害的二倍
dog.hp -= self.g_aggr * 2
self.g_zds -= 1
gun.num_bullet += 1
print('正在使用武器攻击(伤害为{}的二倍)!'.format(self.g_aggr))
print('当前{}的血条为{}'.format(dog.name,dog.hp))
else: # 防止程序陷入死循环
break
#创建实例对象
zangao = dog('zangao', 100, 200, '咬人')
tom = person('tom', 50, 10, '打狗')
m4a1 = gun('m4-a1', 20, 3, 500)
tom.money += 1000
#假想藏獒不攻击人类,只有人类用枪打狗的过程
# 构造一个循环体,当[zangao]的hp<=0时,退出循环
# 固定子弹数量
bullet_full = m4a1.g_zds
while zangao.hp > 0:
# 使用gun攻击
# 判断tom是否还有钱购买枪攻击zangao,如果没有终止循环
while tom.money >= m4a1.g_price:
# 购买武器
tom.person_gun(m4a1)
# 我们需要重置一下子弹的数量
m4a1.g_zds = 3
# 使用武器攻击(hand_w方法自带判断,这里不用加判断了)
m4a1.hand_w(zangao)
#输出消耗打狗的总子弹数
print('使用子弹数量为[%d]' % gun.num_bullet)
(这个小例子重点在掌握面向对象的继承,还有定义函数的方法,以及一些逻辑关系,程序里没有实现让狗攻击人,然后人在攻击狗,完全就是单纯的人打狗。至于函数内定义的狗的攻击力,可以作为是为了学习面相对象的继承。一起加油呀!)
n=int(input(""))
count=0
for i in range(n):
if i%2==1 and i%3==0 and i%4==1 and i%5==1 and i%6==3 and i%7==0 and i%8==1 and i%9==0:
print(i)