首页 > 解决方案 > join() 方法误解

问题描述

我最近在做在线编程挑战。提示是这样的:

给定一个字符串现在是格式为 hh:mm:ss 的时间戳,三个整数 hrs、mins 和 sec 是要添加的小时、分钟和秒,实现一个函数,该函数返回一个字符串作为新调整的时间戳(保持相同格式)。

我的解决方案如下

def time_adjust(now,hrs,mins,sec):
  current = [int(i) for i in now.split(":")]
  values = [hrs,mins,sec]
  limit = (24,60,60)
  for i in range(0,3):
    current[i] = current[i] + values[i]
    if current[i]>limit[i]:
      current[i]-=limit[i]
    current[i] = str(current[i])
  seperator = ':'
  print(current)
  return(seperator.join(str(current)))
print(time_adjust("5:10:10",10,10,10))

但是,当我运行这个程序时,它会输出

[:':1:5:':,: :':2:0:':,: :':2:0:':]

而不是理想的

"15:20:20"

有人可以向我解释这是为什么吗?

标签: python

解决方案


您在加入之前将列表转换为字符串。这是连接字符串中的所有字符。

只需加入列表元素:

def time_adjust(now,hrs,mins,sec):
    current = [int(i) for i in now.split(":")]
    values = [hrs,mins,sec]
    limit = (24,60,60)
    for i in range(0,3):
      current[i] = current[i] + values[i]
      if current[i]>limit[i]:
        current[i]-=limit[i]
      current[i] = str(current[i])
    seperator = ':'
    print(current)
    return(seperator.join(current))
print(time_adjust("5:10:10",10,10,10))

输出

['15', '20', '20']
15:20:20

推荐阅读