Python 如何处理具有时间值的语句
在我的Django python代码中,我想根据一天中的时间向访客致意。 它总是回复“下午好”(尽管不是),但不明白为什么。Python 如何处理具有时间值的语句,python,django,if-statement,time,Python,Django,If Statement,Time,在我的Django python代码中,我想根据一天中的时间向访客致意。 它总是回复“下午好”(尽管不是),但不明白为什么。 这是来自my views.py的: #import time #import datetime #from time import strftime #from django.utile import timezone def greet(request): request.session['greet'] = 'Good day' currentTim
这是来自my views.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']
#导入时间
#导入日期时间
#从时间导入strftime
#从django.utile导入时区
def问候(请求):
request.session['greet']='Good day'
currentTime=time.strftime(“%H”)
int(当前时间)
如果currentTime<12:
请求。会话['greet']=“早上好”
如果currentTime>=18:
请求。会话['greet']=“下午好”
其他:
请求。会话['greet']=“晚上好”
返回请求。会话['greet']
试试这个:
#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']
#导入时间
#导入日期时间
#从时间导入strftime
#从django.utile导入时区
def问候(请求):
request.session['greet']='Good day'
currentTime=time.strftime(“%H”)
int(当前时间)
如果currentTime<12:
请求。会话['greet']=“早上好”
elif currentTime<18:
请求。会话['greet']=“下午好”
其他:
请求。会话['greet']=“晚上好”
返回请求。会话['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'
...
。。。
currentTime=time.strftime(“%H”)
int(当前时间)
#用于测试currentTime各种值的临时代码。
#Try值:if/elif/else语句的每个“断点”的下方、处和上方。
#例如:5、12、13、17、18、22
当前时间=5
如果currentTime<12:
请求。会话['greet']=“早上好”
...
一旦验证了语句的逻辑,就可以删除“测试”代码
(注意,我使用的是Python,但不是Django,因此语法上可能略有不同,但逻辑是有效的。)
将不起任何作用,因为您没有将生成的整数值赋给任何变量。我已经在我的代码中更正了这一点,使其位于上面的一行,即int(currentTime)
currentTime=int(time.strfttime(“%H”)
- 您已经注释掉了您的
语句,因此我认为这些包中的任何一个都不会被导入(虽然还没有使用Django,所以我不确定这一个)import
- 就目前而言,你永远不会得到一个早上好的问候。如果是在早上,问候语将设置为“早上好”,然后下一个
如果
/
否则将运行
语句-如果时间大于
18小时,它将说“下午好”,否则它将说“晚上好”
if
、elif
和else
块,在该块中可以清楚地定义每个问候语的范围
例如:
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']
def问候(请求):
request.session['greet']='Good day'
currentTime=int(time.strftime('%H'))
如果currentTime<12:
请求。会话['greet']=“早上好”
elif currentTime<18:
请求。会话['greet']=“下午好”
其他:
请求。会话['greet']=“晚上好”
返回请求。会话['greet']
这意味着:
- 如果时间少于12小时,则应说“早上好”
- 如果小时数大于
且小于11
(记住18
/如果
/elif
块总是在第一个条件下退出,这是真的,因此因为它没有在第一个条件下退出,我们知道小时不少于否则
,因此它必须至少大于12
)它应该说“下午好”11
- 否则(如果这两个条件都不成立,因此小时数大于
),它会说“晚上好”17
if
语句应该是elif
?另外,“午安”不应该是针对=12
)和“晚上好,是针对=18
”?我也很好奇您是如何测试的。您是否使用系统时钟读取的当前时间(使用time.strftime())?或者,为了测试所有值(不仅仅是计算机当前拥有的时间),您是否用您选择的值覆盖它?请注意,这不是您将在会话中输入的内容。