Big Bro's Studying Archive

Python 기초 4 : 리스트의 벡터활용 메서드와 함수, for, while, if 문을 활용한 다양한 문제풀이 본문

Big Data展

Python 기초 4 : 리스트의 벡터활용 메서드와 함수, for, while, if 문을 활용한 다양한 문제풀이

빅브로오 2020. 4. 9. 19:05

@author: Yoon Baek

4번째 시간을 들어가기 앞서...

다양한 if문 활용 명령 구문
break(수행문 종료), exit (프로그램 종료), next ( pass 와 유사 ),
continue 등등
리스트 메서드가 편라한 게 꽤 많으니 자주 써보기
for문, while문은 논리구조를 세워놓는 것이 특히 중요한 듯.

리스트를 R의 벡터처럼 활용하기 위한 함수 pandas::Series

from pandas import Series
s1 = Series([1,2,3,4,5])
s1[[0,3]]         # 벡터 색인 가능
s1 < 2            # 조건 전달 가능
s1[s1 < 2]        # 조건 색인 가능
s1 + 1            # 벡터에 스칼라 연산 가능

알아두면 유용한 리스트 주요 메서드

L1 = [1,2,3,4,5]
L2 = [1,5,2,3,4]

L1.append(6)     # 원소추가
L1.extend([7])   # 원소추가
L1.insert(0,10)  # 0번쨰 위치에 10 삽입

L1.remove(3)     # 특정 원소 삭제
L1.pop()         # 마지막 원소 삭제

L1.count(1)      # 원소 포함 횟수

L1.index(4)      # 원소 위치
L1.index(3)      # 원소 위치( 값이 없으면 에러 발생) ValueError: 3 is not in list

L2.sort(reverse = False) ; L1 # 정렬된 결과 추출

for문

for i in range(0,6) :    # 0:5 in R
    print(i)             # 0부터 6 이전의 숫자까지 출력
# 4-2
for i in range(0,6,2) :  # 0:6:2
    print(i)

for i in L1 :
    print(i)

for i in L1 :
    print(i, end = '  ')

[ 연습문제 ]

jumin = ['8812111223928','8905042323343','90050612343432'] 에서
각 성별을 나타내는 숫자를 추출(for문 사용)

v1 = []
type(v1)     # 빈리스트 생성시 리스트 타입으로 생성
for i in jumin :
    v1.extend([i[6]])

[ 연습문제 ]

2 ~ 300, 3씩 증가시킨 값의 합계 구하기(15050)
sol1

v1 = int(input('시작값을 입력하세요 : '))
v2 = int(input('끝값을 입력하세요 : '))
v3 = int(input('증가값을 입1력하세요 : '))
vi =[]
for i in range(v1,v2+1,v3) :
    vi.extend([i])

sum(vi)

sol2

vi=0
for i in range(v1,v2+1,v3) :
    vi += i

[L2를 2차원 형식으로 표현]

L1 = [1,2,3]
L2 = [[1,2,3],[4,5,6],[7,8,9]]
for i in L1 :
    print(i, end = '  ')

for i in L2 :
    print(i, end = '  ')
  1. 리스트 값을 바로 넣는 방법

    for i in L2 :
     for j in i :
         print(j, end = '  ')
     print()                  # print는 \n을 end 값으로 디폴트로 갖고 있음
  2. 위치값으로 색인하는 방법

    for i in range(0,3) :
     for j in range(0,3) :
         print(L2[i][j], end = '  ')
     print()
    [ 연습 문제 - 불규칙한 리스트의 2차원 형식 출력 ]
  3. L3 = [[1,2],[1,2,3],[4,5,6]]
  4. 리스트값 색인

    for i in L3 :
     for j in i :
         print(j, end = '  ')
     print()
  5. range를 활용한 위치값 색인 이용 풀이

    for i in range(0, len(L3)) :
     for j in range(0, len(L3[i])) :
         print(L3[i][j], end = '  ')
     print()
    while문

    i가 11일 때 스톱하는 i 출력 while문

    if문

    [ 연습문제 : 1부터 100까지 합 출력, 짝수만]

    sol1 : for문 만을 이용한 풀이법

    vsum = 0       
    for i in range(2,101,2) : # by 설정값을 이용
     vsum += i
    vsum

    sol2 if 문을 활용한 풀이법

    for i in range(1,101) :
     if (i % 2 == 0) :
         vsum += i
     else :
         next
    vsum

    sol3 while문을 활용한 풀이법

    i = 0
    while i <= 100 :
      if i % 2 == 0 :
          vsum += i
      else :
          next
      i += 1

    [실습 문제]

    1. 구구단 출력

    %2d를 응용하여 간격을 맞춰주면 아래와 같이 좀 더 깔끔한 결과를 얻을 수 있다.

    2. 별 출력
    i = 1
    j = 4
    while i < 6:
     print('  ' * j, end = '')
     j -= 1
     print('\u2605' * (2 *i - 1))
     i += 1
    i = 4
    j = 1
    while i > 0:
     print('  ' * j, end = '')
     j += 1
     print('\u2605' * (2 *i - 1))
     i -= 1

    sol2 : while문과 if문을 활용한 풀이

    v1 = '  '
    v2 = '\u2605'
    i = 1
    while i <= 10 :
     if i <= 5 :
         print(v1*(5-i) + v2*(2*i -1))
     else :
         print(v1*(i-5) + v2*((10-i)* 2 - 1))
     i += 1

    아래와 같이 출력되면 된다.

    3. 사용자로부터 하나의 단어를 입력받고 회문여부 판별
    t1 = input('단어를 입력하세요 : ')
    
  6. lloll
    sol 1 : if문 두개를 활용한 풀이
  7. sol1 : while 문 두 개를 이용한 풀이
  8. for i in range(1,10): for j in range(2,10): print('%dX %2d = %2d' % (j, i, i*j), end = ' ') print()
  9. L1 = [1,2,3,4,5] i = 0 for i in L1 : if i > 3 : print(i)
  10. i = 0 while i < 11 : print(i) i = i + 1

test = []
for i in range(0, len(t1)//2):
if t1[i] == t1[-i-1] :
test.append(t1[i])
else:
next
if len(test) == len(t1)//2 :
print('회문입니다.')
else:
print('회문이 아닙니다.')

sol 2 : 회문이 아닐 시 프로그램 종료    
```python    
vword = input('회문판별할 문자를 입력하세요 : ')

for i in range(0,len(vword) // 2) :
    if vword[i] == vword[-(1+i)] :
        continue
    else :
        print('회문이 아닙니다.')
        exit(0)
print('회문입니다.')

sol 3 : 회문이 아닐 시에도 프로그램 종료는 하지 않음.

vword = input('회문판별할 문자를 입력하세요 : ')

for i in range(0,len(vword) // 2) :
    if vword[i] == vword[-(1+i)] :
        1
    else :
        print('회문이 아닙니다.')
        break
    print('회문입니다.')

Comments