繁体   English   中英

TypeError:“ str”对象不可调用

[英]TypeError: 'str' object is not callable

我正在尝试生成一个将其转换为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

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

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

当您执行'Frequency: %d'(frequency) ,您试图将字符串'Frequency: %d'作为函数调用。 这就是为什么会出现错误TypeError: 'str' object is not callable 可以将错误解码为'str' object ,即'Frequency: %d'不可调用,即它不是可以调用的函数

您可以尝试format因为它更好。 请阅读PEP-3101 ,其中提到了format%运算符。 打印声明可以写成

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')

字符串插值是使用%运算符完成的,但是您试图像对待函数一样调用该字符串,它解释了错误。

它应该是:

print("Frequency: %d" % frequency)

请注意,如果有多个值, %的右侧仅需为一个元组,可以像上面那样裸露地传递单个值。

另外,在Python 3中,更现代的format()语法更常见:

printf("Frequency: {}".format(frequency))
>>> 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('频率:',720460,'Hz')

频率:559979('频率:',559979,'Hz')

频率:649103('频率:',649103,'Hz')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM