# 输入某年某月某日,判断这一天是这一年的第几天?(考虑闰年与大小月)
a=int(input("请输入年"))
b=int(input("请输入月"))
c=int(input("请输入日"))
if a%4==0 and a%100!=0 or a%400==0:
if b==1:
print(f"这是{a}年的第{c}天")
elif b==2:
print(f"这是第{a}年的第{c+31}天")
elif b >= 3:
if b%2!=0:
print(f"这是第{a}年的第{c+31*(b//2)+29+30*(b//2-1)}天")
else:
print(f"这是第{a}年的第{c+31*(b/2)+29+30*(b/2-2)}天")
else:
if b == 1:
print(f"这是{a}年的第{c}天")
elif b == 2:
print(f"这是第{a}年的第{c + 31}天")
elif b >= 3:
if b % 2 != 0:
print(f"这是第{a}年的第{c + 31 * (b // 2) + 28 + 30 * (b // 2 - 1)}天")
else:
print(f"这是第{a}年的第{c + 31 * (b / 2) + 28 + 30 * (b / 2 - 2)}天")
# 输入三个整数x,y,z,请把这三个数由小到大输出
print(sorted([int(input("请输入x")),int(input("请输入y")),int(input("请输入z"))]))
# 斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……
# 要求:输入n就能求出对于的第n项an与前n项和Sn
# 法一:
n=int(input("请输入n:"))
try:
if n != 1:
list=[0,1]
def plus(a,b):
c = a+b
return c
for i in range(n):
global c
c=plus(list[0],list[1])
list[list.index(min(list))]=c
if i == n-2:
print(f"第n项an={min(list)}")
print(f"前n项和Sn={c-1}")
elif n==1:
print("第n项an=0")
print("前n项和Sn=0")
except:
print("输入有误,n应为正整数")
# 法二:
a=0
b=1
list1=[0]
def p(a,b):
c=max(a,b)
return c,a+b
for i in range(1,int(input())):
a,b=p(a,b)
list1.append(min(a,b))
print(min(a,b)) #第n项的值
print(sum(list1)) #第n项的Sn的值
print(list1) #每一项的值
# 判断101-200之间有多少个素数,并输出所有素数。
#提示:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
a=[]
import math
for i in range(101,201):
if i%2!=0 and i%3!=0 and i%5!=0 and i%7!=0 and i%11!=0 and i%math.sqrt(i)!=0:
print(i)
a.append(i)
print("一共有",len(a),"个素数。")
#标准解法:
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):
k = int(sqrt(m + 1))
for i in range(2,k + 1):
if m % i == 0:
leap = 0
break
if leap == 1:
print ('%-4d' % m)
h += 1
if h % 10 == 0:
print ('')
leap = 1
print ('The total is %d' % h)
#任意输入一串字符,统计字符中一个特殊字符,数字,英文字符,数字与其他符号的个数。
str1 = input("请输入一串字符串:")
exstr = input("请输入你想统计的特殊字符:")
list1=[] #字符
list2=[] #数字
list3=[] #空格
list4=[] #其他
for i in str1:
try:
list2.append(int(i))
except:
if type(i)==str:
if i == " ":
list3.append(i)
elif i=="a" or i=="b" or i=="c" or i=="d" or i=="e" or i=="f" or i=="g" or i=="h" or i=="i" or i=="j" or i=="k" or i=="l" or i=="m" or i=="n" or i=="o" or i=="p" or i=="q" or i=="r" or i=="s" or i=="t" or i=="u" or i=="v" or i=="w" or i=="x" or i=="y" or i=="z" or \
i == "A" or i=="B" or i=="C" or i=="D" or i=="E" or i=="F" or i=="G" or i=="H" or i=="I" or i=="J" or i=="K" or i=="L" or i=="M" or i=="N" or i=="O" or i=="P" or i=="Q" or i=="R" or i=="S" or i=="T" or i=="U" or i=="V" or i=="W" or i=="X" or i=="Y" or i=="Z":
list1.append(i)
else:
list4.append(i)
print(f"特殊字符{exstr}出现的次数为:{str1.count(exstr)}次")
print(f"这串字符中中英文字符有{len(list1)}个")
print(f"这串字符中数字有{len(list2)}个")
print(f"这串字符中空格有{len(list3)}个")
print(f"这串字符中其他字符有{len(list4)}个")
# 其他解法:
s = input("请输入一个字符串:")
letters = 0
space = 0
digit = 0
others = 0
for c in s:
if c.isalpha(): #判断是否为英文字母
letters += 1
elif c.isspace(): #判断是否为空格
space += 1
elif c.isdigit(): #判断是否为数字
digit += 1
else:
others += 1
print ("英文字母,空格,数字和其他字符的个数分别为:",letters,space,digit,others)
#编写一个程序,对输入的零钱,给出找零方案。可用的钱币的面值有50元,20元,10元,5元,2元,1元,5角,2角,1角,5分,2分,1分。
#例如输入为10001,则输出为2个50元,1个1分钱。
money = int(input("请输入零钱(单位:分):"))
print("需要找:",end='')
for i in [5000,2000,1000,500,200,100,50,20,10,5,2,1]:
a = money//i
money = money-i*a
if a == 0:
continue
if i == 5000 or i == 2000 or i == 1000 or i == 500 or i == 200 or i == 100 :
print(f"{a}张{int(i/100)}元",end=',')
elif i == 50 or i == 20 or i == 10:
print(f"{a}张{int(i/10)}角",end=',')
else:
print(f"{a}张{i}分", end=',')
# 需求:将一个数分解为质因数,如输入90,输出90=2*3*3*5
#
import math
try:
list1 = []
n = int(input("请输入一个整数:"))
x = n
if n%2!=0 and n%3!=0 and n%5!=0 and math.sqrt(n)%1!=0 or n <=3:
print(f"{n}={n}")
else:
while n>=2:
if n%2==0:
n =n/2
list1.append(2)
elif n%3==0:
n = n/3
list1.append(3)
elif n%5==0:
n = n/5
list1.append(5)
elif math.sqrt(n)%1==0:
list1.append(int(math.sqrt(n)))
list1.append(int(math.sqrt(n)))
break
else:
break
list1.append(int(n))
a = str(list1)
b=a.replace("[","")
c=b.replace("]","")
d=c.replace(",","*")
e=d.replace(" ","")
print(f"{x}={e}")
except TypeError:
print("输入有误,应输入整数")
#一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如28 = 1+2+4+7+14编程找出1000以内的所有完数。
for n in range(1,1001):
list1=[]
for i in range(1,n): #循环1000以内的数作为除数,再循环1000以内的数作为被除数即可找出所有因子
if n%i==0:
list1.append(i)
if sum(list1)==n:
print(n,"\t",list1)
#题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
h = 100
list1=[h]
for i in range(9):
h = h/2
list1.append(2*h)
print(f"共经过{sum(list1)}米")
print(f"第10次反弹{h}米")
#题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
# 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
# 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
a = 1
for i in range(9):
a = (a+1)*2
print(a)
# 运用逆向思维