Python 如何将用户输入解析为数字
我正在用Python编写一个计算器程序,这是我的教程。这是我的密码:Python 如何将用户输入解析为数字,python,python-3.x,Python,Python 3.x,我正在用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 optio
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时,它不会进入任何选项。我想我输入了错误的代码来解析它还是什么?函数的结果是一个字符串
,您需要使用int
类型将其转换为int
>>> foo = "3"
>>> foo
'3'
>>> int(foo)
3
您的误解可能来自python是一种动态类型化语言。但请记住,尽管变量本身是非类型化的,但变量值具有类型
>>> type(foo)
<class 'str'>
>>> type(int(foo))
<class 'int'>
>类型(foo)
>>>类型(int(foo))
您的代码应该更像这样:
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)
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
要点:
- 您没有使用
执行任何操作。所以我去掉了它,调用了a
,将其结果存储在input
中,这是一个变量的标准名称,您不关心它的值李>\uu
- 必须将
显式转换为选项
。Python不会为您隐式转换,因此int
李>'1'!=1
- 您不能就地转换为
——写入int
不起任何作用。您必须编写int(number1)
或类似代码李>number1=int(number1)
- 不能在一条
格式的语句中将多个字符串转换为int(number1,number2)
。实际上,您在这里所做的是调用int
,将int(x,base)
转换为x
,解释为在baseint
中base
- 我重构了你的
语句,使之更加简洁if
- 在Python中,变量名通常是小写的李>
- 不能在print语句中为变量赋值李>
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.")
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)
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 else
,则不会检查以下条件选项==1
- 我也会建议你跟随。变量
应调用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
注:
祝你学习顺利 您没有保存int函数。尝试
you\u var=int(Number1,Number2)
a=input()
应该在while循环中,并且也应该print(Result=Number1+Number2)
而不是print(Number1+Number2)
(对于其他选项也是如此)您应该使用更好的标题。几乎所有Python初学者都刚刚开始学习,但这并不意味着你的问题对他们有用。另外,Number1=int(input(…)
我认为你的主要问题是比较Option=1
。选项将是一个str
,1是一个int
。它总是返回false。在Python 3中没有raw\u输入,OP似乎正在使用它。Python3input
的行为类似于Python2raw_input
,并且Python3没有与Python2的input
等价的东西。嘿,你知道你在哪里说过Option=int(input(“输入选项号”)),可以像Option=input(“输入选项号”)/newline int(Option)?@user3216729,是的,但是你需要做Option=int(Option)
啊,对了,泰,我来自C#,所以我会这样做。我倾向于多写一两行,而不是亲自写一行,jsut帮我看一下。谢谢@用户3216729,如果你喜欢这个答案,你可以投票或者接受它C#是目前为止我所知道的唯一一种语言,在C#中,我会这样做:Console.Write(“输入选项号”)/newline string option=Console.ReadLine()/newline optionnumber=int.Parse(option)。输入()是否与Console.Write()/Console.WriteLine()完全相同?它不让我投票:/嘿,你知道你在哪里说Option=int(输入(“输入选项号”)),可以像这样做吗Option=input(“输入选项号”)/newline int(选项)?我忘了把它放在我的原始帖子里,那是一行代码。