【问题标题】:Why is the print statement in the if statement not running?为什么if语句中的print语句没有运行?
【发布时间】:2017-10-15 13:40:00
【问题描述】:

我正在用 python 编写这个计算器,我想知道为什么任何 if 语句中的 print 语句都没有运行。代码如下:

firstnum = raw_input("What is your first number?")
type(firstnum)

op  = raw_input("What is your operation?")
type(op)

secondnum = raw_input("What is your second number?")
type(secondnum)


 def main():
    if op == "*":
       answer = firstnum * secondnum
       print(answer)

    if op == "/":
       answer = firstnum / secondnum
       print(answer)

    if op == "-":
        answer = firstnum - secondnum
        print(answer)

输出: 它只是退出代码而没有错误。

【问题讨论】:

  • 你需要调用main方法
  • 您定义了一个名为 main 的函数。是你叫的吗?
  • 我是否可以像在 java 中一样只使用 main() 来调用?
  • 当函数main 依赖于用户输入设置的全局变量时,调用函数名称似乎是一个糟糕的选择。为什么main 不收集它需要的输入?不应无故使用全局变量。这里真的没有理由。
  • Python 不需要 main 方法——你真的需要它吗?

标签: python-2.7


【解决方案1】:

代码实际上有几个单独的问题:

  1. 根本不调用主函数。反正你这里不需要,所以我把它删了。
  2. 在某些环境中,raw_input 的返回值可能包含回车符。使用 strip() 删除输入中的所有空格。
  3. raw_input 返回字符串。您不能使用字符串进行计算。您需要先将输入转换为数字。

firstnum = float(raw_input("What is your first number?").strip())

op  = raw_input("What is your operation?").strip()

secondnum = float(raw_input("What is your second number?").strip())

if op == "*":
    answer = firstnum * secondnum
    print(answer)

if op == "/":
   answer = firstnum / secondnum
   print(answer)

if op == "-":
    answer = firstnum - secondnum
    print(answer)

【讨论】:

  • 使用ifelif 更有意义吗?
  • @Ritiek 使用elif 肯定会提高人类代码的可读性,但不会改变行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 2021-09-29
  • 2019-09-17
  • 2020-07-28
  • 2018-08-03
  • 1970-01-01
相关资源
最近更新 更多