AI刷题|豆包MarsCode AI 刷题

71 阅读2分钟

一、题目

小R有n部电脑,每部电脑的电池容量分别为ai。她可以使用两种不同的充电方式来给电脑充电:

  1. 普通充电:每单位时间为电脑充电x单位的电量。
  2. 闪充:每单位时间为电脑充电4x单位的电量。

现在,所有电脑的电量都为零。小R希望使用闪充给所有电脑充满电,计算她需要的总充电时间。请保留结果的小数点后两位。

二、解题思路 就是正常的解题逻辑,遍历列表a,然后把每一次充电时间记为k,最后所有的时间相加 但是需要注意的是:1、是引入了一个浮点数,且需要保留两位。2、最后输出的是字符串,要转换下格式

三、代码

1、自己写的语法错误的代码:

def solution(n: int, x: int, a: list) -> str:
    k = 0
    b = 4*x
    for i in range a :
        k += i/ b
        s = ().join 'k'
    return s

2、经过豆包ai纠正过的代码

def solution(n: int, x: int, a: list) -> str:
    k = 0
    b = 4 * x
    for i in range(len(a)):  # 修正了这里的语法错误
        k += a[i] / b
    s = f"{k:.2f}"  # 修正了这里的语法错误,并保留两位小数
    return s

四、一些学习心得

(一)如何搞浮点数的格式

  • 字符串格式化 (f"{k:.2f}") : 简单易用,适合大多数场景。
  • round() 函数: 适合需要四舍五入的场景。 s = round(k, 2)
  • format() 函数: 功能强大,适合需要更多格式化选项的场景。s = format(k, '.2f')
  • decimal 模块: 适合需要高精度计算的场景。k = Decimal('3.5')

(二)如何把列表转换为字符串

  • join() 方法: 最简单和常用的方法,适合大多数场景。join() 方法可以将列表中的元素连接成一个字符串。注意,列表中的元素必须是字符串类型。my_list = ['a', 'b', 'c'] my_string = ''.join(my_list)

  • map() 和 join() 方法: 适合列表中元素不是字符串类型的情况。如果列表中的元素不是字符串类型,可以使用 map() 函数将它们转换为字符串,然后再使用 join() 方法。 my_list = [1, 2, 3]my_string = ''.join(map(str, my_list))print(my_string)

  • for 循环: 手动连接元素,适合需要自定义连接逻辑的场景。my_list = ['a', 'b', 'c'] my_string = '' for item in my_list: my_string += item print(my_string) # 输出: 'abc'

  • reduce() 函数: 适合需要更复杂操作的场景。

  • 用f格式化 s = f"{k:.2f}"、

(三)用循环正确遍历列表的方式 1、for循环 (1)不用索引 for i in a (2)使用索引 for i in range(len(a)) 2、while循环 这里有一个布尔的逻辑 while i < len(a) i += 1