알쏭달쏭 공부한거 쓰기
7/2 python 내용 복습 본문
#day5번 -2번 문제
## 2. 사용자로부터 파일명을 입력 받아 파이썬 소스 파일인지 판단하는 프로그램을 작성하시오.
- 확장자가 py일 경우 파이썬 소스로 판단한다.
실행 결과
```
파일명: week5.py
파이썬 소스 파일 입니다.
```
sol)
user=input('파일명:')
user=user.strip() #공백 제거-사용자가 공백 입력시 endswith('.py')와 맞지 않을 수 있다.
if user.endswith('.py')==True:
print('파이썬 소스 파일입니다.')
else :
print('파이썬 소스 파일이 아닙니다.')
#day5 5번 문제
## 5. 사용자가 입력한 문자열의 머리 글자어(acronym)를 출력하는 프로그램을 작성하시오.
- by, in, the, of, for 와 같은 단어를 제거할 것.
실행 결과
```
문자열: North Atlantic Treaty Organization
NATO
```
sol)
user=input('문자열!:')
# - by, in, the, of, for 와 같은 단어를 제거할 것.
for i in 'by in the of for'.split():
if i in user:
user=user.replace(i, '')
#전치사 제거된 상태
#문자열의 머리 글자어(acronym)를 출력
#1)0번째와+공백을 세서 공백 다음 문자 출력
>일단 0번 출력
>공백 개수 세기
>공백 find후 뒤에거 출력 및 제거 ...
..문자열 제거는 replace인데 문자열 내의 모든 요소를 한번에 하니까 다음 공백찾기 어려움
>다른 공백 찾기 ...복잡
#2)공백 기준으로 리스트와 후 모든 요소 0번째 출력
user=user.split()
for i in user:
print(i[0],end='')
sol 교수님)
sr = input('문자열: ')#North Atlantic Treaty Organization
for w in ['by', 'in', 'the', 'of', 'for']:
usr = usr.replace(w, '')
usr = usr.split()#['North', 'Atlantic', 'Treaty', 'Organization']
acronym = ''.join([x[0].upper() for x in usr])
print(acronym)
#실습 day6 -4.25문제-여러번 연습할 것
## 4.25 이름을 나타내는 문자열 네 개가 다음과 같이 네 개의 변수에 저장되어 있다. 우리는 이 문자열들에 있는 공백과 하이픈을 제거한 후, 이 문자들을 실행 결과와 같이 공백 없는 대문자로 저장하고자 한다. 문자열 연산을 이용하여 이 문자열들을 그렇게 변경하고, 변경된 이후에 각 문자열에서 문자 'N'이 몇 번 나타나는지 표시하라.
---
```
s1 = 'Kang Young Min'
s2 = ' Kang Young-Min'
s3 = 'Park Dong Min'
s4 = ' Park Dong-Yun'
```
실행결과
```
Kang Young Min(은)는 KANGYOUNGMIN(으)로 수정됨
Kang Young-Min(은)는 KANGYOUNGMIN(으)로 수정됨
Park Dong Min(은)는 PARKDONGMIN(으)로 수정됨
Park Dong-Yun(은)는 PARKDONGYUN(으)로 수정됨
KANGYOUNGMIN : 3 개의 N이 나타남
KANGYOUNGMIN : 3 개의 N이 나타남
PARKDONGMIN : 2 개의 N이 나타남
PARKDONGYUN : 2 개의 N이 나타남
```
sol 1)
s1 = 'Kang Young Min'
s2 = 'Kang Young-Min'
s3 = 'Park Dong Min'
s4 = 'Park Dong-Yun'
#1개씩 치고 싶지 않다!
#>반복문 쓰고 s1 s2 s3 s4를 대입해야하는데 변수들이므로 ''쓰면 안된다.
#'s1 s2 s3 s4'.split()x ['s1','s2','s3','s4']x
b=[]
for i in [s1,s2,s3,s4]:
a=i.replace(' ','')
a=a.replace('-','')
a=a.upper()
print(f'{i}는 {a}로 수정됨')
b.append(a)
for j in b:
#N의 갯수
cnt=j.count('N')
print(f'{j}:{cnt}개의 N이 나타남')
sol2)
for e in range(2):
for i in [s1,s2,s3,s4]:
a=i.replace(' ','')
a=a.replace('-','')
a=a.upper()
if e==0:
print(f'{i}는 {a}로 수정됨')
else:
print(f'{a}:{a.count("N")}개의 N이 나타남')
#day 6-4.26번
## 4.26 어떤 문자열이 다음과 같이 주어져 있다고 하자. 그런데, 이 문자열에 나타난 도시 중에서 'Bython' 시는 최근 'Python'시로 이름을 변경하였다. 이를 반영하여 이 문자열에 나타나는 "Bython"을 모두 "Python"으로 변경하고 변경된 횟수를 다음과 같이 출력하라.
---
실행결과
```
주어진 문자열 :
Park(Java city), Kim(C city), Kang(Bython city), Lee(Bython city), Hong(Ruby city), Cho(Bython city), Koo(C city), Ryu(C++ city)
수정된 문자열 :
Park(Java city), Kim(C city), Kang(Python city), Lee(Python city), Hong(Ruby city), Cho(Python city), Koo(C city), Ryu(C++ city)
Bython 문자열은 모두 3번 수정했습니다.
```
sol)
user=input('주어진 문자열')
user=user.replace('Bython','Python')
#수정된 문자열
print(f"수정된 문자열{user}\n Bython 문자열은 모두 {user.count('Python')}번 수정했습니다.")
수업 내용
1)min/max/sorted의 기준 변경하기
일반적인 위 3개의 함수는 아스킷 코드순으로 배열한다.
min/max/sorted(함수명,key=len)
key에 주고싶은 기준을 작성하면 된다.
lst=['java','python','c programming']
print(min(lst))>c programming
print(max(lst))>python
print(sorted(lst))>['c programming', 'java', 'python']
print(min(lst,key=len))>java
print(max(lst, key=len))>c programming
print(sorted(lst, key=len))>['java', 'python', 'c programming']
2)#함수 호출: 함수 이름(입력값:인자들)
def print_mul(a,b):#이 함수가 일을 하기 위해선 2개의 값이 필요함
print(f'{a}x{b}={a*b}')
#3*4=12 가 함수 안에서 출력된다.
#print_mul(3,4)
#두 수의 곱을 반환(return:호출한 쪽으로 돌려주는)
def mul(a,b):
return a*b #이 함수의 결과는 a*b
#2*5를 출력해보자!
#mul(2,5)# 10이 출력되지는 않는다. 결과만 10이 된다.
#print(mul(2,5))이라 부르면 함수(2,5)인자 전달 a*b값 반환>print(반환값)>10이 출력된다.
실습
#day6-함수 1번 문제
## 1. 아래와 같은 함수를 작성하고 테스트하시오.
1. 별 10개를 출력하는 함수 print_stars()
2. 별 10개를 n라인 출력하는 함수 print_stars_n(n)
3. a+b 를 출력하는 함수 print_sum(a, b)
4. a-b를 출력하는 함수 print_sub(a, b)
5. 이차 방정식 ax^2+bx+c = 0의 해를 구하는 함수 print_root(a, b, c)
- 단, a=/= 0
- 아래는 x^2+4x-21=0, x^2-6x+8=0, x^2+9=0로 테스트한 결과
```
3.0, -7.0
4.0, 2.0
0.0+3.0j, -0.0-3.0j
```
6. a이상 b 이하 정수들의 합을 출력하는 함수 sum_range(a, b)
```
10 이상 20 이하의 정수들의 합: 165
```
sol
1)
def print_stars():
print('*'*10)
print_stars()
2)
def print_stars_n(n):
for _ in range(n):
print('*'*10)
print_stars_n(5)
def print_stars_n():
user=int(input('n라인:'))
for _ in range(user):
print('*'*10)
print_stars_n()
3)
def print_sum(a,b):
print(a+b)
print_sum(3,9)
4)
def print_sub(a,b):
print(a-b)
print_sub(12,110)
5)
def print_root(a,b,c):
det=(b**2-4*a*c)**.5
x1=(-b+det)/(2*a)
x2=(-b-det)/(2*a)
print(f'{x1:.2f},{x2:.2f}') 형식 지정 주의하기!!
print_root(1,0,9)
6)
def sum_range(a,b):
print(sum(range(a,b+1)))
sum_range(10, 20)
#return 값이 print(), print()인 경우와 호출 명이 print(함수명)인 경우
def mul_sum(a,b):
return print(a*b), print(a+b)
mul_sum(3,5)
#15
#8로 나온다
def mul_sum1(a,b):
return a*b, a+b
print(mul_sum1(3,5))
#(15, 8)으로 나온다.
3) 수학함수 쓰려면>import math as m 불러야한다.
#day6 함수 2번 문제
## 2. 아래 함수를 작성하고 테스트하시오.
1. 원의 반지름을 매개 변수로 받아 면적과 둘레의 길이를 반환하는 함수 circle_area_preim(radius)
- 위 함수를 사용해 반지름이 3인 원의 면적과 둘레의 길이를 출력하시오.
2. 이차 방정식 ax^2+bx+c = 0의 두 해를 반환하는 함수 get_root(a, b, c)
- 단, a=/= 0
- 위 함수를 사용하여 x^2+4x-21=0의 두 해를 출력하시오.
sol)
1)
import math as m
def circle_area_preim(r):
print(f'원의 면적={r*r*m.pi:.3f}, 원의 둘레={2*r*m.pi:.3f}')
circle_area_preim(3)
출력:원의 면적=28.274, 원의 둘레=18.850
2)
def get_root(a,b,c):
det=(b**2-4*a*c)**.5
x1=(-b+det)/(2*a)
x2=(-b-det)/(2*a)
print(f'{x1:.2f},{x2:.2f}') 형식 지정 주의하기!!
get_root(1,4,-21)
#sin, cos함수 부르기
def math_test():
import math as m
print('원주율',m.pi)
#math 모듈 사용하여 sin(0)
print(m.sin(0))
#cos(ㅠ/2)
print(f'{m.cos(m.pi/2):.2f}')
'파이썬 -23여름학기(ㄱㅎㅈ)' 카테고리의 다른 글
중간고사 대비-hw별 문제풀이 가능여부 및 연습 (0) | 2023.07.03 |
---|---|
7/3 수업 중 작성 (0) | 2023.07.03 |
중간고사 족보 대비 (0) | 2023.07.03 |
HW5 과제 풀이 (0) | 2023.07.02 |
7/1-python 수업 내용 (0) | 2023.07.02 |