【问题标题】:If statements printing after a variable is entered输入变量后打印的 if 语句
【发布时间】:2015-02-23 02:58:28
【问题描述】:

我是编程/编码的新手,我在我的课程中使用 Python。我被要求创建一个可以加、减、除和乘的计算器。我试图让程序通过输入接收数字,然后通过输入的数字询问如何处理它(例如加号或减号),然后给出结果。我有代码的输入阶段工作,但是当我到达最后一部分时,我无法让它工作。这是代码

FirstNumber = "blank1"
SecondNumber = "blank2"
Device = "blank3"
FirstNumber = input("First number?")
SecondNumber = input("Second number?")
Device = input("Select a Number. Options are; 1.Plus, 2.Minus, 3.Times, 4.Divide.")
if "Device" == 1:
     print("FirstNumber"+"SecondNumber")

当它结束时它什么都不做,请帮忙。

【问题讨论】:

    标签: python if-statement calculator


    【解决方案1】:

    条件"Device" == 1始终False,因为没有字符串等于整数。您可能希望将其更改为 Device == 1,但这(可能)仍然会失败,因为在 python3.x 上,input 返回一个字符串。你可能想要这样的东西:

    Device = int(input("Select a Number. Options are; 1.Plus, 2.Minus, 3.Times, 4.Divide."))
    if Device == 1:
        print(FirstNumber + SecondNumber)
    

    当然,出于同样的原因,您可能还希望将FirstNumberSecondNumber 转换为某种数字类型...

    【讨论】:

    • 只是给 OP 的一个注释(我将假设 108k-rep 你也知道这一点..):请不要将变量的第一个字母大写。这些是课程的惯用语。投票赞成,因为答案在逻辑上是正确的。
    • 这行得通!谢谢,但我认为你提到的关于 FirstNumber 和 SecondNumber 的另一个问题就是我得到的。它只是将两个数字彼此相邻,例如。 4+7= 47
    • @NathanMcGrath -- 是的。您还需要将它们“转换”为某种数字。 . .例如float(input('First Number')) 也是。
    • Nathan,这是因为 Python 将“加号”解释为连接或添加,具体取决于两个事项的类型。就像不能将 int 和 str 添加在一起一样,它会抛出错误。但是,您可以通过 @mgilson 向您展示的将 str "7" 包装在 int() 中来转换它。 int("7") + 6 将起作用。 "7" + 6 会抛出异常。
    • 还有@Vincenzzzochi -- 你当然是对的。 (大部分)普遍接受的 Python 风格指南是 pep-8,它列出了命名和行长等方面的约定。
    【解决方案2】:
    ops = {
        "+": lambda a,b: a+b,
        "-": lambda a,b: a-b,
        "*": lambda a,b: a*b,
        "/": lambda a,b: a/b
    }
    
    a  = int(input("Please enter the first number: "))
    op =     input("Please enter an operator: ")
    b  = int(input("Please enter the second number: "))
    
    print("{} {} {} == {}".format(a, op, b, ops[op](a,b)))
    

    【讨论】:

    • 我很欣赏代码,但重点是解决我自己代码中的问题。它违背了使用你的目的,对不起
    最近更新 更多