import pandas as pd
data = pd.read_csv("50_states.csv")
read_csv()
괄호 안에 파일 경로를 넣으면, 판다스가 해당 csv파일을 읽어온다.
아래는 50_states.csv파일이다.
판다스로 csv 파일을 열어보자.
미국의 주(state)이름과 위치 좌표 (x, y) 데이터가
,(콤마)로 연결되어 있다.
data_list= data.state.to_list()
to_list()
데이터를 리스트로 변환하는 메소드
data에서 state 데이터에만 접근한 후,
to_list() 메소드를 이용해
리스트로 변환한다.
리스트로 변환한 까닭은,
판다스 데이터 처리를 쉽게 하기 위해서이다.
데이터를 리스트로 변환하면
리스트 메소드를 사용하여 데이터 처리를 할 수 있으므로,
사용이 편리하다.
모듈 만들기
score.py
from turtle import Turtle
class Score(Turtle):
def __init__(self):
super().__init__()
self.score = 0
self.penup()
self.hideturtle()
def gain_point(self):
self.score += 1
def show_score(self):
self.write(arg=f"{self.score}/50")
점수와 관련된 Score 클래스를 만든다.
기본 Turtle 클래스를 상속받고,
생성자를 정의한다.
state_score = Score()
Score 클래스에 대한 객체를 만든다.
penup()
객체가 지나가는 자리에 펜 흔적을 남기지 않는다.
hideturtle()
객체를 숨긴다.
wrtie(arg=문자열)
해당 문자열을 써서 화면에 보이도록 한다.
answer = screen.textinput(title= f"{state_score.score}/50", prompt="Let's guess another States!")
answer = answer.title()
textinput()
스크린에 빈칸이 있는 텍스트 상자를 띄운다. 사용자는 빈칸에 글자를 입력한다.
파라미터 title은 글상자 상단의 제목/ 주제가 들어간다.
prompt는 컴퓨터가 사용자의 입력을 받아들일 준비가 되었다는 신호이기도 하며,
한편으로는 빈칸에 대한 힌트를 제공한다.
title()
대부분 제목은 단어의 앞 글자를 대문자(Capital)로 쓴다.
title 메소드는 문자열 안, 각 단어의 첫 글자를 대문자로 바꿔 준다.
state_list = []
if answer not in state_list:
if answer in data.state.to_list():
state_list.append(answer)
letter = turtle.Turtle()
letter.hideturtle()
letter.penup()
answer_data = data[data["state"]== answer]
letter.goto(int(answer_data.x), int(answer_data.y))
letter.write(answer)
state_score.goto(int(answer_data.x) +10, int(answer_data.y)+10)
state_score.gain_point()
state_score.show_score()
A in B
A가 B에 포함되어 있다면 True
A not in B
A가 B에 포함되어 있지 않다면 True
리스트.append(요소)
요소를 해당 리스트에 집어 넣는다.
goto(x, y)
객체를 x, y 좌표로 이동한다.
while state_score.score < 50:
answer = screen.textinput(title= f"{state_score.score}/50", prompt="Let's guess another States!")
answer = answer.title()
if answer == "Exit":
break
if answer not in state_list:
if answer in data.state.to_list():
state_list.append(answer)
letter = turtle.Turtle()
letter.hideturtle()
letter.penup()
answer_data = data[data["state"]== answer]
letter.goto(int(answer_data.x), int(answer_data.y))
letter.write(answer)
state_score.goto(int(answer_data.x) +10, int(answer_data.y)+10)
state_score.gain_point()
state_score.show_score()
while 조건
조건이 True인 동안 계속 반복한다.
if~ break
if 조건이 True라면 해당 while 구문을 빠져나온다(=> break)
with open("last_answer.csv", mode="a") as f:
states_50 = data.state.to_list()
for state in states_50:
if state not in state_list:
f.write(f"{state}\n")
with ~ as~
with open 파일경로 as 불릴 이름
으로 파일을 열고, 일이 끝나면 파일을 자동으로 닫는다.
<최종코드>
score.py
from turtle import Turtle
class Score(Turtle):
def __init__(self):
super().__init__()
self.score = 0
self.penup()
self.hideturtle()
def gain_point(self):
self.score += 1
def show_score(self):
self.write(arg=f"{self.score}/50")
main.py
import turtle
from score import Score
import pandas as pd
screen = turtle.Screen()
img = "blank_states_img.gif"
screen.addshape(img)
turtle.shape(img)
data = pd.read_csv("50_states.csv")
state_score = Score()
state_list = []
while state_score.score < 50:
answer = screen.textinput(title= f"{state_score.score}/50", prompt="Let's guess another States!")
answer = answer.title()
if answer == "Exit":
break
if answer not in state_list:
if answer in data.state.to_list():
state_list.append(answer)
letter = turtle.Turtle()
letter.hideturtle()
letter.penup()
answer_data = data[data["state"]== answer]
letter.goto(int(answer_data.x), int(answer_data.y))
letter.write(answer)
state_score.goto(int(answer_data.x) +10, int(answer_data.y)+10)
state_score.gain_point()
state_score.show_score()
with open("last_answer.csv", mode="a") as f:
states_50 = data.state.to_list()
for state in states_50:
if state not in state_list:
f.write(f"{state}\n")
screen.exitonclick()
<최종코드2>
import turtle
import pandas as pd
screen = turtle.Screen()
img = "blank_states_img.gif"
screen.addshape(img)
turtle.shape(img)
data = pd.read_csv("50_states.csv")
all_states = data.state.to_list()
guessed_states = []
while len(guessed_states) < 50:
answer = screen.textinput(title= f"{len(guessed_states)}/50", prompt="Let's guess another States!")
answer = answer.title()
if answer == "Exit":
missing_states = []
for state in all_states:
if state not in guessed_states:
missing_states.append(state)
new_data = pd.DataFrame(missing_states)
new_data.to_csv("missing_state")
break
if answer in all_states:
guessed_states.append(answer)
t = turtle.Turtle()
t.hideturtle()
t.penup()
answer_data = data[data["state"]== answer]
t.goto(int(answer_data.x), int(answer_data.y))
t.goto(int(answer_data.x) + 10, int(answer_data.y) + 10)
t.write(answer)
screen.exitonclick()
'파이썬 > 파이썬(python) 중급' 카테고리의 다른 글
[26-2 파이썬] 딕셔너리 컴프리핸션 dictionary comprehension (0) | 2022.09.12 |
---|---|
[26-1 파이썬] 리스트 컴프리핸션 List comprehension (0) | 2022.09.11 |
[25-4 파이썬] addshape(), onscreenclick(), mainloop() (0) | 2022.09.07 |
[25-3 파이썬] 판다스로 데이터 처리하기(실습: 센트럴파크 다람쥐) (0) | 2022.09.06 |
[25-2 파이썬] pandas 판다스로 데이터처리하기 (0) | 2022.09.06 |