Ping!/겨울방학 4주차/Python

blue.log·2025년 2월 15일

25.02.14

네이버 부스트코스_모두를 위한 파이썬(PY4E)(8, 9, 10)

과제

팰린드롬인지 확인하기

word = input()
for i in range(len(word)//2 + 1) :
    if word[i] == word[len(word) - 1 - i] :
        result = 1
    else :
        result = 0
        break
print(result)

개수 세기

n = int(input())
nums = list(map(int, input().split()))
v = int(input())

print(nums.count(v))

공 바꾸기

N, M = map(int, input().split())
balls = [0] * N // 여기서 리스트 값을 먼저 할당해 아래 for문에서 append함수 사용안함.

for k in range(N):
    balls[k] = k + 1
    
for k in range(M) :
    i, j = map(int, input().split())
    
    temp = balls[i - 1]
    balls[i - 1] = balls[j - 1]
    balls[j - 1] = temp
    
for i in range(len(balls)) :
    print(balls[i], end = " ")

강의정리

  • 프로그래밍은 알고리즘과 자료구조로 나눌 수 있어.
    첫 번째로, 알고리즘은 특정 문제를 해결하기 위한 규칙 또는 단계이고,
    두 번째로, 자료구조는 컴퓨터내에서 자료를 구조화하는 특별한 방식이야.

  • 평소에 변수를 선언할 때
    하나의 변수에는 하나의 값만 할당하는 것을 배웠지만,

하나의 변수에 여러 값을 넣는 것이 가능한 것이 있어.
바로 '컬렉션'이야.

< A tale of two loops.. >

friends = ['Joseph', 'Glenn', 'Sally']

for friend in friends : // 반복변수 friend를 이용해 직접 출력
  print('Happy New Year: ', friend)
  
for i in range(len(friends)) : // i라는 변수를 만들어 위치를 이용해 출력
  friend = friends[i]
  print('Happy New Year: ', friend)
 
// 위 두 코드는 모두 같은 의미
출력 결과
Happy New Year: Joseph
Happy New Year: Glenn
Happy New Year: Sally
  • 빈 리스트 생성 방법
    1) 생성자 형태
    ex)
stuff = [] // 파이썬에게 리스트를 만들어달라고 말하는 형태

2) 클래스 형태
ex)

stuff = list() // list는 파이썬에 저장된 명령어 = 클래스
  • 리스트에 값의 유무를 판단하는데 너무 간단한 방법이 있길래
    < Is Something in a List? >
    ex)
some = [1, 9, 21, 10, 16]
9 in some
True
15 in some
False
20 not in some
True
  • 정렬과 sort() 메서드
    아래는 알파벳 순으로 정렬된 예시
friends = [ 'Joseph', 'Glenn', 'Sally']
friends.sort()
print(friends)
['Glenn', 'Joseph', 'Sally']
print(friends[1])
Joseph
  • 리스트를 이용하여 한 가지 일을 해결하는 두 가지 방법
    1)
total = 0
count = 0
while True :
  inp = input('Enter a number: ')
  if inp == 'done' : break
  value = float(inp)
  total = total + value
  count = count + 1
  
average = total / count
print('Average: ', average)

2) 이 코드가 메모리 차지를 좀 더 하긴 함

numlist = list()
while True :
  inp = input('Enter a number: ')
  if inp == 'done' : break
  value = float(inp)
  numlist.append(value)
  
average = sum(numlist) / len(numlist)
print('Average: ', average)

출력 결과
Enter a number: 3
Enter a number: 9
Enter a number: 5
Enter a number: done
Average: 5.66666666667
  • 딕셔너리에 없는 키는 찾을 수 없다.
    ex)
ccc = dict()
print(ccc['csev']) // ccc[csev]를 출력했더니 오류 발생
Traceback (most recent call last) :
  File "<stdin>", line 1, in <module>
KeyError: 'csev'
'csev' in ccc
False

이 개념 갖고 히스토그램 만들기

counts = dict()
names = ['csev', 'cwen', 'csev', 'zqian', 'cwen']
for name in names :
  if name not in counts :
    counts[name] = 1
  else :
    counts[name] = counts[name] + 1
print(counts)

// 출력 결과 {'csev':2, 'zqian':1, 'cwen':2}
  • get 메소드
    딕셔리에 존재하는 키인지 아닌지 여부에 따라 처리하는 패턴은 get이라는 메소드를 사용해서 간결하게 해결할 수 있어.
    counts.get(name, 0)의 의미는
    counts 딕셔너리에 name이라는 키가 존재할 경우 name에 대한 값을 불러오고,
    그렇지 않을 경우에는 counts 딕셔너리에 name이라는 키에 0이라는 값을 갖는 데이터를 추가하라는 의미야.
counts = dict()
names = ['csev', 'cwen', 'csev', 'zqian', 'cwen']
for name in names :
  counts[name] = counts.get(name, 0) + 1
print(counts)
  • 파일에 저장된 데이터를 읽어와서 빈도 분석하기
name = input('Enter file: ')
handle = open(name)

counts = dict()
for line in handle :
  words = line.split()
  for word in words :
    counts[word] = counts.get(word, 0) + 1
    
bigcount = None
bigword = None
for word, count in counts.items() :
  if bigcount is None or count > bigcount :
    bigword = word
    bigcount = count
    
print(bigword, bigcount)

0개의 댓글