QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

版主

Rank: 20Rank: 20Rank: 20Rank: 20

技术值
查看: 1450|回复: 59

[技术交流] Python:每日一题 150

[复制链接]
最佳答案
736 
累计签到:845 天
连续签到:14 天
冬雪雪冬 发表于 2018-2-7 10:54:06 145059 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 冬雪雪冬 于 2018-2-11 20:19 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考”,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
给出三角形三个边的长度,判定是:
等边三角形
等腰直角三角形
直角三角形
等腰三角形
其它三角形
不能成为三角形

注:
1. 如果是等腰直角三角形就不再说为直角三角形或等腰三角形了。
2. 为了方便判断,输入的是三个边的长度的平方,且为整数。

本帖被以下淘专辑推荐:

楼层
跳转到指定楼层
最佳答案
0 
累计签到:53 天
连续签到:1 天
Q爸爸 发表于 2018-2-7 11:10:25 | 显示全部楼层
本帖最后由 Q爸爸 于 2018-2-7 11:14 编辑

a = int(input('a边'))
b = int(input('b边'))
c = int(input('c边'))


list1 = [a,b,c]
list1.sort()


if list1[0]+list1[1] < list1[2] :
    print('不能成为三角形')
else:
    if list1[0] == list1[1] and list1[1]==list1[2] :
        print('等边三角形')
    elif list1[0]+list1[1] == list1[2] and list1[0] == list1[1]:
        print('等腰指教三角形')
    elif list1[0]+list1[1] == list1[2] :
        print('直角三角形')
    elif list1[0] == list1[1]:
        print('等腰三角形')
    else :
        print('其他三角形')



还能沙发吗

点评

根据你的程序list1[0]+list1[1] == list1[2],输入的应该是边长的平方,如果分别为4, 9,16,则 list1[0]+list1[1] < list1[2] ,但平方根为2,3,4,是可以成为三角形的。  发表于 2018-2-10 19:34
最佳答案
219 
累计签到:95 天
连续签到:27 天
塔利班 发表于 2018-2-7 11:36:03 | 显示全部楼层
本帖最后由 塔利班 于 2018-2-8 11:29 编辑
  1. def cos(x,y,z):
  2.     return (x*x+y*y-z*z)/(2*x*y)

  3. def tri(x,y,z):
  4.     a=[cos(x,y,z),cos(x,z,y),cos(y,z,x)]
  5.     b=''
  6.     c='三角形'

  7.     for i in a:
  8.         if not -1<i<1:
  9.             b='不能成为'
  10.     if 0 in a:
  11.         b='直角'
  12.     if len(set(a))==1:
  13.         b='等边'
  14.     if len(set(a))==2:
  15.         b = '等腰'+b
  16.     if b=='':
  17.         b='其他'
  18.     print(b+c)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
219 
累计签到:95 天
连续签到:27 天
塔利班 发表于 2018-2-7 11:41:07 | 显示全部楼层
本帖最后由 塔利班 于 2018-2-7 11:45 编辑


都是整数实现不了等腰直角三角形
而且好像开方转小数机制也不会出现等腰直角三角形

点评

所以要求输入边长的平方,如1,1,2就是等腰直角三角形  发表于 2018-2-10 19:36
最佳答案
1 
累计签到:78 天
连续签到:2 天
mariomm 发表于 2018-2-7 11:53:47 | 显示全部楼层
  1. def San(a,b,c):
  2.     if a+b<c or a+c<b or b+c<a:
  3.         print('不能成为三角形')      

  4.     if a == b == c:
  5.         print('此3边能构成一个等边三角形')

  6.     if a**2 + b**2 == c**2 or a**2 + c**2 == b**2 or b**2 + c**2 == a**2:

  7.         if a == b or b == c or a == c:
  8.             print('此3边能够成等腰直角三角形')

  9.         else:
  10.             print('此3边能够成为直角三角形')

  11.     if a == b or a == c or b == c:
  12.         print('此3边能成为等腰三角形')

  13.     if a+b<c or a+c<b or b+c<a:
  14.         print('此3边不能构成三角形')

  15. a = int(input('请输入第一条边\n'))

  16. b = int(input('请输入第二条边\n'))

  17. c = int(input('请输入第三条边\n'))

  18. result = San(a,b,c)

