'''
【程序3】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:
若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数。
设该数为m,m+100为完全平方数,其对应自然数为x。
m+100+168为完全平方数,其对应自然数为y。
y>=x+1
y^2>=x^2 + 2x +1
(y^2-x^2)>=2x + 1
168 >=2x +1
x <=83.5
m+100=x^2
x>=10
因此可以枚举10到83的所有自然数
'''
'''
知识点
模块sys:
提供一些解释器维护或使用的变量,和一些与之交互的函数。
sys.maxsize 系统最大值
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
objects为输出的对象列表,sep指明分隔符,默认为逗号。
如print("x=",x),或print("x=" x,sep=' ')以空字符分割,注意很多字符如+等不能为分隔符
格式化字符串
字符串 %s
十进制整型 %d
浮点 %f
参数列表为%()以逗号隔开
如 print("m=%d,x=%d,y=%d"%(m,x,y))
注意格式字符串与参数之间没有分隔符。
'''
#Python3.3.5
import sys
min= 10
max= 83
step =1
for x in range(min,max,step):
m = x*x -100;
for y in range(x+1,sys.maxsize):
#print("x=",x)
#print("y=",y)
if(m +100 +168)<=y*y:
break
if(m+100+168)==y*y:
print("m=%d,x=%d,y=%d"%(m,x,y))
'''
【程序4】:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
情况,闰年且输入月份大于3时需考虑多加一天。
'''
'''
知识点:
布尔变量
假值:False None 0 "" () [] {}
真值:除以上假值外
可以如下验证:bool(43)
比较运算符:
x==y, x<y, x>y, x>=y, x<=y, x!=y 常见的比较符
x is y x和y是同一个对象
x is not y x和y不是同一个对象
x in y x是y容器的成员
x not in y x不是y容器的成员
'''
#Python3.3.5
year = int(input('year:\n'))
month = int(input('month:\n'))
day = int(input('day:\n'))
months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 <= month <= 12:
sum = months[month - 1]
else:
print('data error')
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
leap = 1
if (leap == 1) and (month > 2):
sum += 1
print('it is the %dth day.'% sum)