so, I need one of my variables to be A possibility. like, it is a user input var & it can be both a floating decimal point or a string. And, so I want to do stuff with it, like >/</= but if the user says "done" I exit. So, let me show you:
largest = None
smallest = None
while True:
try:
num = input("Enter a number: ")
float(num)
except:
"invalid input"
if num == "done":
break
if num > largest:
largest = num
if smallest == None:
smallest= num
if smallest > num:
smallest = num
print(num)
print("Maximum is", largest)
print("Minimum is", smallest)
CodePudding user response:
I don't really understand what you're trying to do, but you can always perform the float
conversion after you compare the user input against a string:
largest = float('inf')
smallest = None
while True:
num = input("Enter a number: ")
if num == "done":
break
try:
num = float(num)
except:
print("invalid input")
if num > largest:
largest = num
if smallest == None:
smallest = num
if smallest > num:
smallest = num
print(num)
print("Maximum is", largest)
print("Minimum is", smallest)
Here's a sample play through:
Enter a number: 1.2
1.2
Enter a number: 3.4
3.4
Enter a number: 0
0.0
Enter a number: done
Maximum is inf
Minimum is 0.0
One suggestion for a code simplification I had, assuming you're on Python 3.8 , is to use the walrus :=
operator, which should allow you to omit the break
condition:
while (num := input("Enter a number: ")) != 'done':
try: # same as before
...
CodePudding user response:
First, read the number as a string, check if it's "done" and only after convert to a float:
while True:
num = input()
if num == "done":
break
num = float(num)
# ... do something with num ...
CodePudding user response:
You don't need to have it for this example. The value you read from user input can be always a string and if this string is not "done"
, then it should be a float number, otherwise it is invalid. More specifically you don't need your input to be any float or string. You need it to be any float or "done"
. See the following snippet:
largest = None
smallest = None
while True:
text = input("Enter a number: ")
if text == "done":
break
else:
try:
num = float(text)
if smallest is None or num < smallest:
smallest = num
if largest is None or num > largest:
largest = nunm
except:
print("Invalid input")
print("Maximum is", largest)
print("Minimum is", smallest)