复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
7 
累计签到:57 天
连续签到:1 天
inverseli 发表于 2018-2-7 13:19:23 | 显示全部楼层
  1. import math
  2. def judge(a,b,c):
  3.     x = math.sqrt(a)
  4.     y = math.sqrt(b)
  5.     z = math.sqrt(c)
  6.     if x+y>z and x+y>z and x+y>z:
  7.         if a==b and b==c:
  8.             print('等边三角形')
  9.         elif (a+b)==c and (a==b or b==c or a==c):
  10.             print('等腰直角三角形')
  11.         elif (a+b)==c:
  12.             print('直角三角形')
  13.         elif a==b or a==c or b==c:
  14.             print('等腰三角形')
  15.         else:
  16.             print('其它三角形')
  17.     else:
  18.         print('不是三角形')

  19. a,b,c = map(int,input('请输入三边的平方:').split())
  20. judge(a,b,c)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
0 
累计签到:96 天
连续签到:15 天
dunhee 发表于 2018-2-7 13:32:33 | 显示全部楼层

  1. #第一次答题,不晓得什么样的形式好,先用codewar里的函数形式试试咯
  2. def whatTriangle(a, b, c):
  3.     [a, b, c] = sorted([a, b, c])
  4.     if a**0.5 + b**0.5 < c**0.5:
  5.         return '不能成为三角形'
  6.     else:
  7.         if a + b == c:
  8.             if a != b:
  9.                 return '直角三角形'
  10.             else:
  11.                 return '等腰直角三角形'
  12.         elif a == b or b == c:
  13.             if a != c:
  14.                 return '等腰三角形'
  15.             else:
  16.                 return '等边三角形'
  17.         else:
  18.             return '其它三角形'
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
1 

尚未签到

dinyz 发表于 2018-2-7 13:34:54 | 显示全部楼层
程序:
co = 'y'
while (co == 'y'):
    L = input('输入三角形各边长度的平方(用逗号分隔):')
    L = L.split(",")
   
    L1 = []
    for n in L:
        L1.append(int(n))
    L1.sort()
   
    L = L1
    info = str()
   
    if math.sqrt(L[0]) + math.sqrt(L[1]) <= math.sqrt(L[2]):
        info = info + '不能成为'
    else:
        if L.count(L[1]) == 3:
            info = info + '等边'
        if L.count(L[1]) == 2:
            info = info + '等腰'
        if L[0] + L[1] == L[2]:
            info = info + '直角'
        if info == "":
            info = info + '其它'
    info = info + '三角形'
    print(info)
    co = input('是否继续(输入y继续):')

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
0 
累计签到:83 天
连续签到:6 天
victor.xu 发表于 2018-2-7 13:55:44 | 显示全部楼层
本帖最后由 victor.xu 于 2018-2-8 08:57 编辑

利用三角形三边关系定理和余弦定理即可判断。

输入边长的代码如下:
  1. def criterial_triangle(lis):
  2.     lis.sort()
  3.     L = lis[0]
  4.     M = lis[1]
  5.     U = lis[2]
  6.     if L + M > U and M + U > L and U + L > M:
  7.         cosa = (L**2 + M**2 - U**2)/2*L*M
  8.         if L == M and L == U:
  9.             print('这是一个等边三角形!')
  10.         elif cosa == 0 and L == M:
  11.             print('这是一个等腰直角三角形!')
  12.         elif cosa == 0 and L != M:
  13.             print('这是一个直角三角形!')        
  14.         elif ((L == M and L != U) or (L != M and M == U)) and cosa != 0:
  15.             print('这是一个等腰三角形!')
  16.         else:
  17.             print('这是一个其他三角形!')
  18.     else:
  19.         print('Error!不能构成三角形!')
  20. lis1 = eval(input('请输入三位正整数:\n'))
  21. lis1 = [int(i) for i in lis1]
  22. criterial_triangle(lis1)
复制代码


