Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将用户输入解析为数字_Python_Python 3.x - Fatal编程技术网

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

我正在用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时,它不会进入任何选项。我想我输入了错误的代码来解析它还是什么?

函数的结果是一个
字符串
,您需要使用
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
    中,这是一个变量的标准名称,您不关心它的值
  • 必须将
    选项
    显式转换为
    int
    。Python不会为您隐式转换,因此
    '1'!=1
  • 您不能就地转换为
    int
    ——写入
    int(number1)
    不起任何作用。您必须编写
    number1=int(number1)
    或类似代码
  • 不能在一条
    int(number1,number2)
    格式的语句中将多个字符串转换为
    int
    。实际上,您在这里所做的是调用
    int(x,base)
    ,将
    x
    转换为
    int
    ,解释为在base
    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
      
      注:

    • 三引号语法适用于长多行字符串
    • 格式化打印字符串的Python方式是方法

    • 祝你学习顺利

      您没有保存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似乎正在使用它。Python3
      input
      的行为类似于Python2
      raw_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(选项)?我忘了把它放在我的原始帖子里,那是一行代码。