我正在尝试用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()