알쏭달쏭 공부한거 쓰기

hw7 본문

파이썬 -23여름학기(ㄱㅎㅈ)

hw7

elec_cy 2023. 7. 9. 00:39

hw7.py
0.00MB


https://colab.research.google.com/drive/1x2iu5p76vVhGdaHyMKyRvWXYu6TrzTfh?usp=sharing 

 

HW7.ipynb

Colaboratory notebook

colab.research.google.com

6.25

def a():
    E_d={}
    print('사전 프로그램 시작... 종료는 q를 입력')
    while True:
        
        user=input('$ ')
       
        if user=='q':
            print('사전 프로그램을 종료합니다.')
            break
        elif user[0]=='<':
            e_,k_=user.split(':')
            E_d[e_[2:]]=k_
            print(E_d)
        elif user[0]=='>':
            print(user[2:])
            print(E_d.get(user[2:],f'{user[2:]}가 사전에 없습니다.'))
        else:
            print('입력 오류가 발생했습니다.')


a()

hw7.1

def a():
    q1='다음은 어떤 단어에 대한 설명일까요?\n"최근에 가장 떠오르는 프로그래밍 언어"'
    q2='다음은 어떤 단어에 대한 설명일까요?\n"데이터를 저장하는 메모리 공간"'
    q3='다음은 어떤 단어에 대한 설명일까요?\n"작업을 수행하는 문장들의 집합에 이름을 붙인 것"'
    q4='다음은 어떤 단어에 대한 설명일까요?\n"서로 관련이 없는 항목들의 모임"'
    
    quiz={q1:'파이썬',q2:'변수',q3:'함수',q4:'리스트'}
    for i in quiz:
        print(i)
        print('(1)파이썬\t (2)변수\t (3)함수\t (4)리스트')
        user=input()
        if user==quiz[i]:
            print('정답입니다.')
        else:
            print(f'오답입니다. 정답은 {quiz[i]}입니다.')
        print()    
a()

9일차 실습 문제 
https://colab.research.google.com/drive/1NrGiqH2bslaVbRPzDg-hohmWBQuf83L9 (외부 사이트로 연결합니다.)

 

Day_09.ipynb

Colaboratory notebook

colab.research.google.com

#2,3: 자동차, 엘레베이터 클래스 작성 및 테스트 

1) 코드 수정

(1)
```
class MyClass:
  def __init__(self):
    self.radius = 10
```

(2)
```
class MyClass:
  def __init__(self, r):
    self.__radius = r

a = MyClass(10)
print(a.get_radius())

(1)radius 변수가 정의 되지 않았다.

(2)get_radius 함수가 정의 되지 않았다.

 

#2

## 2. Car 클래스 작성 후, Car 객체를 생성하여 A 지점에서 B지점까지 운행하시오.
 - 멤버 변수: mileage(private)
 - 메소드: 직진, 우회전, 좌회전
 이 외에 필요한 메소드가 있다면 알아서 작성하세요.
---
실행 예시
```
25m 직진합니다.
좌회전 후 30m 직진합니다.
우회전 후 15m 직진합니다.
...
...
총 주행거리는 90m 입니다.
class Car:
    def __init__(self,mileage=0):
        self._mileage=mileage
    def go(self,mile):
        self._mileage+=mile
        print(f'{mile}m 직진합니다.')
    def turn_right(self):
        print('좌회전 후',end=' ')
    def turn_left(self): 
        print('우회전 후',end=' ')
    def __str__(self):
        return f'총 주행거리는 {self._mileage}m 입니다.'
mycar=Car()
mycar.go(25)     
mycar.turn_right()
mycar.go(30)
mycar.turn_right()
mycar.go(15)
mycar.turn_left()
mycar.go(20)
print(mycar)
## 3. Elevator 클래스를 작성한 후, Elevator 객체를 생성한 후 아래와 같이 테스트하시오.

* 속성(인스턴스 변수)
  * `_floor` : -2층에서 10층까지의 층수를 표현, 0층은 로비를 의미한다.
  * `_is_open` : 문 열림 상태를 표현. 문이 열린 경우 True, 문이 닫힌 경우 False.
  
* 동작(메소드)
  * `__init__()` : 디폴트 층수는 로비, 디폴트 문 열림 상태는 닫힘이다.
  * `move(destination)` : 문을 닫은 후 도착 층(destination)으로 이동한다. 도착 층으로 이동했다면 문을 연다. 단, 도착 층이 유효하지 않은 값인 경우 '유효한 층수를 입력해주세요.'라는 문장을 출력할 것.
  * 아래 테스트 코드와 결과를 보고 추가로 필요한 메소드가 있다면 작성할 것.  
  
---
테스트 코드 1)

```
e = Elevator() # 엘레베이터 생성
print(e)
e.open() # 엘레베이터의 문을 연다
e.close() # 엘레베이터의 문을 연다
```

실행 결과 1)

```
이 엘레베이터는 현재 로비층에 있으며, 문이 닫혀있습니다.
문이 열립니다.
문이 닫힙니다.
```
---
테스트 코드 2)

```
e = Elevator()
print(e)
e.move(10) #10층으로 이동
print(e)
```

실행 결과 2)

```
이 엘레베이터는 현재 로비층에 있으며, 문이 닫혀있습니다.
문이 닫힙니다.
10층에 도착했습니다.
문이 열립니다.
이 엘레베이터는 현재 10층에 있으며, 문이 열려있습니다.
```
---
테스트 코드 3)

