所以,我有这段代码:
import random, string, os, time
a = 0
random = ''
def calcular():
global random
random = ''.join([random.choice(string.ascii_letters) for n in xrange(4)])
print random
while a<1:
calcular()
a=a+1
pass
print time.strftime('%H:%M:%S')
os.system('pause')
但我得到了
AttributeError: 'str' object has no attribute 'choice'
有什么问题?
答案 0 :(得分:4)
您正在使用具有相同变量名称的字符串覆盖名为random
的模块。最好不要为你的字符串使用其他名称。
import random, string, time
def calcular():
letters = ''.join(random.choice(string.ascii_letters) for n in xrange(4))
print letters
a = 0
while a<1:
calcular()
a += 1
print time.strftime('%H:%M:%S')
答案 1 :(得分:2)
模块和字符串都命名为random
,random = ''
稍后定义,所以当你执行random.choice
时,你试图在字符串对象而不是随机模块上调用选择方法。
解决方案是将您的字符串重命名为其他内容。