Python经典基础编程练习题(四)——每日10题
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')
用到看到的点个赞呗!