第一题

第一题
代码如下:

class Game:
    def __init__(self):
        self.person_list = [0, 0, 0, 0]
        self.person_list_1 = ['甲', '乙', '丙', '丁']

    @staticmethod
    def judge_number(number):
        if '7' in str(number):
            return False
        else:
            if number % 7 == 0:
                return False
            else:
                return True

    def call_number(self, i_number):
        c_number = 1
        flag = -1
        amount = 0
        while True:
            flag += 1
            if self.judge_number(c_number):
                # 报出数字
                amount += 1
            else:
                # 跳过
                self.person_list[(flag % 4)] += 1
            c_number += 1
            if amount == i_number:
                break
        [print(i) for i in self.person_list]


if __name__ == '__main__':
    game = Game()
    i_number = int(input(""))
    game.call_number(i_number)

提交结果:
提交结果-1

第二题

第二题
代码如下:

"""
题意理解:
    选用字典存储坐标点的数据
    key:x的坐标
    vale: y的坐标
"""
class Exam:
    def __init__(self):
        self.score = [0, 0, 0, 0, 0]
        self.all_numbers = int(input(""))
        self.positions = {}
        for i in range(0, self.all_numbers):
            x, y = input().split(" ")
            if x in self.positions.keys():
                self.positions[x] += "," + y
            else:
                self.positions[x] = y

    def find_one(self):
        final_x = []
        final_y = []
        for i in self.positions.keys():
            x = int(i)
            if str(x+1) in self.positions.keys() and str(x-1) in self.positions.keys():
                # 如果当前坐标的左右的x线上有点,则继续
                y_list = self.positions[i].split(",")
                for j in y_list:
                    # 遍历当前x坐标的所有y点
                    y = int(j)
                    # 此时x, y为当前选中坐标点
                    if str(y+1) in y_list and str(y-1) in y_list:
                        # 接下来判断x两边是否有相邻点
                        left_y_list = self.positions[str(x+1)].split(",")
                        right_y_list = self.positions[str(x-1)].split(",")
                        if j in left_y_list and j in right_y_list:
                            final_x.append(x)
                            final_y.append(y)
        return final_x, final_y

    def find_two(self, x, y):
        # 此处传来的值已经验证过x和y两边都有点,只需查看y点是否在里面即可
        for i in range(len(x)):
            flag = 0
            if str(y[i]+1) in self.positions[str(x[i]+1)].split(","):
                flag += 1
            if str(y[i]-1) in self.positions[str(x[i]+1)].split(","):
                flag += 1
            if str(y[i]+1) in self.positions[str(x[i]-1)].split(","):
                flag += 1
            if str(y[i]-1) in self.positions[str(x[i]-1)].split(","):
                flag += 1
            self.score[flag] += 1
        [print(i) for i in self.score]


if __name__ == "__main__":
    exam = Exam()
    all_x, all_y = exam.find_one()
    exam.find_two(all_x, all_y)

提交结果:
提交结果-2

最后修改:2020 年 03 月 30 日
如果觉得我的文章对你有用,请随意赞赏