New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Identity Crisis! variable assignment using strftime fails comparison test. #54170
Comments
See below. When variable assignment is used with strftime for the day of the week, it fails comparison checks for the days of the week. Even when using the str() function it still fails. Manual entry of variable assignment is required for a successful comparison. This pretty well defeats the purpose of computer programming (automation). There seems to be a real identity crisis here! $ python3
Python 3.0rc1+ (py3k, Oct 28 2008, 09:23:29)
[GCC 4.3.2] on linux2
>>> import time
>>> from datetime import date
>>> today = date.today()
>>> print("This line will always print")
This line will always print
>>> myday = today.fromordinal(today.toordinal() - 31)
>>> printthis = myday.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
>>> print("%s" % printthis)
08-27-10. 27 Aug 2010 is a Friday on the 27 day of August.
>>> # dow is Day Of Week variable
... dow = myday.strftime("%A")
>>> chkval = dow
>>> dow is chkval
True
>>> print("dow is %s" % dow)
dow is Friday
>>> print("chkval is %s" % chkval)
chkval is Friday
>>> print("%s" % dow)
Friday
>>> print("%s" % chkval)
Friday
>>> dow is chkval
True
>>> if dow is 'Sunday':
... cntbck = 0
... elif dow is 'Monday':
... cntbck = 1
... elif dow is 'Tuesday':
... cntbck = 2
... elif dow is 'Wednesday':
... cntbck = 3
... elif dow is 'Thursday':
... cntbck = 4
... elif dow is 'Friday':
... cntbck = 5
... elif dow is 'Saturday':
... cntbck = 6
... else:
... cntbck = 'undefined'
... print("What day is it? It is %s" % dow)
...
What day is it? It is Friday
>>> print('finished with script')
finished with script
>>> dow is 'Friday'
False
>>> dow = 'Friday'
>>> dow is 'Friday'
True
>>> chkval
'Friday'
>>> dow
'Friday'
>>> chkval is dow
False
>>> chkval is 'Friday'
False
>>> chkval
'Friday'
>>> chkval = str(chkval)
>>> chkval
'Friday'
>>> chkval is 'Friday'
False
>>> cntbck
'undefined'
>>> |
You mistakenly used "is" for these comparisons, rather than "==". The strftime involvement is a red herring. The real problem is the use of an /identity/ comparison rather than an /equality/ comparison. |
Yes, it is working now. Thanks for the timely response. In looking at the tutorial, the only "strings" used with boolean operators ("<" | ">" | "==" | ">=" | "<=" | "!=") were strings of the numeric variety. I saw no examples using words. I know the datetime module has a function for enumerating the days of the week, but it starts with Monday and ends with Sunday. I needed to start with Sunday and end with Saturday. The first thing I found for checking letter-filled strings was the "is" operator. Perhaps a brief example of word comparisons in the tutorial would be useful. I know it would have helped me. I can't say I have a clear understanding of the difference between the "is" and "==" operators, but I can accept that there apparently is some difference and there are situations where that difference matters. Again, thanks for the quick response. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: