Python: from str to int or float using input()

Question:

I have the following script:

1   mylst = []
2   num = input("Enter height: ")
3   
4   if isinstance(num, int) or isinstance(num, float):
5       mylst.append(num)
6   else:
7       print("END")
8   
9   print(mylst)

Let’s say I have the following heights in cm (without decimal): 175, 181, 189

And then I decided to enter heights in inch (with decimal): 5.6, 5.9, 6.2

So mylst will be ['175', '181', '189', '5.6', '5.9', '6.2']

I know that the output type of input() is always a str. And, yes, my script is not a loop. I don’t want to change the input() into int(input()) or float(input()) every time I run the code. I need to use only if else statements. No while loop, no try except, and no for loop

So basically, I enter a number, whether it is an int or float, then it will convert str number into int or float, or stay str if the input is a non-number (alphabetic or any character), then it runs through if else statements.

I just can’t figure it out how to convert the string number to an integer or float number. The .isdecimal() doesn’t work, it will be considered as a str if the number value with a decimal.

Could you please help me with this?

Thank you!

Asked By: BigBad BroBot

||

Answers:

Check out the str.isnumeric() method for seeing if a string is an integer.

The better implementation would be to use a try/except case.

Code example:

if num.isnumeric():
    mylst.append(int(num))
elif num.replace(".", "").isnumeric():  # best I could think of without using try/except
    mylst.append(float(num))
else:
    # append if string, not sure if this is what is intended
    mylst.append(num)
Answered By: Chris
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.