1.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
解题思路:注意分子分母的规律
a = 2.0
b = 1.0
s = 0
for n in range(1,21):
s += a / b
t = a
a = a + b
b = t
print (s)
2.1+2!+3!+...+20!的和
n = 0
s = 0
t = 1
for n in range(1,21):
t *= n
s += t
print ('1! + 2! + 3! + ... + 20! = %d' % s)
3.利用递归方法求5!
sum=0
def digui(n):
if n==0:
sum=1
else:
sum=n*digui(n-1)
return sum
print(digui(5))
4.利用递归函数调用方式,将所输入的n个字符,以相反顺序打印出来
def out(s,n):
if n == 0:
return
else:
print(s[n-1],end=' ')
out(s,n-1)
s=input('请输入:')
#s=s.split(',')
n= len(s)
out(s,n)
5.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大
解题思路:递归
def age(n):
if n == 1:
a=10
else:
a=age(n-1)+2
return a
print(age(5))
6.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字
解题思路:用栈的思想
def jisuan(n):
l=[]
while n!=0:
a=n%10
l.append(a)
n=n//10
return l
n=int(input('请输入:'))
l=jisuan(n)
a= len(l)
for i in range(a):
print(l[i],end=' ')
7.判断一个5位数是不是回文数
str=input('请输入:')
a=int(str)
t=1
for i in range(5//2):
if str[i] != str[5-i-1]:
t=0
break
if t:
print('%d 是一个回文数' % a)
else:
print('%d 不是一个回文数' % a)
8.输出指定格式的日期
解题思路:了解datetime的方法
import datetime
if __name__ == '__main__':
# 输出今日日期,格式为 dd/mm/yyyy。更多选项可以查看 strftime() 方法
print(datetime.date.today().strftime('%d/%m/%Y'))
# 创建日期对象
miyazakiBirthDate = datetime.date(1998,3,18)
print(miyazakiBirthDate.strftime('%d/%m/%Y'))
# 日期算术运算
miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)
print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))
# 日期替换
miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)
print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))
9.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
解题思路:利用三层循环,分别代表a,b,c三人从(x,y,z)中各选一人,利用题中条件。
t=0
for i in range(ord('x'),ord('z') + 1):#a选手
for j in range(ord('x'),ord('z') + 1):#b选手
if i != j:
for k in range(ord('x'),ord('z') + 1):#c选手
if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):#如果a不和x,c不和x和z
print('order is a -- %s\t b -- %s\tc -- %s' % (chr(i), chr(j), chr(k)))
t=1
break
if t==1:
break
if t==1:
break
10.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
letter = input("please input:")
if letter == 'S':
letter = input("please input second letter:")
if letter == 'a':
print('Saturday')
elif letter == 'u':
print('Sunday')
else:
print('data error')
elif letter == 'F':
print('Friday')
elif letter == 'M':
print('Monday')
elif letter == 'T':
letter = input("please input second letter:")
if letter == 'u':
print('Tuesday')
elif letter == 'h':
print('Thursday')
else:
print('data error')
elif letter == 'W':
print('Wednesday')
else:
print('data error')