美国州名猜测游戏出现TypeError报错,请求技术支持
解决美国州名猜测游戏的TypeError问题
你遇到的TypeError: argument of type method is not iterable错误,核心原因是没有调用to_list()方法,导致states变量存储的是方法对象而非州名列表。除此之外,代码里还有几处需要修正的细节,下面逐一说明:
错误点1:未调用to_list()方法
原代码中:
states = data.state.to_list
这里to_list是Pandas Series的方法,必须加括号()才能执行并返回列表。如果不加括号,states是方法对象,无法用in关键字进行成员判断,直接触发TypeError。
修正为:
states = data.state.to_list()
错误点2:goto()参数处理错误
原代码中:
t.goto(int(state_data.x, state_data.y))
state_data.x和state_data.y是Pandas Series对象,不是单个数值,直接转int会报错。需要用.item()或者.iloc[0]提取单个值:
t.goto(int(state_data.x.item()), int(state_data.y.item()))
错误点3:write()内容处理错误
原代码中state_data.state是Series对象,直接写入会显示Series的格式,需要提取单个字符串:
t.write(state_data.state.item())
完整修复后的代码
from turtle import Turtle, Screen import pandas turtle = Turtle() screen = Screen() screen.title("U.S State Game Guesser") image = "blank_states_img.gif" screen.addshape(image) screen.setup(750, 500) turtle.shape(image) data = pandas.read_csv("50_states.csv") states = data.state.to_list() # 修正:调用to_list()方法 user_answer = screen.textinput(title="Guess the state", prompt="What's the states name?").title() if user_answer in states: t = Turtle() t.hideturtle() t.penup() state_data = data[data.state == user_answer] t.goto(int(state_data.x.item()), int(state_data.y.item())) # 修正:提取单个数值 t.write(state_data.state.item()) # 修正:提取单个州名字符串 else: pass screen.mainloop()
CSV文件本身没有问题,错误完全来自代码中的方法调用和数据提取逻辑。
内容的提问来源于stack exchange,提问作者joeca
相关产品推荐
相关产品推荐

