一、题目
小R有n部电脑,每部电脑的电池容量分别为ai。她可以使用两种不同的充电方式来给电脑充电:
- 普通充电:每单位时间为电脑充电x单位的电量。
- 闪充:每单位时间为电脑充电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