编写一个函数,判断三个数是不是能构成一个三角形,python
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一个函数,判断三个数是不是能构成一个三角形,python相关的知识,希望对你有一定的参考价值。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
a = input()
b = input()
c = input()
if (a + b > c and a + c > b and b + c > a and abs(a - b) < c and abs(a - c) < b and abs(b - c) < a):
print "能组成三角形"
else:
print "不能组成三角形"
程序条件时根据三角形原理两边之和大于第三边,两边之差小于第三边的规则判断。
例如程序运行时分别输入2、3、4,程序输出"能组成三角形"。
扩展资料
1、python输入用法介绍:
python输入时使用input( )函数,这个函数只能接收“数字”的输入,返回所输入的数字的类型( int, float )。
示例:
a = input("input a: ")
print(a,type(a))
2、python abs函数介绍
abs() 函数返回数字的绝对值,语法是:abs( x ),函数返回x(数字)的绝对值。
参考技术A#encoding=utf-8
import math
while True:
str=raw_input("please input three numbers a,b,c:('stop' to exit)")
print "####",str,type(str)
if str !="stop":
x,y,z = eval(str)
min_value=min(x,y,z)
max_value=max(x,y,z)
if min_value<=0:
print "error"
elif (x+y+z)>2*max_value:
print u"能组成三角形"
else:
print u"不能组成三角形"
else:
break
扩展资料:
3个整数,判断是否能构成三角形可以根据数学公式进行判断。
一、数学定理
要构成三角形,必须要任意两边和大于第三边。
进行判断的时候,其实只需要判断最小的两边和大于最长一边即可。
二、算法设计
根据数学定理,在获取到三个边长后,可以有多种方法进行判断。
1、穷举。不做大小判断,对任意两边相加大于第三边即可。即:
a+b>c&&a+c>b&&b+c>a2、判断出三边大小关系,并排列,得到序列a≥b≥c,然后判断a+b>c即可。
3、得到三边a,b,c并得到其中最大值max,然后判断a+b+c>max*2即可。
参考技术B 回答#include int judge(int x,int y,int z)int m; if (((x+y)>z)&&((x-y)y)&&((x-z)x)&&((y-z)main()int a,b,c,n;printf("请输入a,b,c");scanf("%d%d%d",&a,&b,&c);n=judge(a,b,c);if (n==1)if (((a*a+b*b)==c*c)||((a*a+c*c)==b*b)||(b*b+c*c==a*a))printf("能够成直角三角形");elseprintf("能够成三角形");elseprintf("不能构成三角形");
希望我的回答对您有所帮助哦
提问这不是C语言吗
我要的是Python
Python
回答啊非常抱歉,稍等一下
a = input("请输入第1个数字:")a=int(a) #input()函数,其接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型,这里需要转为int类型b = input("请输入第2个数字:")b=int(b)c = input("请输入第3个数字:")c=int(c)if (a<=0 or b<=0 or c<=0): print("这三个数无法组成三角形")elif a+b
判断锐角,钝角,直角,等腰,等边
还有两个
回答你好哦,给你推荐一个软件CSDN,这个是很好的一个学习代码的东西
a,b,c=map(int ,input().split())if a
参考技术C代码:
if a + b > c and a + c > b and b + c > a and a > 0 and b > 0 and c > 0:
print ("是三角形")
else:
print ("不是三角形")
测试代码:
import randomfor i in range(10):
a = random.randint(-2, 10)
b = random.randint(-2, 10)
c = random.randint(-2, 10)
print a, b, c
is_triangle(a, b, c)
测试输出:
if a+b>c and b+c>a and a+c>b:
print("是三角形")
else:
print("不是三角形")
return;
#输入三条边长,逗号分隔
a,b,c=[float(items) for items in input().split(',')]
Judge(a,b,c)
实验三
Part1: 验证性内容:
1:
从键盘上输入3个数,让它们代表3条线段的长度,编写一个c程序判断这3条线段组成的三角形属于什么类 型(一般三角形、等腰三角形、等边三角形或不构成三角形)。
#include <stdio.h> int main() { double a,b,c; scanf("%lf %lf %lf", &a, &b, &c); if(a+b>c && a+c>b && b+c>a) { if(a==b && a==c) printf("构成等边三角形 "); else if(a==b || a==c || b==c) printf("构成等腰三角形 "); else printf("构成一般三角形 "); } else printf("不能构成三角形 "); return 0; }
结果:
把 demo1.cpp中嵌套使用的if语句部分替换成以下代码
#include <stdio.h> int main() { double a,b,c; scanf("%lf %lf %lf", &a, &b, &c); if(a+b>c && a+c>b && b+c>a) { if(a==b || a==c || b==c) { if (a==b && a==c) printf("构成等边三角形 "); else printf("构成等腰三角形 "); } else printf("构成一般三角形 "); } else printf("不能构成三角形 "); return 0; }
结果如下:
同样可以运用;
把demo1.cpp中输入三边长并且判断三角形类型的代码放到while循环里
#include <stdio.h> int main() { double a,b,c; printf("输入三角形三边: "); while(scanf("%lf%lf%lf",&a,&b,&c)) { if(a+b>c && a+c>b && b+c>a) { if(a==b && a==c) printf("构成等边三角形 "); else if(a==b || a==c || b==c) printf("构成等腰三角形 "); else printf("构成一般三角形 "); } else printf("不能构成三角形 "); printf(" 输入三角形三边: "); } return 0; }
结果如图:
可以注意到这个代码能重复输入多次,很实用;
有些情形下,用户希望程序一直运行,直到用户希望它停止。比如,手机里的运算器,启动后, 可以连续执行很多次运算,直到我们自己主动关闭。这里,这段代码就起到了这样的作用。
while(scanf("%ld%ld%ld",&a,&b,&c)) { // ... }
可以这样用的依据在于,当使用scanf()输入数据时,如果没有检测到输入,系统返回的是0,而检测到输 入,返回的则是1。
2:
用scanf()函数输入一个百分制成绩(整型量),要求输出成绩等级A,B,C,D,E。其中,90~100分为A,80~89 分为B, 70~79分为C, 60~69分为D,60分以下为E。
#include <stdio.h> int main() { int score; // 用于存放百分制分数 char grade; // 用于存放等级制分数(取值‘A‘, ‘B‘,‘C‘,‘D‘, ‘E‘) while(1) { printf("输入学生成绩: "); if(scanf("%d",&score) == 0) // 如果检测到没有成绩输入,则结束整个循环 break; if(score<0 || score > 100) { printf("输入成绩有误! "); continue; // 结束本次循环,开始下一次循环 } else if(score>=90 && score<=100) grade = ‘A‘; else if(score>=80 && score<=89) grade = ‘B‘; else if(score>=70 && score<=79) grade = ‘C‘; else if(score>=60 && score <=69) grade = ‘D‘; else grade = ‘E‘; printf("等级为: %c ", grade); } return 0; }
结果如图:
如果想结束输出,只要输入一个字符即可;
用switch语句改写:
#include <stdio.h> int main() { int score; // 用于存放百分制分数 char grade; // 用于存放等级制分数(取值‘A‘, ‘B‘,‘C‘,‘D‘, ‘E‘) while(1) { printf("输入学生成绩: "); if(scanf("%d",&score) == 0) // 如果检测到没有成绩输入,则结束整个循环 break; if(score<0 || score > 100) { printf("输入成绩有误! "); continue; // 结束本次循环,开始下一次循环 } switch(score/10) { // 使用switch进行分数等级判断 case 10: case 9: grade=‘A‘; break; case 8: grade=‘B‘; break; case 7: grade=‘C‘; break; case 6: grade=‘D‘; break; default: grade=‘E‘; } printf("等级为: %c ", grade); } return 0; }
3:
分别运行程序demo5_1.cpp和demo5_2.cpp,结合运行结果,对比和理解控制语句continue和break的功能:
#include <stdio.h> int main() { int i; // 在循环语句中使用continue for(i=1; i<=5; i++) { if (i%3 == 0) // 如果i是3的倍数,则结束本次循环,开始下一次循环 continue; printf("i=%d ",i); } return 0; }
#include <stdio.h> int main() { int i; // 在循环语句中使用break for(i=1; i<=5; i++) { if (i%3 == 0) // 如果i是3的倍数,则结束整个循环 break; printf("i=%d ",i); } return 0; }
结果分别为:
可以发现:
continue只能用于循环语句,跳过循环位于该语句后所有语句提前结束本次循环进入新一轮循环;
break只能用于循环或switch语句,跳出本层循环或本层switch结构;
4:分别运行程序demo6_1.cpp和demo6_2.cpp,结合运行结果,对比和理解在嵌套的循环中控制语句 continue和break的功能。
#include <stdio.h> const int LINE=3; // 定义符号常量LINE const int COLUME=5; // 定义符号常量COLUME int main() { int line; // 定义变量line, 用来控制行数 int col; // 定义变量col, 用来控制列数 // 输出LINE行信息 for(line=1; line<=LINE; line++) { // 每一行中,利用循环,输出各列信息 for(col=1; col<=COLUME; col++) { if(col%3 == 0) // 如果col是3的倍数,则结束本次循环,开始下一次循环 continue; printf("%5d", col); } printf(" "); // 每输出完一行,换行 } return 0; }
#include <stdio.h> const int LINE=3; // 定义符号常量LINE const int COLUME=5; // 定义符号常量COLUME int main() { int line; // 定义变量line, 用来控制行数 int col; // 定义变量col, 用来控制列数 // 输出LINE行信息 for(line=1; line<=LINE; line++) { // 每一行中,利用循环,输出各列信息 for(col=1; col<=COLUME; col++) { if(col%3 == 0) // 如果col是3的倍数,则结束内层循环体 break; printf("%5d", col); } printf(" "); // 每输出完一行,换行 } return 0; }
结果分别为:
可以发现:内层循环出现continue或break不会影响外层循环。
Part2: 补足程序,使得程序运行:
编程找出5个整数中的大数和小数,并输出找出的大数和小数。
#include <stdio.h> int main() { int number, max, min, n; n=1; printf("输入第%d个数: ", n); scanf("%d", &number); max = number; min = number; while(n<5) { n++; printf("输入第%d个数: ", n); scanf("%d", &number); if(number>max) max = number; else if(number<min) min = number; } printf("最大数为: %d ", max); printf("最小数为: %d ", min); return 0; }
Part3:编程练习:
1编程输出101~200之间所有素数,并输出这一区间内素数个数。
#include<stdio.h> int main() { int i=0; int j=0; int count=0; for(i=100;i<=200;i++) { for(j=2;j<=i;j++) { if(i%j==0) break; } if(i==j) { count++; printf("%d ",i); } } printf(" 100~200之间有%d个素数 ",count); return 0; }
2:编程打印输出图案。
#include<stdio.h> int main() { int a,b,c; for(a=1;a<=5;a++) { for(b=1;b<=5-a;b++) { printf(" "); } for(c=1;c<=(2*a-1);c++) { printf("*"); } printf(" "); } return 0; }
总结与体会:
通过这次实验,我加深了对循环语句以及循环语句与if语句的嵌套使用的理解;
在实验中踩的坑就是不熟悉内循环与外循环,不小心就搞乱了,但是经过调试等方法成功的纠正了自己的错误;
最后还是觉得C语言得多练多动手实践多思考才能学好;
以上是关于编写一个函数,判断三个数是不是能构成一个三角形,python的主要内容,如果未能解决你的问题,请参考以下文章
c语言编写程序:输入三角形的三条边,判断它们能否构成三角形,若能则指出何种三角形。
c语言编写程序:输入三角形的三条边,判断它们能否构成三角形,若能则指出何种三角形。