TypeError:' str'对象不可调用

时间:2015-01-09 12:36:17

标签: python string

我正在尝试生成一个随机数转换为和int然后打印数字,但我得到错误'str'对象不可调用。我已经搜索了问题,但我似乎无法找到我做错了什么。

这是我的代码:

import random
import time

while(True):
    #generate a random frequency from 0Hz to 1MHz   
    frequency = int(random.randrange(0,1000000))    
    print('Frequency: %d'('frequency'))
    print('Frequency: ',frequency, ' Hz')

    print("sleep for 2 seconds")
    time.sleep(2)  # Delay for 1 minute (60 seconds)

我得到的错误是:

Traceback(most recent call last):
File "frequency1.py", line 7, in <module>
print('Frequency: %d'('Frequency'))
TypeError: 'str' object is not callable

3 个答案:

答案 0 :(得分:4)

您的打印声明不正确。它应该是

print('Frequency: %d'%(frequency))

执行'Frequency: %d'(frequency)时,您尝试将字符串'Frequency: %d'作为函数调用。这就是您收到错误TypeError: 'str' object is not callable的原因。该错误可以解码为'str' object'Frequency: %d'不是可调用的,即它不是可以调用的函数

您可以尝试使用format,因为它更好。请阅读提及format%运算符的PEP - 3101。 print语句可以写成

print('Frequency: {}'.format(frequency))

更正丢失的%符号后更改的程序可以写为

import random
import time

while(True):
    #generate a random frequency from 0Hz to 1MHz   
    frequency = int(random.randrange(0,1000000))    
    print('Frequency: %d'%(frequency))            # Note the added % 
    print('Frequency: ',frequency, ' Hz')

    print("sleep for 2 seconds")
    time.sleep(2)  # Delay for 1 minute (60 seconds)

执行程序将提供以下输出。

Frequency: 753865
Frequency:  753865  Hz
sleep for 2 seconds
Frequency: 152017
Frequency:  152017  Hz
sleep for 2 seconds

另请注意,python中的,会增加一个空格。因此,您无需print('Frequency: ',frequency, ' Hz'),而是可以直接编写print('Frequency:',frequency, 'Hz')

答案 1 :(得分:2)

使用%运算符完成字符串插值,但是您尝试将字符串称为函数,而不是解释错误。

应该是:

print("Frequency: %d" % frequency)

请注意,如果有多个值,则%的右侧只需要是一个元组,单个值可以像上面一样传递。

此外,在Python 3中,使用更现代的format()语法更为常见:

printf("Frequency: {}".format(frequency))

答案 2 :(得分:1)

>>> while(True):
...     frequency = int(random.randrange(0,1000000))    
...     print('Frequency: %d'%frequency)
...     print('Frequency: ',frequency, ' Hz')
...     time.sleep(2)  # Delay for 1 minute (60 seconds)

...

输出

频率:720460 (&#39;频率:&#39;,720460,&#39; Hz&#39;)

频率:559979 (&#39;频率:&#39;,559979,&#39; Hz&#39;)

频率:649103 (&#39;频率:&#39;,649103,&#39; Hz&#39;)