我正在尝试生成一个随机数转换为和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
答案 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;)