알쏭달쏭 공부한거 쓰기

7/2 python 내용 복습 본문

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

7/2 python 내용 복습

elec_cy 2023. 7. 2. 17:55

#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