[英]How to parse user input as a number
我将按照教程制作Python计算器程序。 这是我的代码:
print ("This is a calculator program, press Enter to continue")
a = input()
while a == "":
print("Enter 1 for option 1 which adds")
print("Enter 2 for option 2 which subtracts")
print("Enter 3 for option 3 which multiply")
print("Enter 4 for option 4 which divides")
print("Enter 5 for option 5 which quits",)
Option = input("Enter an option number:")
int(Option)
if Option == 1:
Number1 = input("Enter number 1")
Number2 = input("Enter number 2")
int(Number1,Number2)
print(Result = Number1 + Number2)
if Option == 2:
Number1 = input("Enter number 1")
Number2 = input("Enter number 2")
int(Number1,Number2)
print(Result = Number1 - Number2)
if Option == 3:
Number1 = input("Enter number 1")
Number2 = input("Enter number 2")
int(Number1,Number2)
print(Result = Number1 * Number2)
if Option == 4:
Number1 = input("Enter number 1")
Number2 = input("Enter number 2")
int(Number1,Number2)
print(Result = Number1 / Number2)
if Option == 5:
break
这是非常基本的,它可以打印所有选项号,然后要求我选择一个。 因此,我将“ 1”作为字符串输入,将其解析为整数1。但是,它不会直接进入选项1,而是再次循环,这很好,我稍后将对其进行整理。 但是,当我输入1-5时,它也没有进入任何选项。 我想我输入了错误的代码来解析它或其他内容?
输入函数的结果是一个string
,您需要使用int
类型将其转换为int
。
>>> foo = "3"
>>> foo
'3'
>>> int(foo)
3
您的误解可能来自python是一种动态类型的语言。 但是请记住,尽管变量本身是未类型化的,但变量值却具有类型。
>>> type(foo)
<class 'str'>
>>> type(int(foo))
<class 'int'>
您的代码应如下所示:
print("This is a calculator program. Press Enter to continue.")
while True:
_ = input()
print("Enter 1 for option 1 which adds")
print("Enter 2 for option 2 which subtracts")
print("Enter 3 for option 3 which multiply")
print("Enter 4 for option 4 which divides")
print("Enter 5 for option 5 which quits")
option = int(input("Enter an option number: "))
if option == 5:
break
else:
number1 = int(input("Enter number 1: "))
number2 = int(input("Enter number 2: "))
if option == 1:
result = number1 + number2
elif option == 2:
result = number1 - number2
elif option == 3:
result = number1 * number2
elif option == 4:
result = number1 / number2
print(result)
重点:
a
。 因此,我摆脱了它,并调用了将其结果存储在_
input
调用, _
是您不关心其值的变量的标准名称。 option
显式转换为int
。 Python不会为您隐式转换,因此'1' != 1
。 int
就地-写int(number1)
什么都不做。 您必须输入number1 = int(number1)
或类似的数字。 int
,形式为int(number1, number2)
。 您实际上在这里执行的是调用int(x, base)
,将x
转换为int
,将其解释为base base
。 if
语句重构为更简洁 该发布的代码包含几个错误,以下是更正的代码:
print ("This is a calculator program, press Enter to continue")
a = input()
while a == "":
print("Enter 1 for option 1 which adds")
print("Enter 2 for option 2 which subtracts")
print("Enter 3 for option 3 which multiply")
print("Enter 4 for option 4 which divides")
print("Enter 5 for option 5 which quits",)
Option = int(input("Enter an option number:"))
if Option == 1:
Number1 = int(input("Enter number 1"))
Number2 = int(input("Enter number 2"))
# int(Number1,Number2)
Result = Number1 + Number2
if Option == 2:
Number1 = int(input("Enter number 1"))
Number2 = int(input("Enter number 2"))
# int(Number1,Number2)
Result = Number1 - Number2
if Option == 3:
Number1 = int(input("Enter number 1"))
Number2 = int(input("Enter number 2"))
# int(Number1,Number2)
Result = Number1 * Number2
if Option == 4:
Number1 = int(input("Enter number 1"))
Number2 = int(input("Enter number 2"))
# int(Number1,Number2)
Result = Number1 / Number2
print(Result)
if Option == 5:
break
input()
将输入转换为字符串 ,因此,如果需要读取int
,则必须强制转换它。
在if
条件下,可以将input()
结果(字符串)转换为int
:
Number1 = int(input("Enter number 1"))
然后创建一个变量,假设为result
并为其分配数字的总和:
result = Number1 + Number2
最后打印结果
print "Result = " + str(result)
最终代码应如下所示:
print ("This is a calculator program, press Enter to continue")
a = input()
while a == "":
print
print("Enter 1 for option 1 which adds")
print("Enter 2 for option 2 which subtracts")
print("Enter 3 for option 3 which multiply")
print("Enter 4 for option 4 which divides")
print("Enter 5 for option 5 which quits",)
Option = input("Enter an option number:")
if Option == 1:
Number1 = int(input("Enter number 1"))
Number2 = int(input("Enter number 2"))
result = Number1 + Number2
print "Result = " + str(result) # To print you have to cast to `str`
elif Option == 2:
...
elif Option == 3:
...
elif Option == 4:
...
else:
break
笔记:
您可以使用if-elif-else
作为结构,因此如果Option == 1
,则不会检查以下条件。
我还建议您遵循Python命名约定 。 您的变量Number1
应该称为number1
,依此类推。
我更正了您的代码。
_ = input("This is a calculator program, press Enter to continue")
print ("""Enter 1 for option 1 which adds
Enter 2 for option 2 which subtracts
Enter 3 for option 3 which multiplies
Enter 4 for option 4 which divides
Enter 5 for option 5 which quits""")
while True:
Option = input("Enter an option number: ")
if Option == '1':
Number1 = int(input("Enter number 1: "))
Number2 = int(input("Enter number 2: "))
print("The Result is {0}".format(Number1 + Number2))
elif Option == '2':
Number1 = int(input("Enter number 1: "))
Number2 = int(input("Enter number 2: "))
print("The Result is {0}".format(Number1 - Number2))
elif Option == '3':
Number1 = int(input("Enter number 1: "))
Number2 = int(input("Enter number 2: "))
print("The Result is {0}".format(Number1 * Number2))
elif Option == '4':
Number1 = int(input("Enter number 1: "))
Number2 = int(input("Enter number 2: "))
print("The Result is {0}".format(Number1 / Number2))
else:
break
笔记:
祝您学习好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.