【问题标题】:Trying to learn python and hit a wall trying to define functions尝试学习python并尝试定义函数时碰壁
【发布时间】:2021-04-29 22:45:28
【问题描述】:

参加 coursera 课程并卡住和定义功能。我不确定我做错了什么。

这是提出的问题:

充实 print_seconds 函数的主体,以便在给定小时、分钟和秒函数参数的情况下打印总秒数。请记住,一小时有 3600 秒,一分钟有 60 秒。

这是我的示例代码:

def print_seconds(hours, minutes, seconds):
    print("3600" + hours)
    print ("60" + minutes)
    print ("1" + seconds)

print_seconds(1,2,3)

这些是当前的错误:

Error on line 6:
    print_seconds(1,2,3)
Error on line 2:
    print("3600" + hours)
TypeError: must be str, not int

【问题讨论】:

  • 您得到特定错误的原因是 "3600" 之类的东西是一个字符串,而在字符串上使用 + 唯一可以做的就是将另一个字符串连接到它。但是,如果您尝试添加一个数字和一个字符串,则没有定义的结果,因此会出现错误。
  • 这能回答你的问题吗? How can I concatenate str and int objects?

标签: python function


【解决方案1】:

只是:

def print_seconds(hours, minutes, seconds):
    total = (3600 * hours) + (60 * minutes) + seconds
    print(total)

【讨论】:

  • 看起来不太喜欢,这是新错误。 “评分脚本出错。有关详细信息,请参阅原始输出日志。”
【解决方案2】:

问题是您引用了“3600”,这使其成为字符串类型变量,python 抱怨它不知道如何将字符串添加到整数(这是调用 print_seconds 时传递的内容(1,2,3)。另一个答案是试图告诉你不要引用整数值,类型转换/加法会为你解决。

【讨论】:

  • 没有骰子,去掉引号和“评分脚本错误。有关详细信息,请参阅原始输出日志。”
【解决方案3】:

或者,如果你愿意,你可以:

def print_seconds(hours, minutes, seconds):
    print((3600*hours) + (60*minutes) + seconds)

【讨论】:

  • 尝试过但仍然看到“评分脚本出错。有关详细信息,请参阅原始输出日志。”
【解决方案4】:

如果您要获取总秒数,则必须将每个参数乘以 int,而不是 str。另外,您正在向该值添加一个字符串,您不想相乘吗?

def print_seconds(hours, minutes, seconds):
    print(hours * 3600)
    print(minutes * 60)
    print(seconds)

print_seconds(1,2,3)

【讨论】:

  • 我实际上尝试了您上周使用的格式,但没有成功:/大声笑错误显示:评分脚本错误。有关详细信息,请参阅原始输出日志。
  • @IvanDraga 输出日志怎么说?
  • 在 coursera 中哪里可以找到这些?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-27
  • 1970-01-01
相关资源
最近更新 更多