```
e = Elevator()
e.move(-10) #유효하지 않은 층수인 지하 10층으로 이동
print(e)
```

실행 결과 3)

```
문이 닫힙니다.
유효한 층수를 입력해주세요.
이 엘레베이터는 현재 로비층에 있으며, 문이 닫혀있습니다.
```

 

 

class Elevator:
    def __init__(self,floor=0,is_open=False):
        self._floor=floor
        self._is_open=is_open
    def __str__(self):
        if self._floor==0:
            flo='로비'
        else:
            flo=self._floor
        if self._is_open==False:
            door='닫혀있습니다.'
        else:
            door='열려있습니다.'
        return f'이 엘리베이터는 현재 {flo}층에 있으며, 문이 {door}'
    def open(self):
        self._is_open=True
        print('문이 열립니다.')
    def close(self):
        self._is_open=False
        print('문이 닫힙니다.')
    def move (self, destination):
        self.close()
        if destination<-2:
            print('유효한 층수를 입력해주세요.')
        else: 
            self._floor=destination
            print(f'{self._floor}에 도착했습니다.')
            self.open()
e = Elevator() # 엘레베이터 생성
print(e)
e.open() # 엘레베이터의 문을 연다
e.close() # 엘레베이터의 문을 연다       
        
e = Elevator()
print(e)
e.move(10) #10층으로 이동
print(e)

e = Elevator()
e.move(-10) #유효하지 않은 층수인 지하 10층으로 이동
print(e)

7일차 실습 문제 
https://colab.research.google.com/drive/1McVY7e0CFbMh2jnZ_3GUhMWihoy0S-iW?usp=sharing (외부 사이트로 연결합니다.)

 

Day_07.ipynb

Colaboratory notebook

colab.research.google.com

#6.16, dts6, dts7 + 오늘 실습 문제 복습

 

def a():
    student_tuple = (('191101', '홍길동', '010-123-45xx'), ('191102', '임꺽정', '010-223-45xx'), ('191103', '장길산', '010-323-45xx') )
    num,name,_=zip(*student_tuple)
    a=dict(zip(num, name))
    print(a)
    while True:
    
        user=input('학번을 입력하세요: ')
        #print(f'{user}번의 학생은 {a.get(user,"해당 학번의 학생이 없습니다.")}입니다.') 
        #191106번의 학생은 해당 학번의 학생이 없습니다.입니다. 
        if int(user)>0:
            if a.get(user)!=None:
                print(f'{user}번의 학생은 {a.get(user)}입니다.')
            else:
                print('해당 학번의 학생이 없습니다.')
                
        else:  
            print('프로그램을 종료합니다.')
            break
a()
'''
{'191101': '홍길동', '191102': '임꺽정', '191103': '장길산'}
학번을 입력하세요: 191102
191102번의 학생은 임꺽정입니다.
학번을 입력하세요: 191106
해당 학번의 학생이 없습니다.
학번을 입력하세요: -3
프로그램을 종료합니다.
'''
## dts6. 학생 3명의 3과목 성적이 딕셔너리에 저장되어 있다. 각 학생의 평균 성적을 출력하시오.
```
score = {'Kim': [99,83,95], 'Lee': [68,45,78], 'Choi':[25,56,69]}
```

---
실행 결과
```
Kim  : 92.333점
Lee  : 63.667점
Choi : 50.000점
```

def a():
    score = {'Kim': [99,83,95], 'Lee': [68,45,78], 'Choi':[25,56,69]}
    for i in score:
        print(f'{i} : {sum(score[i])/len(score[i]):.3f}')
a()
## dts7. 위 문제에서 학생의 성적을 입력 받도록 수정하고 학생의 성적을 출력하시오.

---
실행 결과
```
Kim의 성적을 입력해주세요(성적은 공백으로 구분): 100 80 95
Lee의 성적을 입력해주세요(성적은 공백으로 구분): 70 60 90
Choi의 성적을 입력해주세요(성적은 공백으로 구분): 30 100 90


Kim: [100, 80, 95]
Lee: [70, 60, 90]
Choi: [30, 100, 90]
```

def a():
    score={}
    score['Kim']=[int(x) for x in input('Kim의 성적을 입력해주세요(성적은 공백으로 구분):').split()]
    score['Lee']=[int(x) for x in input('Kim의 성적을 입력해주세요(성적은 공백으로 구분):').split()]
    score['Choi']=[int(x) for x in input('Kim의 성적을 입력해주세요(성적은 공백으로 구분):').split()]
    #Kim, Lee, Choi 가 영어라서 변수처리됨 아니라면 문자열로 표현
    #input('Kim의 성적을 입력해주세요(성적은 공백으로 구분):').split() 이것 만 하니까 점수들이 Kim:['100', '80', '95'] 이렇게 문자열 처리되서 나온다.
    for i in score:
        print(f'{i}:{score[i]}')
a()

'파이썬 -23여름학기(ㄱㅎㅈ)' 카테고리의 다른 글

7-10  (0) 2023.07.10
HW8,HW9  (0) 2023.07.09
HW8 정리  (0) 2023.07.09
2023 여름 파이썬 중간 족보  (0) 2023.07.09
7/7 파이썬 수업-클래스 복습, Gui, time  (0) 2023.07.07