如何修复作为地址代码返回的python基本数学运算?

Posted

技术标签:

【中文标题】如何修复作为地址代码返回的python基本数学运算?【英文标题】:How to fix python basic math operations returning as address codes? 【发布时间】:2019-06-17 09:16:44 【问题描述】:

我使用基本数学运算(例如:除法、加法)的函数创建了一个简单的python 计算器。它运行没有错误,但它显示某种“地址代码”作为最终输出,而不显示实际计算。

示例输出:

0x00401978

我试图使用print("calculation =" + str(add)) 将计算输出为“calculaion = xxx”。 但是当我得到这些 weird 输出时,我删除了所有字符串并尝试仅输出计算。但问题依然存在。这是最少的代码-

def add (a,b) :
    calc = a + b
    return calc
def subs (a,b) :
    calc = a - b
    return calc
def mul (a,b) :
    calc = a * b
    return calc
def divi (a,b) :
    calc = a/b
    return calc

print (" Select operation. \n 1.Add \n 2.Substract \n 3.Multiply \n 4.divide ")

choice = int (input (" Enter choice (1/2/3/4) "))
a = int (input (" Enter first number: "))
b = int (input (" Enter second number : "))

if choice == 1 :
    print (add)
elif choice == 2 :
    print (subs)
elif choice == 3 :
    print (mul)
elif choice == 4 :
    print (divi)
else:
    print ("Ooops my love. Wrong number")

带有奇怪结果的完整输出-

 Select operation. 
 1.Add 
 2.Substract 
 3.Multiply 
 4.divide 
 Enter choice (1/2/3/4) 2
 Enter first number: 20
 Enter second number : 10
<function subs at 0x030AE198>

我只需要输出为“Calculation = XXXX”,并且操作必须在函数中完成。 (XXXX是结果)

【问题讨论】:

【参考方案1】:

您没有调用该方法。您正在打印该方法的内存位置/repr。

你的每个 ifs 都应该是

if choice == 1 :
    print (add(a,b))
elif choice == 2 :
    print (subs(a,b))
elif choice == 3 :
    print (mul(a,b))
elif choice == 4 :
    print (divi(a,b))

或者去掉打印

if choice == 1 :
    add(a,b)
elif choice == 2 :
    subs(a,b)
elif choice == 3 :
    mul(a,b)
elif choice == 4 :
    divi(a,b)

你正在做的一个非常简单的例子:

def test_method():
    print("I've been called!")

test_method
test_method()

【讨论】:

谢谢。有没有办法查看其他数据的其他内存地址,比如我正在打印的字符串?

以上是关于如何修复作为地址代码返回的python基本数学运算?的主要内容,如果未能解决你的问题,请参考以下文章

Python数值基本运算和其它数学运算方法

Numpy/Python 中基本数学运算的速度:为啥整数除法最慢?

Python初级 3 基本数学运算

运算符

python作为计算器(数学用法)

Python之运算符汇总