使用pymysql查询数据库后,调用input函数报错:'str'对象不可调用
解决TypeError: 'str' object is not callable错误
嘿,我一眼就看出问题出在哪了——你对input()函数的用法搞错啦!
错误原因
input()函数只接受一个可选的字符串参数作为提示文本,而你现在写成了:
englishWord = input("type answer", i[random])
你传了两个参数给input(),Python会把第二个参数(也就是i[random],一个字符串)当成可调用对象去执行,自然就触发了TypeError: 'str' object is not callable的错误。
修正方案
你需要把提示文本和要展示的单词拼接成一个完整的字符串,再传给input()。这里推荐两种写法:
用f-string(Python 3.6+推荐)
这种写法更简洁易读:
conn = pymysql.connect(host="myhost",user="myname",password="mypassword",db="mydb") myCursor = conn.cursor() query = """SELECT russianWord, englishWord FROM words WHERE wordID = 1;""" myCursor.execute(query) records = myCursor.fetchall() random = randint(0,1) for i in records: if random == 0: englishWord = input(f"type answer: {i[random]}") else: russianWord = input(f"type answer: {i[random]}")
传统字符串拼接写法
如果你的Python版本低于3.6,可以用这种方式:
englishWord = input("type answer: " + i[random])
这样修改后,input()只会收到一个完整的提示字符串,就不会再触发那个类型错误啦。
内容的提问来源于stack exchange,提问作者Mattytripps
相关产品推荐
相关产品推荐

