Python:有关函数的定义与调用的程序设计多例(由顶点坐标计算三角形面积,不同数列求和,求两个数的最大公因数,找完全数)

 写在前面:文章中的例子均来自于学校发布的大计基作业,整理在此处以作备忘复习之用

本节例题将有助于帮助掌握python语言中函数的定义和调用方法

1.输入三角形三个顶点的坐标,计算该三角形的面积。要求将计算两点之间距离单独编写成一个函数。

思路:

首先定义计算距离函数

再构建主函数:

键入各点坐标,求各边边长,判断是否能构成三角形,利用海伦公式解决三角形面积问题

程序如下:

import math
def distance(x1,y1,x2,y2):
    dx=x2-x1
    dy=y2-y1
    dsquared=dx**2+dy**2
    result=math.sqrt(dsquared)
    return result

while True:
    print("说明:我们统一假设三角形三个顶点坐标分别为A(x1,y1),B(x2,y2),C(x3,y3),三边边长分别为a,b,c")
    x1=float(input("请输入x1的值:"))
    y1=float(input("请输入y1的值:"))
    x2=float(input("请输入x2的值:"))
    y2=float(input("请输入y2的值:"))
    x3=float(input("请输入x3的值:"))
    y3=float(input("请输入y3的值:"))

    a=distance(x2,y2,x3,y3)
    b=distance(x1,y1,x3,y3)
    c=distance(x1,y1,x2,y2)

    if a+b<c or b+c<a or c+a<b:
        print("您所提供的三边不足以构成一个三角形,请重新输入")
        continue
    else:
        p=(a+b+c)/2
        S=(p*(p-a)*(p-b)*(p-c))**0.5
        print("该三角形的面积为:",S)
        break

运算结果如下:

说明:我们统一假设三角形三个顶点坐标分别为A(x1,y1),B(x2,y2),C(x3,y3),三边边长分别为a,b,c
请输入x1的值:1
请输入y1的值:4
请输入x2的值:2
请输入y2的值:4
请输入x3的值:6
请输入y3的值:3
该三角形的面积为: 0.49999999999999445

2.输入 n 和 a,求 s=a+aa+aaa+aaaa+aa...a(最后一项是 n 个 a)的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时 n=5,a=2)。

程序如下:

n=int(input("请输入您所选择的n值:"))
a=int(input("请输入您所选择的a值:"))

s=0

for i in range(1,n+1,1):
    ai=0
    for k in range(1,i+1,1):
        ai=ai+a*(10**(k-1))
    s=s+ai

print("s的值为:",s)

运算结果如下:

请输入您所选择的n值:5
请输入您所选择的a值:2
s的值为: 24690

3.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...,求出这个数列的前 20 项之和。注意,这个序列的特点是后一项的分子是前一项分子分母的和,后一项的分母是前一项的分子。

程序如下:

a=2
b=1
sum=2
for i in range(2,21,1):
    a,b=b,a
    a=a+b
    p=a/b
    sum=sum+p
print("该分数数列前20项之和为:",sum)

运算结果如下:

该分数数列前20项之和为: 32.66026079864164

4.编写函数,求两个数的最大公因数。编写主程序,输入两个整数,调用函数求最大公因数,在主程序中输出最大公因数。

程序如下:

def S(x1,x2):
    if x1<x2:
        x1,x2=x2,x1
    while(x2!=0):
        z=x2
        x2=x1%x2
        x1=z
    return x1

a=int(input("请输入第一个整数:"))
b=int(input("请输入第二个整数:"))
print("这两个整数的最大公约数是:",S(a,b))

运算结果如下:

请输入第一个整数:117
请输入第二个整数:81
这两个整数的最大公约数是: 9

5.一个数如果恰好等于它的所有因子(不包括它本身)之和,这样的数称为完全数。例如,6 的因子为 1,2,3,而 6=1+2+3 则 6 是一个完数。找出1000以内的所有完全数,输出时用空格隔开。

程序如下:

(注意:在本程序中 for i in range句结束值应为x而不是x+1,因为x本身这个因子不被计算在完全数计算内)

for x in range(1,1001):
    y=0
    for i in range(1,x):
        if x%i==0:
            y=y+i
    if y==x:
        print(x,end=' ')

运行结果如下:

6 28 496 

例毕

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉普拉斯小妖精

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值