[英]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.