从一道题来介绍我的刷题之旅 | 豆包MarsCode AI刷题

18 阅读4分钟

题目描述

小E正在训练场进行射击练习,靶有10个环,靶心位于坐标(0, 0)。每个环对应不同的得分,靶心内(半径为1)得10分,依次向外的每个环分数减少1分。若射击点在某个半径为i的圆内,则得11-i分。如果射击点超出所有的环,则得0分。根据给定的射击坐标(x, y),计算小E的射击得分。

思路解析

  1. 计算距离

    • 使用欧几里得距离公式计算射击点(x, y)到靶心(0, 0)的距离。公式为:

distance=x2+y2​

  1. 确定得分

    • 根据计算出的距离,判断射击点落在哪个环内,从而确定得分。
    • 半径为1的圆内得10分,半径为2的圆内(不包括半径为1的圆)得9分,依次类推,直到半径为10的圆外得0分。

题意转换

  • 靶心位于(0, 0),射击点位于(x, y)。
  • 根据距离公式计算出(x, y)到(0, 0)的距离。
  • 根据距离判断射击点落在哪个环内,并确定得分。

详细解释

1. 导入模块

	import math
  • 这行代码导入了Python的math模块,以便我们可以使用其中的数学函数,比如sqrt(平方根函数)。

2. 定义函数

	def solution(x: int, y: int) -> int:
  • 这行代码定义了一个名为solution的函数,它接受两个整数参数xy(表示射击点的坐标),并返回一个整数(表示得分)。

3. 计算距离部分


	distance = math.sqrt(x**2 + y**2)
  • 这行代码计算了射击点(x, y)到靶心(0, 0)的欧几里得距离。
  • x**2 + y**2计算了(x, y)到原点的平方距离。
  • math.sqrt(...)计算了平方距离的平方根,得到实际的直线距离。

4. 确定得分部分


	if distance <= 1:

	    return 10

	elif distance <= 2:

	    return 9

	# ... 中间省略了部分条件判断 ...

	elif distance <= 10:

	    return 1

	else:

	    return 0
  • 这部分代码通过一系列的条件判断来确定射击点的得分。
  • 如果distance小于或等于1,说明射击点落在靶心内,得10分。
  • 如果distance小于或等于2但大于1,说明射击点落在第二环内,得9分。
  • 依此类推,直到distance小于或等于10但大于9,说明射击点落在第十环内,得1分。
  • 如果distance大于10,说明射击点超出了所有的环,得0分。

5. 测试部分

python复制代码
	if __name__ == '__main__':

	    print(solution(1, 0) == 10)  # True

	    print(solution(1, 1) == 9)   # True

	    print(solution(0, 5) == 6)   # True

	    print(solution(3, 4) == 6)   # True
  • 这部分代码是函数的测试部分,用于验证函数是否正确实现了预期的功能。
  • if __name__ == '__main__':这行代码确保了当脚本被直接运行时,测试代码才会被执行。
  • print(solution(1, 0) == 10)等语句调用了solution函数,并打印了函数返回值与预期值是否相等的布尔结果。

通过分割和解释代码,我们可以更清晰地理解每个部分的功能和逻辑,从而更好地掌握相关知识和编程技巧。

  • 新知识点

    • 欧几里得距离公式:用于计算平面上两点之间的距离。
    • 条件判断:通过多个条件判断来确定射击点的得分。
  • 理解

    • 射击点的得分完全依赖于其与靶心的距离。
    • 距离的计算是基本且重要的几何知识。
  • 学习建议

    • 充分利用AI刷题的先天优势
    • 多练习条件判断,勤刷题

学习计划

  • 制定刷题计划

    • 每天安排一定的时间进行刷题,逐步增加难度。
    • 针对薄弱环节进行重点练习。
  • 利用错题进行针对性学习

    • 仔细分析错题原因,记录错误类型和解决方法。
    • 定期对错题进行复习,巩固知识点。

工具运用

  • AI刷题功能

    • 利用AI刷题功能进行自动测评,及时获取反馈。
    • 通过AI生成的题目进行多样化的练习,提高解题能力。 AI
  • 豆包AI其他学习资源

    • 在青训营中我可以结合go教程和在线课程,系统学习go编程。
    • 利用豆包在线编程社区,与他人交流学习心得和解决方案。
  • 我的学习建议

    • 将豆包AI刷题功能与其他学习资源相结合,形成互补。
    • 定期进行总结和反思,不断优化学习方法。

通过以上笔记,希望能为豆包中其他用户提供实用的学习建议,帮助他们更好地掌握相关知识和提高解题能力。