如何用时间值做声明

时间:2017-08-16 01:58:53

标签: python django if-statement time

在我的Django python代码中,我想根据一天中的时间问候访问者。 它总是回馈'下午好'(即使它不是)但却看不出原因。

这是来自我的观点.py:

#import time
#import datetime
#from time import strftime
#from django.utile import timezone

def greet(request):
    request.session['greet'] = 'Good day'
    currentTime = time.strftime('%H')
    int(currentTime)
    if currentTime < 12 :
        request.session['greet'] = 'Good morning'
    if currentTime >= 18 :
        request.session['greet'] = 'Good afternoon'
    else :
        request.session['greet'] = 'Good evening'

    return request.session['greet']

2 个答案:

答案 0 :(得分:1)

试试这个:

#import time
#import datetime
#from time import strftime
#from django.utile import timezone

def greet(request):
request.session['greet'] = 'Good day'
currentTime = time.strftime('%H')
int(currentTime)
if currentTime < 12 :
    request.session['greet'] = 'Good morning'
elif currentTime < 18 :
    request.session['greet'] = 'Good afternoon'
else :
    request.session['greet'] = 'Good evening'

return request.session['greet']

另外,你是如何测试的? 如上所述,您只能使用当前计算机的时间进行测试。 为了测试你的if / elif / else语句逻辑,你需要能够为currentTime提供不同的值(你不想等待计算机的时钟改变 - 或者重置计算机时钟!)

执行此操作的一种方法是覆盖currentTime的值 例如:

...
currentTime = time.strftime('%H')   
int(currentTime)

# temp code for testing various values of currentTime. 
# Try values: below, at, and above each "breakpoint" for the if/elif/else statements.
# For example: 5, 12, 13, 17, 18, 22
currentTime = 5

if currentTime < 12 :
    request.session['greet'] = 'Good morning'
...

验证完陈述的逻辑后,您可以删除&#34;测试&#34;代码。

(注意我使用Python,但不使用Django,因此语法可能略有不同,但逻辑是有效的。)

答案 1 :(得分:1)

观察

  • int(currentTime)将不执行任何操作,因为您没有将生成的整数值分配给任何变量。我已经在我的代码中更正了这一点,即currentTime = int(time.strfttime('%H'));

  • 你已经评论了import个陈述,所以我认为这些套餐都不会被导入(虽然没有使用过Django,所以我&#39;我不确定这一个);

  • 就目前而言,你永远不会得到一个早上好的问候。如果是早上,问候语将设置为&#34;早上好&#34;,然后下一个if / else语句将会运行 - 如果时间大于18小时,它会说&#34;下午好&#34;否则会说&#34;晚安&#34;。

解决方案

尝试ifelifelse块,您可以清楚地定义每个问候语的范围。

例如:

def greet(request):
    request.session['greet'] = 'Good day'
    currentTime = int(time.strftime('%H'))
    if currentTime < 12 :
        request.session['greet'] = 'Good morning'
    elif currentTime < 18 :
        request.session['greet'] = 'Good afternoon'
    else :
        request.session['greet'] = 'Good evening'

    return request.session['greet']

这意味着:

  • 如果小时小于12,则应该说&#34;早上好&#34;;

  • 如果小时大于11且小于18(请记住if / elif / else小区始终退出条件是真的,因为它没有在第一个条件下退出,我们知道小时不小于12,因此它必须至少大于11)它应该说&#34;下午好&#34;;

  • 以及其他方式(如果这些条件都不成立,因此小时数大于17),它会说&#34;晚上好&#34;。