Python

Python经典基础编程练习题(四)——每日10题

在这里插入图片描述

1.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
解题思路:注意分子分母的规律

  1. a = 2.0
  2. b = 1.0
  3. s = 0
  4. for n in range(1,21):
  5.  s += a / b
    
  6.  t = a
    
  7.  a = a + b
    
  8.  b = t
    
  9. print (s)
    2.1+2!+3!+…+20!的和
  10. n = 0
  11. s = 0
  12. t = 1
  13. for n in range(1,21):
  14.  t *= n
    
  15.  s += t
    
  16. print (‘1! + 2! + 3! + … + 20! = %d’ % s)
    3.利用递归方法求5!
  17. sum=0
  18. def digui(n):
  19.  if n==0:
    
  20.      sum=1
    
  21.  else:
    
  22.      sum=n*digui(n-1)
    
  23.  return sum
    
  24. print(digui(5))
    4.利用递归函数调用方式,将所输入的n个字符,以相反顺序打印出来
  25. def out(s,n):
  26.  if n == 0:
    
  27.      return
    
  28.  else:
    
  29.      print(s[n-1],end=' ')
    
  30.      out(s,n-1)
    
  31. s=input(‘请输入:’)
  32. #s=s.split(’,’)
  33. n= len(s)
  34. out(s,n)
    5.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大
    解题思路:递归
  35. def age(n):
  36.  if n == 1:
    
  37.      a=10
    
  38.  else:
    
  39.      a=age(n-1)+2
    
  40.  return a
    
  41. print(age(5))
    6.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字
    解题思路:用栈的思想
  42. def jisuan(n):
  43.  l=[]
    
  44.  while n!=0:
    
  45.      a=n%10
    
  46.      l.append(a)
    
  47.      n=n//10
    
  48.  return l
    
  49. n=int(input(‘请输入:’))
  50. l=jisuan(n)
  51. a= len(l)
  52. for i in range(a):
  53. print(l[i],end=' ')
    

7.判断一个5位数是不是回文数

  1. str=input(‘请输入:’)
  2. a=int(str)
  3. t=1
  4. for i in range(5//2):
  5.  if str[i] != str[5-i-1]:
    
  6.      t=0
    
  7.      break
    
  8. if t:
  9.  print('%d 是一个回文数' % a)
    
  10. else:
  11. print('%d 不是一个回文数' % a)
    

8.输出指定格式的日期
解题思路:了解datetime的方法

  1. import datetime
  2. if name == ‘main’:
  3.  # 输出今日日期,格式为 dd/mm/yyyy。更多选项可以查看 strftime() 方法
    
  4.  print(datetime.date.today().strftime('%d/%m/%Y'))
    
  5.  # 创建日期对象
    
  6.  miyazakiBirthDate = datetime.date(1998,3,18)
    
  7. print(miyazakiBirthDate.strftime('%d/%m/%Y'))
    
  8. # 日期算术运算
    
  9. miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)
    
  10. print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))
    
  11. # 日期替换
    
  12. miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)
    
  13. print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))
    

9.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
解题思路:利用三层循环,分别代表a,b,c三人从(x,y,z)中各选一人,利用题中条件。

  1. t=0
  2. for i in range(ord(‘x’),ord(‘z’) + 1):#a选手
  3.  for j in range(ord('x'),ord('z') + 1):#b选手
    
  4.      if i != j:
    
  5.          for k in range(ord('x'),ord('z') + 1):#c选手
    
  6.                  if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):#如果a不和x,c不和x和z
    
  7.                      print('order is a -- %s\t b -- %s\tc -- %s' % (chr(i), chr(j), chr(k)))
    
  8.                      t=1
    
  9.                      break
    
  10.     if t==1:
    
  11.         break
    
  12. if t==1:
    
  13.     break
    

10.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

  1. letter = input(“please input:”)
  2. if letter == ‘S’:
  3.  letter = input("please input second letter:")
    
  4.  if letter == 'a':
    
  5.      print('Saturday')
    
  6.  elif letter == 'u':
    
  7.      print('Sunday')
    
  8.  else:
    
  9.      print('data error')
    
  10. elif letter == ‘F’:
  11. print('Friday')
    
  12. elif letter == ‘M’:
  13. print('Monday')
    
  14. elif letter == ‘T’:
  15. letter = input("please input second letter:")
    
  16. if letter == 'u':
    
  17.     print('Tuesday')
    
  18. elif letter == 'h':
    
  19.     print('Thursday')
    
  20. else:
    
  21.     print('data error')
    
  22. elif letter == ‘W’:
  23. print('Wednesday')
    
  24. else:
  25. print('data error')
    

在这里插入图片描述
用到看到的点个赞呗!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值