为什么我在python

时间:2017-07-31 22:31:31

标签: python operands

希望这不会使我的评价下降一个简单的问题。

我一直在尝试将这个工作代码用于一个新程序,而且我现在还没有改变一件事我现在收到一个错误,这就是工作代码。

import random

def nzdExRateRand():
    return round(random.random() * (1.505 - 1.101) + 1.101, 3)

def usdExRateRand():
    return round(random.random() * (0.909 - 0.750) + 0.750, 3)

def convert(amount, exchange_rate):
    return amount * exchange_rate

exRate1 = nzdExRateRand()
exRate2 = usdExRateRand()
amount1 = 1000
amount2 = 1200

print (exRate1)
print (exRate2)
result = convert(amount1, exRate1)
print('Result:', result)
result = convert(amount2, exRate2)
print('Result:', result)

这是我想要的代码。

import random

#define variables

amt1 = (1000)
amt2 = ()
prevAmt1 = ()
prevAmt2 = ()

#create random exchange rates
def exRt1():
    return round(random.random() * (1.399 - 1.001) + 1.001, 3) 

def exRt2():
    return round(random.random() * (0.999 - 0.699) + 0.699, 3)

#assign exchange rates to variables

rate1 = exRt1()
rate2 = exRt2()

#create a conversion function

def convert(amount, exchange_rate):
    return amount * exchange_rate

trd1Amt = convert(amount1, exRt2)

print(trd1Amt)

然而现在我收到了错误。 TypeError:*:'int'和'function'

的不支持的操作数类型

我已经看了一些其他答案,他们没有帮助回答我的问题,任何帮助都会得到赞赏。

3 个答案:

答案 0 :(得分:4)

您将exRt2定义为函数

致电时

convert(amount1, exRt2)

它会尝试返回amount1 * exRt2

这样做会导致类型不匹配,因为exRt2是一个函数而不是数字,而python不知道如何将数字(amount1)乘以函数(exRt2)

你可能意味着

convert(amount1, exRt2())

因此,将使用exRt2而不是函数本身返回的值作为参数调用convert函数

答案 1 :(得分:3)

变化

trd1Amt = convert(amount1, exRt2)

trd1Amt = convert(amount1, rate2 )

这是因为之前您将exRt2()返回的值保存到变量rate2:

rate2 = exRt2()

答案 2 :(得分:1)

下面:

trd1Amt = convert(amount1, exRt2)

exRt2是一个功能。如果你想要它的结果,你应该调用它:

trd1Amt = convert(amount1, exRt2())