写一段程序,让用户输入三角形的三条边长,如果三条边长不能构成三角形,则提示用户重新输入
如果可以构成三角形,则计算周长和面积
对于用户的输入,首先要约定格式,这里简单的约定为每个边长之间用空格间隔
在获得用户的输入以后,要对输入进行检查,有两点需要检查
(1) 检查是不是输入了三条边的边长,输入2个或者4个都是错误的
(2) 检查输入的内容是不是数值型,如果输入的是字母,那根本驴唇不对马嘴
以上两点是编程时要考虑的,经过上面的分析你应该有所体会,编程,并不是你掌握一门语言然后用它在计算机上做各种操作
编程,是对问题的思考,我这里约定让用户一次性输入三条边的边长,中间用空格隔开,你也可以让用户输入三次,也可以让用户输入一次但用别的字符做间隔,这些都是没有定论的,完全取决于你的思考
对于输入内容检查,你可能会以为python会自己完成,但其实不会,input获得的就是字符串,你必须理解什么是字符串,必须清楚的知道input的作用,这些都是最最基础的内容,如果你不掌握这些,那你就无法思考
根本不存在一种方法或者操作可以满足你的要求,可以解决实际的问题,编程就是分析问题然后你自己解决问题的过程
def get_edge(line):
"""
根据用户的输入获得三条边
用户输入三条边的长度,用空格隔开 类似于 3 4 5
:param line:
:return:
"""
edge_lst = line.split(" ")
# 如果输入条数不是3
if len(edge_lst) != 3:
return False, (0, 0, 0)
try:
# raw_input 获得用户的输入,得到的是字符串,这里把字符串转成float数值
edge_lst = [float(item) for item in edge_lst]
except:
return False, (0, 0, 0)
return True, (edge_lst[0], edge_lst[1], edge_lst[2])
def is_able_triangle(a, b, c):
"""
判断能否构成三角形
:param a:
:param b:
:param c:
:return:
"""
return (a + b > c) and (a + c > b) and (c + b > a)
def triangle_func():
while True:
line = input('输入三角形的三个边长,用空格隔开,退出请输入q:')
if line == 'q':
break
input_correct, edges = get_edge(line)
if not input_correct:
print('输入错误')
continue
if not is_able_triangle(edges[0], edges[1], edges[2]):
print('不能构成三角形')
continue
perimeter = sum(edges)
half_perimeter = perimeter/2
area = (half_perimeter*(half_perimeter-edges[0])*(half_perimeter-edges[1])*(half_perimeter-edges[2])) ** 0.5
print('周长: {perimeter} 面积:{area}'.format(perimeter=perimeter, area=area))
if __name__ == '__main__':
triangle_func()
QQ交流群: 211426309