输入边长的平方的代码如下:

  1. def criterial_triangle(lis):
  2.     lis.sort()
  3.     L = lis[0]**0.5
  4.     M = lis[1]**0.5
  5.     U = lis[2]**0.5
  6.     if L + M > U and M + U > L and U + L > M:
  7.         cosa = (lis[0] + lis[1] - lis[2])/2*L*M
  8.         if L == M and L == U:
  9.             print('这是一个等边三角形!')
  10.         elif cosa == 0 and L == M:
  11.             print('这是一个等腰直角三角形!')
  12.         elif cosa == 0 and L != M:
  13.             print('这是一个直角三角形!')        
  14.         elif ((L == M and L != U) or (L != M and M == U)) and cosa != 0:
  15.             print('这是一个等腰三角形!')
  16.         else:
  17.             print('这是一个其他三角形!')
  18.     else:
  19.         print('Error!不能构成三角形!')
  20. lis1 = eval(input('请输入三位正整数:\n'))
  21. lis1 = [int(i) for i in lis1]
  22. criterial_triangle(lis1)
复制代码


评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
1 
累计签到:78 天
连续签到:2 天
mariomm 发表于 2018-2-7 13:57:38 | 显示全部楼层
  1. def San(a,b,c):
  2.     if a+b<=c or a+c<=b or b+c<=a or c-a >=b:
  3.         print('不能成为三角形\n')   
  4.     else:
  5.         print('此3边能成为三角形')
  6.         
  7.     if a+b>c and a+c>b and b+c>a:
  8.       
  9.             
  10.         if a == b == c:
  11.             print('此3边能构成一个等边三角形\n')

  12.         if a**2 + b**2 == c**2 or a**2 + c**2 == b**2 or b**2 + c**2 == a**2:

  13.             if a == b or b == c or a == c:
  14.                 print('此3边能够成等腰直角三角形\n')

  15.             else:
  16.                 print('此3边能够成为直角三角形\n')

  17.         if a == b or a == c or b == c:
  18.             print('此3边能成为等腰三角形\n')

  19.    
  20. while True:
  21.     a = int(input('请输入第一条边\n'))

  22.     b = int(input('请输入第二条边\n'))

  23.     c = int(input('请输入第三条边\n'))

  24.    
  25.     result = San(sorted([a, b, c])[0],sorted([a, b, c])[1],sorted([a, b, c])[2])
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
9 
累计签到:106 天
连续签到:1 天
timeislife 发表于 2018-2-7 14:10:55 | 显示全部楼层
  1. #为了方便判断,输入的是三个边的长度的平方,且为整数
  2. def whatTri(s1,s2,s3):
  3.     tmp = []
  4.     if s1 == s2 == s3:
  5.         tmp.append('等边三角形')
  6.     else:
  7.         if s1 == s2 or s1 == s3 or s2 == s3:
  8.             tmp.append('等腰')
  9.         tep = [s1,s2,s3]
  10.         tep.remove(max(tep))
  11.         tep.remove(max(tep))
  12.         if min((s1,s2,s3)) + tep[0] == max((s1,s2,s3)):
  13.             tmp.append('直角')
  14.         if min((s1,s2,s3))**0.5 + tep[0] <= max((s1,s2,s3))**0.5:
  15.             tmp.append('不能成为')
  16.     if len(tmp) == 0:
  17.         return '其它三角形'
  18.     elif len(tmp) == 2:
  19.         return '等腰直角三角形'
  20.     else:
  21.         return tmp[0]+'三角形'
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
8 
累计签到:71 天
连续签到:1 天
ouyunfu 发表于 2018-2-7 14:20:34 | 显示全部楼层
#-*- coding:utf-8 -*-
print('请从小到大依次输入三角形三条边的平方')
a = input('请输入第一条边的平方:')
b = input('请输入第二条边的平方:')
c = input('请输入第三条边的平方:')
if a==b==c:
    print('此三角形为等边三角形')
elif a==b and a+b==c:
    print('此三角形为等腰直角三角形')
elif a+b==c:
    print('此三角形为直角三角形')
elif a==b and a**0.5+b**0.5>c**0.5:
    print('此三角形为等腰三角形')
elif a**0.5+b**0.5>c**0.5:
    print('此三角形为其它三角形')
else:
    print('这三条边不能成为三角形')

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
1 
累计签到:53 天
连续签到:1 天
结果咧 发表于 2018-2-7 14:28:40 | 显示全部楼层
print('----------判定三角形----------')
temp1=input('a:')
temp2=input('b:')
temp3=input('c:')
while not (temp1.isdigit() and temp2.isdigit() and temp3.isdigit()):
          temp1=input('输入了错误的数据类型,请重新输入a:')
          temp2=input('输入了错误的数据类型,请重新输入b:')
          temp3=input('输入了错误的数据类型,请重新输入c:')
