如何只获得整数或浮点输入



我正在尝试用python制作计算器。但是,我希望用户能够输入整数或浮点数。但不是字符串,我怎么做呢?

这是我当前的代码,但是,if语句没有完成预期的工作。

def calculator():
x = (input("Please enter a number: "))
y = (input("Please enter a second number"))
if x or y != int or float:
print("Invalid input, please enter a number")
x = input("Please enter a number: ")
y = input("Now, please enter a second number: Press enter to leave blank: ")

你可以在输入前添加int或float…例如:

x = int(input("Please enter a number: "))

因此,如果您输入一个字符串,它将不接受它并导致Traceback

您输入的始终是字符串,即使有人键入数字。要将输入转换为整型或浮点型,使用:

x = int(input("text"))
y = float(input("text"))

注意,如果您只想要数字,则应该验证输入,例如

def check_user_input(input):
try:
# Convert it into integer
val = int(input)
print("Input is an integer number. Number = ", val)
except ValueError:
try:
# Convert it into float
val = float(input)
print("Input is a float  number. Number = ", val)
except ValueError:
print("No.. input is not a number. It's a string")

input1 = input("Enter your Age ")
check_user_input(input1)
input2 = input("Enter any number ")
check_user_input(input2)
input2 = input("Enter the last number ")
check_user_input(input2)

您可以尝试如下操作:


while True:
try:
x = input('Enter int or float:')
if x.find('.') == -1:
x = int(x)
break
else:
x = float(x)
break
except ValueError:
print('Something went wrong, try again.')
print(type(x))

有一个while循环,在其中解析用户输入。如果包含.,则用户输入float,否则输入int,从而在各自的语句中进行解析。如果格式不正确,则会抛出ValueError,并提示用户应该再试一次。信息可以更新得更有启发性。但是,如果任何一个转换成功,则会留下while循环并打印类型。循环也可以使用KeyboradInterruptCtrl + C

使用内置的isinstance函数

def calculator():
def checker():
try:
x = int(input("Please enter a number: "))
assert (isinstance(x, int) or isinstance(x, float))
y = int(input("Please enter a second number: "))
assert (isinstance(y, int) or isinstance(y, float))
except (AssertionError, ValueError):
print("Invalid input!")
checker()
checker()
# <Your code here...>
calculator()

最新更新