Home > Software design >  Checking that the user's answer is one of the states
Checking that the user's answer is one of the states

Time:10-16

I am trying to create a game where the user see a map of the US and then enters the states one by one and if they get it correct the name will move on top of the state. Currently, I am getting the error TypeError: argument of type method is not iterable. I believe that the error is coming from the separate csv file with all of the states inside it:

state,x,y
Alabama,139,-77
Alaska,-204,-170
Arizona,-203,-40
Arkansas,57,-53
California,-297,13
Colorado,-112,20
Connecticut,297,96
Delaware,275,42
Florida,220,-145
Georgia,182,-75
Hawaii,-317,-143
Idaho,-216,122
Illinois,95,37
Indiana,133,39
Iowa,38,65
Kansas,-17,5
Kentucky,149,1
Louisiana,59,-114
Maine,319,164
Maryland,288,27
Massachusetts,312,112
Michigan,148,101
Minnesota,23,135
Mississippi,94,-78
Missouri,49,6
Montana,-141,150
Nebraska,-61,66
Nevada,-257,56
New Hampshire,302,127
New Jersey,282,65
New Mexico,-128,-43
New York,236,104
North Carolina,239,-22
North Dakota,-44,158
Ohio,176,52
Oklahoma,-8,-41
Oregon,-278,138
Pennsylvania,238,72
Rhode Island,318,94
South Carolina,218,-51
South Dakota,-44,109
Tennessee,131,-34
Texas,-38,-106
Utah,-189,34
Vermont,282,154
Virginia,234,12
Washington,-257,193
West Virginia,200,20
Wisconsin,83,113
Wyoming,-134,90

But I am not entirely sure. In terms of the main code in my program I have this:

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

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, state_data.y))
    t.write(state_data.state)
else:
    pass

screen.mainloop()

Can anyone give me a little help resolving this issue as I cannot find anyone else who's had this same issue?

CodePudding user response:

The error is here:

states = data.state.to_list

It should be:

states = data.state.to_list()

When calling a function or method, you need to include () even if there are no parameters to pass. You already have some examples of this in your code:

turtle = Turtle()
screen = Screen()
screen.mainloop()

If you forget this, the function or method itself is referred to leading to type errors

CodePudding user response:

i think the error is in this line

states = data.state.to_list

I think you want to store the state column as list, so the correct syntax would be

states = data['states'].tolist()

hope it helps

  • Related