如何让CS50“用餐时间”练习通过测试

问题描述 投票:0回答:2
def main():

    time = input("What time is it? ")

    hours, minutes = time.split(":")

    minutesToHours = float(minutes) / 60
    convert(float(hours)+minutesToHours)



def convert(time):

    if 7 <= time <= 8:
          timetoeat = "breakfast time"
    elif 12 <= time <= 13:
         timetoeat = "lunch time"
    elif 18 <= time <= 19:
         timetoeat = "dinner time"

    print(timetoeat)


if __name__ == "__main__":

    main()

check50 response

this is what I needed to do

我已经完成了这个问题所需的输出,但是当我在 check50 中检查它时,它主要是扑克脸,这就是为什么我想改进它,但我不知道该怎么做,所以任何人都可以帮助我改进我的代码或建议我某物? cs50还要求使用“if name ==”main”:”即使他们没有教它,所以我想知道是否有人能以最简单的形式解释它的作用

python conditional-statements cs50
2个回答
0
投票

注意: 由于这是一项教育练习,因此此答案旨在引导用户找到解决方案,而不是提供明确的解决方案。


1)对
__name__ == __main__
的进一步解释:


2)为什么我的代码没有通过测试?

请注意原则上的要求:“由

convert
调用的
main
函数“应返回 7.5”。”

但是,您的

convert
函数执行完全不同的操作。它不是
return
值,而是包含
main
应该持有的逻辑。

修复:

  • main
    函数必须包含将时间(
    convert
    返回)路由到适当的文本输出的逻辑。
  • convert
    函数必须包含转换逻辑(当前保存在
    main
    中)。
  • convert
    函数必须包含
    return
    语句,以将转换后的十进制值返回
    main

例如:

def main():

    # Prompt user for time.

    # Convert time to a decimal value (call the convert function).

    # Test the returned time as a decimal to determine the text 
    # to be displayed.

def convert(time):

    # Parse the time into hours and minutes.

    # Calculate the decimal form of time.

    # Return the calculated value.


if __name__ == "__main__":
    main()

-1
投票

timetoeat
添加默认空白值:

def convert(time):

    timetoeat = ""
    if 7 <= time <= 8:
          timetoeat = "breakfast time"
    elif 12 <= time <= 13:
         timetoeat = "lunch time"
    elif 18 <= time <= 19:
         timetoeat = "dinner time"

    print(timetoeat)

如果没有这样的声明,当

print(timetoeat)
超出用餐时间时,
not defined error
将会产生
time

© www.soinside.com 2019 - 2024. All rights reserved.