第5章 函数作业

1. 定义一个函数实现反向输出一个整数。比如:输入 2345,输出 5432.

def InverseNumber(a):
   return int((a[::-1]))
print(InverseNumber('2345'))

def NumAcc(m,n):
   '''计算n/n+1的递减数列'''
   if n == 1 and m == 2:
      print('计算顺序为{0}/{1}'.format(n, m))
      return 1/2
   else:
      print('计算顺序为{0}/{1}'.format(n, m))
      return n/m+NumAcc(m-1,n-1)
n = int(input('请输入数列最后一项的分子'))
m = n+1
print('计算结果为{0}'.format(NumAcc(m,n)))

 运行结果为:

计算顺序为5/6
计算顺序为4/5
计算顺序为3/4
计算顺序为2/3
计算顺序为1/2
计算结果为3.5500000000000003

3. 输入三角形三个顶点的坐标,若有效则计算三角形的面积;如坐标无效,则给出提示。

import math
def TriArea():
   '''计算三角形面积'''
   lc = list(range(6))
   while True:
      for n in range(6):
            if n % 2 == 0:
               lc[n] = int(input('请输入横坐标'))
            else:
               lc[n] = int(input('请输入纵坐标'))

      if (lc[0] == lc[2] and lc[1] == lc[3] ) or (lc[0] == lc[4] and lc[1] == lc[5]) or (lc[2] == lc[4] and lc[3] == lc[5]) \
              or math.fabs((lc[4]-lc[2])/(lc[5]-lc[3])) == math.fabs((lc[4]-lc[0])/(lc[5]-lc[1])):
         print('输入错误错误请重新输入')
         continue
      else:
         break
   return 0.5*(lc[0]*lc[3]-lc[0]*lc[5]+lc[2]*lc[5]-lc[2]*lc[1]+lc[4]*lc[1]-lc[2]*lc[3])# S=(x1y2-x1y3+x2y3-x2y1+x3y1-x2y2)
print('三角形面积为{0}'.format(TriArea()))

运算结果为:

请输入横坐标0
请输入纵坐标0
请输入横坐标3
请输入纵坐标0
请输入横坐标0
请输入纵坐标4
三角形面积为6.0

4. 输入一个毫秒数,将该数字换算成小时数,分钟数、秒数。

def TimeTransform(m):
   Seconds = m / 1000
   Minutes = Seconds / 60
   Hours = Minutes / 60
   print('输入为{0}ms,{0}ms={1:.3f}s={2:.3f}min={3:.5f}hour'.format(m,Seconds,Minutes,Hours))
TimeTransform(int(input('请输入一个毫秒的时间')))

运行效果如下:

请输入一个毫秒的时间1000
输入为1000ms,1000ms=1.000s=0.017min=0.00028hour

5. 使用海龟绘图。输入多个点,将这些点都两两相连。

import turtle
def ConnectPoints(n):
   pr = list(range(n))
   pl = list(range(n))
   for i in range(n):
      pr[i] = int(input('请输入横坐标'))
      pl[i] = int(input('请输入纵坐标'))
   t = turtle.Pen()
   for l in range(len(pr)):
      t.penup()
      t.goto(pr[l], pl[l])
      t.pendown()
      t.write('{0},{1}'.format(pr[l],pl[l]))
      for m in range(l,len(pr)):
         t.goto(pr[m], pl[m])
         t.goto(pr[l], pl[l])
         t.pendown()
   turtle.done()
m = input('请输入要绘制的点数')
ConnectPoints(int(m))

输入为:

请输入要绘制的点数5
请输入横坐标0
请输入纵坐标100
请输入横坐标100
请输入纵坐标0
请输入横坐标80
请输入纵坐标-80
请输入横坐标-80
请输入纵坐标-80
请输入横坐标-100
请输入纵坐标0

绘制的图形为:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值