a=int(temp1)
b=int(temp2)
c=int(temp3)

if not ((a+b)>c and (a+c)>b and (b+c)>a and abs(a-b)<c and abs(b-c)<a and abs(a-c)<b):
          print('边长a,b,c无法构成三角形。')
elif (a==b and b==c):
          print('等边三角形。')
elif ((a**2+b**2==c**2)or(b**2+c**2==a**2)or(a**2+c**2==b**2))and(a==b or b==c or a==c ):
          print('等边直角三角形。')
elif (a**2+b**2==c**2)or(b**2+c**2==a**2)or(a**2+c**2==b**2):
          print('直角三角形。')
elif a==b or b==c or a==c:
          print('等腰三角形。')
else:
          print('其他三角形。')

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
38 
累计签到:56 天
连续签到:1 天
南城顾她 发表于 2018-2-7 15:29:37 | 显示全部楼层
try:
    a = float(input('请输入三角形的第一个边长:'))
    b = float(input('请输入三角形的第二个边长:'))
    c = float(input('请输入三角形的第三个边长:'))
except TypeError as x:
    print('TypeError:%s'%x)
if a + b > c and a + c >b and b + c >a :
    if (a == b and a != c) or (a == c and a != b) or(b == c and b !=a ) :
        print('你输入的是等腰三角形')
    elif a*a + b*b == c*c or a*a + c*c == b*b or c*c + b*b == a*a :
        print('你输入的直角三角形')
    elif a == b == c :
        print('你输入的是等边三角形')
    else:
        print('你输入的是三角形')
else:
    print('你输入的不是三角形')

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
0 
累计签到:1 天
连续签到:1 天
小骚猫 发表于 2018-2-7 17:14:24 | 显示全部楼层
x = int(input('请输入第一个数字:'))
y = int(input('请输入第二个数字:'))
z = int(input('请输入第三个数字:'))

def triangle(x, y, z):
    if x == y == z:
        print('这是等边三角形')
        exit();
    if x == y and x*x + y*y == z*z:
        print('这是等腰直角三角形')
        exit();
    if x == z and x*x + z*z == y*y:
        print('这是等腰直角三角形')
        exit();
    if y == z and y*y + z*z == x*x:
        print('这是等腰直角三角形')
        exit();
    if x != y and x*x + y*y == z*z:
        print('这是直角三角形')
        exit();
    if x != z and x*x + z*z == y*y:
        print('这是直角三角形')
        exit();
    if y != z and y*y + z*z == x*x:
        print('这是直角三角形')
        exit();
    if x == y and x + y > z:
        print('这是等腰三角形')
        exit();
    if x == z and x + z > y:
        print('这是等腰三角形')
        exit();
    if y == z and y + z > x:
        print('这是等腰三角形')
        exit();
    if x + y <= z :
        print('不能构成三角形')
        exit();
    if x + z <= y:
        print('不能构成三角形')
        exit();
    if y + z <= x :
        print('不能构成三角形')
        exit();
    else:
        print('其他三角形')

triangle(x, y, z)

可能我的代码最low了

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
0 
累计签到:101 天
连续签到:1 天
晓屁屁 发表于 2018-2-7 17:17:39 | 显示全部楼层
# -*- coding: utf-8 -*-
def trigon(x,y,z):
    if x+y>z and x+z>y and y+z>x and x>0 and y>0 and z>0:      #是三角形
        if x == y == z:
            print('等边三角形!')
            exit()
        if x == y or y == z or x == z:
            if x+y==z or x+z==y or y+z==x:
                print('等腰直角三角形!')
                exit()
            else:
                print('等腰三角形!')
                exit()
        if x+y==z or x+z==y or y+z==x:
            print('直角三角形!')
            exit()
        else:
            print('其它三角形!')
            exit()
    else:
        print('不是三角形!')
        exit()
