繁体   English   中英

如何将用户输入解析为数字

[英]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语句重构为更简洁
  • 在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 = 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

笔记:

  1. 三重引号语法适合长的多行字符串。
  2. 格式化打印字符串的pythonic方法是str.format方法。

祝您学习好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM