On Thu, 21 Nov 2013 12:00:31 +0100, Rafael Knuth <rafael.kn...@gmail.com> wrote:
hours_worked = input("How many hours did you work today? ")
while hours_worked != str() or int():
hours_worked = input("Can't understand you. Please enter a
number!  ")

There are two problems with your conditional expression. First is your use of "or"

Suppose you were trying to loop until the user entered "7" or "X". You couldn't use
    while  value == "7" or "X":

You would need
     while value == "7" or  value == "X":

The "or" operator is used to combine two boolean expressions, and since "X" is truthie, the entire expression would be true.


The second problem is that str() and int() are used to convert values, not somehow analyze them. WIthout arguments to convert, they produce default values. Int() will produce a zero integer, and I assume str() will produce the empty string. Neither is what you want to compare.

What you need instead is a technique that'll analyze a string to see whether it'll convert to an int or float. Best way to do that is to try to convert it, and see if an exception is thrown.

while True:
try:
   hw = float(hours_worked)
except xxxxxxx as ex:
   hours_worked = input("try again....")

--
DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to