temp1 = int(input('请输入X的平方值:'))
temp2 = int(input('请输入Y的平方值:'))
temp3 = int(input('请输入Z的平方值:'))
trigon(temp1,temp2,temp3)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
3 
累计签到:54 天
连续签到:1 天
int_lyc 发表于 2018-2-7 18:19:32 | 显示全部楼层
  1. from math import sqrt

  2. def zhijiao(a,b,c):
  3.         if a*a+b*b==c*c or a*a+c*c==b*b or b*b+c*c==a:
  4.                 return True
  5.         else:
  6.                 return False

  7. def dengyao(a,b,c):
  8.         if a==b or a==c or b==c:
  9.                 return True
  10.         else:
  11.                 return False

  12. def dengbian(a,b,c):
  13.         if a==b==c:
  14.                 return True
  15.         else:
  16.                 return False

  17. def single(a,b,c):
  18.         if (a+b)>c and (a+c)>b and (b+c)>a:
  19.                 if dengyao(a,b,c):
  20.                         if dengbian(a,b,c):
  21.                                 print("等边三角形")
  22.                         elif zhijiao(a,b,c):
  23.                                 print("等腰直角三角形")
  24.                         else:
  25.                                 print("等腰三角形")
  26.                 elif zhijiao(a,b,c):
  27.                         print("直角三角形")
  28.         else:
  29.                 print("不能构成三角形")

  30. while True:
  31.         a = sqrt(int(input("第一条边的平方:")))
  32.         b = sqrt(int(input("第二条边的平方:")))
  33.         c = sqrt(int(input("第三条边的平方:")))
  34.         single(a,b,c)
复制代码

草图.png

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
0 

尚未签到

lihw 发表于 2018-2-7 18:43:51 | 显示全部楼层
  1. def sanjiao(x,y,z):
  2.     if x+y<z or x+z < y or y+z<x:
  3.         out="不能成为三角形"
  4.         
  5.     else:
  6.         if x==y==z:
  7.             out="等边三角形"
  8.         if x==y or x==z or y==z:
  9.             out=" 等腰三角形"
  10.         if x+y==z or x+z==y or y+z==x:
  11.             out= "直角三角形"
  12.         if (x==y or x==z or y==z) and (x+y==z or x+z==y or y+z==x):
  13.             out ="等腰直角三角形"
  14.     return out
  15.             
复制代码

点评

问题同2楼  发表于 2018-2-10 19:43
最佳答案
0 
累计签到:66 天
连续签到:2 天
小强森 发表于 2018-2-7 20:17:13 | 显示全部楼层
a=input('请输入边a:');b=input('请输入边b:');c=input('请输入边C:')
a1=int(a);a2=int(b);a3=int(c)
if a1+a2<=a3 and a1+a3<=a2 and a2+a3<=a1:
    print('这不能构成三角形')
else:
    if (a1==a2 or a2==a3 or a3==a1) and (a1!=a2 or a2!=a3 or a3!=a1):
        print('等腰三角形')
    else:
        if (a1==a2 and a1==a3 and a2==a3):
            print('等边三角形')
        else:
            if (a1*a1+a2*a2==a3*a3) or (a1*a1+a3*a3==a2*a2) or (a2*a2+a3*a3==a1*a1):
                print('直角三解形')
            else:
                if((a1==a2 and a1*a1+a2*a2==a3*a3) or (a2==a3 and a2*a2+a3*a3==a1*a1) or (a1==a3 and a1*a1+a3*a3==a2*a2)):
                   print('等腰直角三解形:')
                else:
                   print('一般三角形')
                                
        

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

最佳答案
5 
累计签到:401 天
连续签到:5 天
solomonxian 发表于 2018-2-7 20:24:03 | 显示全部楼层
几个并列的条件搭拼组合
  1. def fun(a_square, b_square, c_square):
  2.     if c_square - a_square - b_square >= 2 * pow(a_square * b_square, 0.5):
  3.         return "不能成为三角形"
  4.     else:
  5.         part1 = {1:"等边", 2:"等腰", 3:""}
  6.         part2 = {0:"直角"}
  7.         
  8.         lst = sorted([a_square, b_square, c_square])
  9.         p1 = len(set(lst))
  10.         p2 = lst[2] - lst[1] - lst[0]

  11.         return ("{}{}".format(part1[p1], part2.get(p2, '')) or "其它") + "三角形"
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-5-20 18:12

快速回复 返回顶部 返回列表