网易游戏外包—逻辑程序开发—笔试题—直角三角形

笔试题描述:

输入描述:

  • 输入三行数据;
  • 每行数据有两个整数x,y,中间以空格隔开;

输出描述:

  • 如果输入的三个整数点可以构成可以构成直角三角形,输出字符串:RIGHT;
  • 如果移动其中一个点一格距离(x+1,或者y+1),可以构成三角形,输出字符串:ALMOST;
  • 其他情况,输出字符串:NEITHER;

笔试情况:

  • 当时觉得有些难度,读了题就去做第四题了,然而第四题写完主体程序却没时间调试了,哎。。

考后复盘

解题思路:

  • 如果只是读了一遍题应该是分三种情况讨论,但是我发现这样就不好设置条件讨论;
  • 细想一下,后两句应该是一种情况,根据这种情况的结果分别输出不同字符串。

我的python代码

输入部分:

inputnum = []
while True:
    try:
        m = input().strip().split(' ')
        inputnum.append(int(m[0]))
        inputnum.append(int(m[1]))
    except:
        break

判断是否为直角三角形函数部分:

def judge_right_angled_triangle(inputnum):
    x1, y1, x2, y2, x3, y3 = inputnum[::]
    side1 = (x1 - x2) ** 2 + (y1 - y2) ** 2
    side2 = (x1 - x3) ** 2 + (y1 - y3) ** 2
    side3 = (x2 - x3) ** 2 + (y2 - y3) ** 2
    if 2 * max(side1, side2, side3) == side1 + side2 + side3:
        return "1"
    else:
        return "0"

  • 如果是直角三角形就返回1,不是返回0。

条件判断部分:

if judge_right_angled_triangle(inputnum) == 1:
    print('RIGHT')
else:
    result_list = []
    for i in inputnum:
        inputnum_add_one = inputnum
        inputnum_add_one[i - 1] = i + 1
        result_list.append(judge_right_angled_triangle(inputnum_add_one))
    result_str = "".join(result_list)
    if result_str.count("1") > 0:
        print("ALMOST")
    else:
        print("NEITHER")
  • 在这部分通过for循环将每个x或者y都单独加1,
  • 然后判断加1后是否为直角三角形,
  • 将结果填充到列表。
对结果读取,根据结果输出字符串:
  • 这部分不适合使用for循环,以防止出现存在多种调整结果都对,输出了多个ALMOST;
  • 将结果列表变成字符串,如果字符串中"1"的个数大于0,就输出ALMOST,否则输出NEITHER。

欢迎访问我的博客网站查看更多博客或者搜索 天健寺个人博客

你可能感兴趣的:(网易2020笔试题)