【问题标题】:Python converting sec to min with while and ifPython 使用 while 和 if 将 sec 转换为 min
【发布时间】:2016-12-01 18:01:39
【问题描述】:
minutes = 0
def sec_to_min():
    seconds = int(input("How many seconds you want to convert?"))
    while True:
        if seconds >= 60:
            seconds =-60
            minutes =+1
            print(minutes)
            return True
        else:
            print(seconds,"sec")
            return False

sec_to_min()

当我输入 60 或更多时,它只会打印“1”,仅此而已。我的 if 不工作。我试图在函数前面移动“秒”,但它给了我一个错误,比如“赋值前引用的局部变量'秒'”

【问题讨论】:

  • 您的意思是写seconds -= 60(将秒减六十)而不是seconds = -60(将秒设置为负六十)?分钟相同(这就是它只返回 1 的原因;你只将它设置为 1)。
  • 请正确格式化您的代码。问题是您 return 来自 ifelse 语句中的函数。你必须用循环来做吗?
  • 谢谢你们的建议,但我真的不知道你们怎么看,你能更新我的代码吗?
  • 第一条评论已经告诉你究竟出了什么问题以及如何解决它。
  • @MatejPakán 非常正确;修复代码是你的工作。其他人发现并描述了问题。

标签: python time


【解决方案1】:

我总结一下:

我们认为您混淆了两种类型的陈述:

seconds = -60
seconds -= 60

第一个删除之前的seconds值,并赋予一个新的值-60;第二个相当于

seconds = seconds - 60

您的代码流程表明您需要第二个代码; 分钟也有同样的变化。

您的 while 逻辑存在冲突:虽然循环控制似乎想要重复循环一段时间,但它在第一次迭代期间被一个 return 声明或其他。您无法到达循环的底部并返回进行第二次迭代。

为什么要返回布尔值?这不清楚,因为您的主要代码不使用它。如果您确实需要返回值,也许您需要在循环中设置一个变量,然后在循环之后返回该变量。

【讨论】:

  • 是的,这对我帮助很大,我还需要删除 return True
  • 还记得对您认为有帮助的内容进行投票,例如您立即获得的具有开创性的 cmets。
【解决方案2】:
def sec_to_min():
    minutes=0
    seconds = int(input("How many seconds you want to convert?"))  
    while True:    
        if seconds>=60:
            while seconds>=60:
                seconds =seconds-60
                minutes+=1
            print(minutes)
            break
        else:
            print(seconds,"sec")
            break
sec_to_min()

问题是你运行 if only 一次 + 符号都颠倒了

【讨论】:

    猜你喜欢
    • 2015-07-28
    • 2021-06-26
    • 2016-09-25
    • 2015-07-10
    • 2021-10-11
    • 2018-11-21
    • 2019-02-24
    • 2014-03-27
    • 2012-06-25
    相关资源
    最近更新 更多