小C的圆构造|豆包MarsCode AI刷题

105 阅读3分钟

新知识点总结

  1. 数学运算

    • 使用 math.sqrt 函数计算平方根。
    • 进行浮点数运算,包括加法、减法和乘法。
  2. 列表和字符串格式化

    • 使用列表来存储多个结果。
    • 使用字符串格式化方法 f"{value:.2f}" 来格式化浮点数,保留两位小数。
  3. 条件判断

    • 使用 min 和 max 函数来比较两个值,分别获取最小值和最大值。
  4. 函数定义和调用

    • 定义一个函数 solution,接受两个参数 x 和 y,并返回一个包含两个格式化字符串的列表。
    • 在主程序中调用该函数并打印结果,以验证函数的正确性。

分析与理解

问题背景

给定两个整数 xy,我们需要计算两个表达式的值:

  • r1=x+y−2xyr1=x+y−2xy​
  • r2=x+y+2xyr2=x+y+2xy​

然后将这两个值格式化为保留两位小数的字符串,并按从小到大的顺序返回。

解决方案

  1. 计算平方根

    • 使用 math.sqrt 函数计算 2xy2xy​。
    python
    深色版本
    sqrt_2xy = math.sqrt(2 * x * y)
    
  2. 计算两个表达式的值

    • 计算 r1r1 和 r2r2。
    python
    深色版本
    r1 = x + y - sqrt_2xy
    r2 = x + y + sqrt_2xy
    
  3. 格式化结果

    • 使用 min 和 max 函数分别获取 r1r1 和 r2r2 的最小值和最大值。
    • 使用字符串格式化方法 f"{value:.2f}" 将浮点数格式化为保留两位小数的字符串。
    python
    深色版本
    return [f"{min(r1, r2):.2f}", f"{max(r1, r2):.2f}"]
    
  4. 返回结果

    • 返回包含两个格式化字符串的列表。

代码实现

python
深色版本
import math

def solution(x: int, y: int) -> list:
    # 计算平方根
    sqrt_2xy = math.sqrt(2 * x * y)
    
    # 计算两个表达式的值
    r1 = x + y - sqrt_2xy
    r2 = x + y + sqrt_2xy
    
    # 格式化结果并按从小到大顺序返回
    return [f"{min(r1, r2):.2f}", f"{max(r1, r2):.2f}"]

if __name__ == '__main__':
    print(solution(1, 2) == ['1.00', '5.00'])  # 输出应为 True
    print(solution(3, 4) == ['2.10', '11.90'])  # 输出应为 True
    print(solution(5, 6) == ['3.25', '18.75'])  # 输出应为 True

学习建议

  1. 理解基本概念

    • 在深入研究具体的题目之前,先花时间理解数学运算、列表和字符串格式化等基本概念。这些是解决此类问题的基础。
  2. 练习经典问题

    • 经典问题如数学运算、字符串格式化等都是很好的练习材料。这些问题能够帮助巩固对基本概念的理解,并学会如何应用这些技术解决实际问题。
  3. 逐步构建解决方案

    • 当面对一个新的问题时,尝试先手动解决几个小规模的例子,这有助于理解问题的本质并发现规律。之后,再尝试将其转化为算法或代码实现。
  4. 优化代码

    • 学会使用更简洁的语法,使代码更加优雅和高效。例如,使用 f-string 进行字符串格式化,使用 min 和 max 函数进行值的比较。
  5. 多做题,多思考

    • 实践是检验真理的唯一标准。通过不断地练习和思考,你会逐渐建立起对问题的感觉,遇到新问题时也能更加从容应对。