[프로그래밍 언어]/python

두근두근 파이썬(개정판)_ch9 리스트와 딕셔너리 연습문제 1~8번

우당탕탕 개발 일지 2024. 1. 25. 18:27

안녕하세요. 우당탕탕 개발 일지입니다.

파이썬 에디터 IDLE 3.12.1을 사용합니다.

교재 연습문제 1번-10번까지 코드와  풀면서 느낀 점만 올립니다. 

해당 개념만 다룬 블로그 링크 첨부 합니다.

2024.01.25 - [[프로그래밍 언어]/python] - 두근두근 파이썬(개정판)_ch9 리스트와 딕셔너리

 

두근두근 파이썬(개정판)_ch9 리스트와 딕셔너리

안녕하세요. 우당탕탕 개발 일지입니다. 파이썬 에디터 IDLE 3.12.1을 사용합니다. 책과 수업 내용을 바탕으로 요약한 내용과 교재 뒤 연습문제입니다. 9장 연습문제 링크 첨부 합니다. 파이썬 자료

hansol2124.tistory.com

 

 

 

 

연습문제 ch9-1

사용자로부터 5개의 숫자를 읽어 리스트에 저장하고 숫자들의 평균을 계산하여 출력하는 코드를 작성해 보자.

alist=[]
def ave(n):
    for i in range(n):
        user=int(input("정수를 입려하시오:"))
        alist.append(user)

    print("합계={}".format((sum(alist))/n))

ave(5)

연습문제 ch9-2

주사위를 던져 나오는 값의 빈도를 계산하는 코드를 작성해보자.

import random

counters=[0,0,0,0,0,0]

for i in  range(1000):
    value=random.randint(0,5)
    counters[value]=counters[value]+1

print(f"주사위가 1인 경우는{counters[0]}번")
print(f"주사위가 2인 경우는{counters[1]}번")
print(f"주사위가 3인 경우는{counters[2]}번")
print(f"주사위가 4인 경우는{counters[3]}번")
print(f"주사위가 5인 경우는{counters[4]}번")
print(f"주사위가 6인 경우는{counters[5]}번")

 

 

개인적으로  9장에서 짤 때 제일 재밌었음


연습문제 ch9-3

딕셔너리에 친구들의 이름과 전화번호를 저장하는 코드를 작성하고

이름을 입력하지 않고 enter을 누르면 검색모드가 되어 검색할 수 있게 코드를 작성해 보자. 

contacts={}

while True:
    name=input("(입력모드)이름을 입력하시오")
    if not name:
          name=input("(검색모드)이름을 입력하시오")
          print(f"{name}의 전화번호는 {contacts[name]} 입니다.")
          break;
    tel=input("전화번호를 입력하시오:")
    contacts[name]=teldo

 

if문 not name:가 enter을 눌렀을 때 조건의 코드임.


연습문제 ch9-4

인터넷 도메인의 약자와 해당되는 국가를 딕셔너리에 저장하는 코드를 작성해보자.

domains={"kr":"대한민국","us":"미국","jp":"일본","de":"독일","sk":"슬로자키아","ho":"헝가리","no":"노르웨이"}

for k,v in domains.items():
    print(k, ":", v)

 

items()는 모든 키와 값을 반환하니까 k, v에 순차적으로 저장되면서 반복됨.

=> 매개변수를 사용해서 출력하는 방식으로 짰음


연습문제 ch9-5

딕셔너리에 문제와 정답을 저장하고 하나씩 꺼내서 사용자에게 제시하는 프로그램을 작성해 보자. 

사용자가 문자열로 답해야 하고 번호로는 답할 수 없다.

problems={'파이썬':'최근에 가장 떠오르는 프로그래밍 언어',
                    '변수':'데이터를 저장하는 메모리 공간',
                    '함수':'작업을 수행하는 문장들의 집합에 이름을 붙인 것',
                    '리스트':'서로 관련이 없는 항목들의 모임'
                  }

for word in problems.keys():
    print("다음은 어떤 단어에 대한 설명일까요?")
    print(problems[word])
    ans=str(input("(1)파이썬 (2)변수 (3)함수 (4)리스트\n"))
    if ans==word:
        print("정답입니다.!")
    else:
        print("정답이 아닙니다.")

 

인터넷에 있는 정보를 학습시키면

스스로 문제와 보기를 만드는 chat-GPT 비슷한 느낌이지 않을까 생각해 봤음.


연습문제 ch9-6

색상을 리스트에 저장하고 랜덤 한 위치에 사각형을 그린 후 리스트에서 색을 꺼내 속을 채우는 프로그램을 작성해 보자.

 

import turtle
t=turtle.Turtle()
import random 

color=['yellow','red','purple','blue']

def draw_square(x,y,c):
    t.up()
    t.goto(x,y)
    t.down
    t.fillcolor(c)
    t.begin_fill()
    for i in range(4):
        t.fd(100)
        t.lt(90)
    t.end_fill()



for c in color[0:4]:
    x=random.randint(-500,500)
    y=random.randint(-500,500)
    draw_square(x,y,c)

연습문제 ch9-7

색상을 리스트에 저장하고 랜덤 한 위치에 무작위 다각형을 그린 후 리스트에서 색을 꺼내 속을 채우는 프로그램을 작성해 보자.

 

import turtle
t=turtle.Turtle()
import random

color=['yellow','red','purple','blue','green','light blue', 'orange','white']
t.pencolor("black")

def draw_shape(t,c,length,side,x,y):
    t.up()
    t.goto(x,y)
    t.down()
    t.fillcolor(c)
    t.begin_fill()
    for n in range(side):
        t.fd(length)
        t.lt(360/side)
    t.end_fill()


for i in range(20):
		c=random.choice(color)
    x=random.randint(-500,500)
    y=random.randint(-500,500)
    side=random.randint(3,8)
    length=random.randint(10,100)
    draw_shape(t,c,length,side,x,y)

연습문제 ch9-8(p300 교재에는 ch9-7이라고 되어 있음 )

색상을 리스트에 저장하고 랜덤 한 위치에 랜던한 크기의 별을 그린 후 리스트에서 색을 꺼내 속을 채우는 프로그램을 작성해 보자.

 

import turtle
import random
t=turtle.Turtle()
s=turtle.Screen()
s.bgcolor("black")

mycolor=["red","white","blue","green","light blue","orange","yellow"]
def draw_star(c,length,x,y):
    t.up()
    t.goto(x,y)
    t.down()
    t.pencolor(c)
    t.fillcolor(c)
    t.begin_fill()
    for _ in range(5):
        t.fd(length)
        t.rt(144)
        t.fd(length)
        t.left(72)     
    t.end_fill()
        
for i in range(20):
    c=random.choice(mycolor)
    length=random.randrange(1,100)
    x=random.randrange(-500,500)
    y=random.randrange(-500,500)
    draw_star(c,length,x,y)

 

별을 그리는 방식에 따라 색이 일부분만 채워져서 엄청 애먹었다. 

728x90