A problem with str VS int.
Steve GS
Gronicus at SGA.Ninja
Tue Dec 12 03:22:22 EST 2023
With all these suggestions on
how to fix it, no one seems to
answer why it fails only when
entering a two-digit number.
One and three work fine when
comparing with str values. It
is interesting that the
leading 0 on a two digit
worked. Still, one digit and
three digit work but not two.
This is now more of a
curiosity as I did use the
integer comparisons.
SGA
-----Original Message-----
From: Python-list
<python-list-bounces+gronicus=
sga.ninja at python.org> On
Behalf Of dn via Python-list
Sent: Sunday, December 10,
2023 12:53 AM
To: python-list at python.org
Subject: Re: A problem with
str VS int.
On 10/12/23 15:42, Steve GS
via Python-list wrote:
> If I enter a one-digit
input or a three-digit number,
the code works but if I enter
a two digit number, the if
statement fails and the else
condition prevails.
>
> tsReading = input("
Enter the " + Brand + " test
strip reading: ")
> if tsReading == "":
tsReading = "0"
> print(tsReading)
> if ((tsReading <
"400") and (tsReading >=
"0")):
> tsDose =
GetDose(sReading)
> print(tsReading
+ "-" + tsDose)
> ValueFailed =
False
> else:
> print("Enter
valid sensor test strip
Reading.")
>
> I converted the variable to
int along with the if
statement comparison and it
works as expected.
> See if it fails for you...
It works as expected (by
Python)! This is how strings
are compared - which is not
the same as the
apparently-equivalent numeric
comparison.
Think about what you expect
from the code below, and then
take it for a spin (of mental
agility):
values = [ 333, 33, 3, 222,
22, 2, 111, 11, 1, ] print(
sorted( values ) ) strings = [
"333", "33", "3", "222", "22",
"2", "111", "11", "1", ]
print( sorted( strings ) )
The application's data appears
numeric (GetDose() decides!).
Accordingly, treat it so by
wrapping int() or float()
within a try-except (and
adjusting thereafter...).
"But wait, there's more!"
(assuming implement as-above):
if 0 <= ts_reading < 400:
1 consistent 'direction' of
the comparisons = readability
2 able to "chain" the
comparisons = convenience
3 identifier is
PEP-008-compliant = quality
and style
--
Regards,
=dn
--
https://mail.python.org/mailma
n/listinfo/python-list
More information about the Python-list
mailing list