if ((A and B) or C) 윤년
A : year % 4 == 0
B : year % 100 != 0
C : year % 400 == 0
3개 수 입력 받아 내림차순 정렬(이건 시험에 나온다고 한적은 없음 그냥 나올법해서 정리)
n1, n2, n3 = input("입력 : ").split()
int 로 꼭 치환 해줘야함
n1 = int(n1)
n2 = int(n2)
n3 = int(n3)
총 3번 if 문 필요 (n1, n2) , (n2, n3), (n1, n2)
if n1 <= n2:
n1, n2 = n2, n1
if n2 <= n3:
n2, n3 = n3, n2
if n1 <= n2:
n1, n2 = n2, n1
print("내림차순 성렬: {} {} {}".format(n1, n2, n3))
## data #22
1. 실수의 두가지 표현 방식. 2장 데이터pdf 4page
2. 변수명 규칙 2장 데이터 pdf 12,13page
보기 단어 중 변수의 이름이 될 수 없는 것은?
2nd_base : 숫자로 시작 할 수 없다.
money : # 문자 기호 사용 못함
varname$ : $ 특수 문자 사용 못함
id name : 중간에 공백 문자 사용 못함
for : 예약어 for 를 변수명으로 사용 못함 # print(keyword.kwlist)
변수명 규칙 : 영어 대소문자, 숫자 밑줄(_)로만 이뤄지는데, 영어 대소문자와 밑줄로만 시작 가능. 마지막으로 키워드들은 사용 불가
3. type 출력 이슈
```python
x = 10
intType = type(x)
print(intType) # <class 'int'> 타입 이름 기억
x = 2.5
print(type(x)) # <class 'float'>
x = "Hello"
print(type(x)) # <class 'str'> string이 아니라 str 이다.
---
# 3.14 를 변수에 할당한 후(변수는 하나만 사용)
x = 3.14
# 문자열로 변환 후, 값과 데이터 형을 출력
x = str(x)
print(x, type(x))
# 변환된 문자열을 정수로 변환 후, 값과 데이터 형을 출력
x = int(float(x)) # 소수점 있는 문자열은 바로 int 변환 못하니까 float 거쳐서 int 로 변환한다
print(x, type(x))
# 변환된 정수를 실수로 변환 후, 값과 데이터 형을 출력
x = float(x)
print(x, type(x))
for #23
S = "하나씩건너서출력"
for k in range(0, len(S), 2):
print(S[k], end="")
S = "뒤에서부터출력"
for j in range(len(S) - 1, -1, -1): # 거꾸로 출력
print(S[j], end="")
# TODO: list comprehension 는 시험에 반드시 나옴
a = [1, 2, 3, 4]
result = [num * 3 for num in a] # [3, 6, 9, 12]
# for문이 1번, if문이 2번, num * 3 이 3번 순서로 실행된다.
a = [1, 2, 3, 4]
result = [num * 3 for num in a if num % 2 == 0] # [6, 12]
# TODO: 시험에 나온다 외워라
L = list(int(x) for x in input("Numbers? ").split())
print(L)
TODO: for page17 코드(소수인지 판단) 응용해서 시험 나올수도 있음
N = int(input("N(> 1)? "))
primeChk = True
for k in range(2, N):
if N % k == 0:
primeChk = False
break
if primeChk == True:
print("prime")
else:
print("not prime")
별찍기
for i in range(1, 6):
for j in range(5-i):
print(" ", end="") # 빈칸 출력
for j in range(1, i*2, 1):
print("*", end="") # "*" 출력
print("")
*
***
*****
*******
*********
- - -
N = int(input("Enter # of lines : "))
for i in range(N, 0, -1):
for j in range(i):
print("*", end="") # 빈칸 출력
print()
Enter # of lines : 7
*******
******
*****
****
***
**
*
# 트리 형태이고 첫 줄은 중간에 * 하나 한 줄씩 띔, 마지막 5번째 줄은 * 9 개이고 빈칸없음
for i in range(1, 6):
for j in range(5 - i):
if i == 1 and j == 1:
print(" ", end="")
print(" ", end="") # 빈칸 출력
for j in range(1, i * 2, 1):
if i == 6-1:
print("*", end="") # "*" 출력
else:
print("* ", end="") # "*" 출력
print("")
*
* * *
* * * * *
* * * * * * *
*********
io #24
10#20 와 같이 출력 하려면?
print("10", end="#")
print("20")
# 세 개의 수를 입력 받아, 그 합과 평균을 출력해라. 평균은 소수점 한자리까지 출력
n = input("정수 숫자 3개를 입력 : ")
n1, n2, n3 = n.split()
print("입력 받은 값 : {} {} {}".format(n1, n2, n3))
sum = int(n1) + int(n2) + int(n3)
avg = sum / 3
print("총합 : {}".format(sum))
print("평균 : %.1f" % avg)
s = "Good words cost nothing"
word = input("찾는 단어 입력 : ")
# 출력 시 포맷팅은 % operator 사용
count = s.count(word)
print("Good words cost nothing 문장에서는 work 단어가 %d 번 있습니다." % count)
list #25
# TODO: 리스트 만드는 방법 두가지 시험에 나옴
c = list()
d = []
# L = [1,2,3,4] --> L.insert(2,10) --> L.pop() 을 순서대로 수행한 결과 → [1,2,10,3]
L = [1, 2, 3, 4]
L.insert(2, 10)
L.pop()
print(L) # [1, 2, 10, 3]
module&file #26
# TODO 파일 여는방법, 닫는방법만 외워라
# 파일 close() 하는거 까먹지 마라
# open 과 close 가 pair 로 꼭 들어가야함
fR = open("in_data.txt", 'r')
fW = open("out_data.txt", 'w')
s = fR.read() # 한번에 모두 읽어 하나의 문자열로 저장
fW.write(s) # 읽은 문자열 파일에 쓰기
fR.close()
fW.close() # 두 파일 닫기
1 3 5
7 3
인 경우 file read 해서 결과 출력하기
교재에 있는 readlines() 사용한 예시임
fp = open("in_data.txt", "r")
s = fp.readlines()
print(s) # ['1 3 5\n', '7 3']
operator #27
import 방법 1 : from math import * # p5
import 방법 2 : import math as m
교수님은 as 쓰는 방법을 더 선호하셨던걸로 기억
math.trunc() # 소수점 이하 버려
# 17 을 4로 나눈 몫과 나머지를 같이 반환
a, b = divmod(17, 4)
# 반올림하는데 소수점 이하 4자리까지 보존함. 5번째에서 반올림 수행
print(round(3.123456, 4)) # 3.1235
print(round(3.1, 4)) # 3.1
print(round(3, 4)) # 3
x+=y 의 의미는 x = x+y
tuple/set/dict #28
빈 튜플 작성하는 2가지 방법
t = tuple(), t = ()
set 만드는 방법
S1 = {3, "cat", False}
S2 = set([1, 2, 3, 2])
# S3 = {1, 2, [3, 4]} 오류 TypeError 리스트는 원소로 올 수 없음
print(type(S1)) # <class 'set'>
print(type(S2)) # <class 'set'>
s1 = set([1, 2, 3])
s1.add(4)
print(s1) # {1, 2, 3, 4}
s1.update([4, 5, 6])
print(s1) # 존재하는 데이터 추가하면 변동 없음 {1, 2, 3, 4, 5, 6}
s1.remove(6) # 원소 6을 지우라는 뜻 인덱스 아님
print(s1) # {1, 2, 3, 4, 5}
s1.discard(6) # 이미 없는 원소 삭제하면 무시(Error 안남)
print(s1.pop()) # 순서가 없어서 임의로 pop됌
s1.clear() # 공집합 만듬
print(s1) # TODO: 시험에 나옴. 빈 잡합 출력하면 {} 이게 아니다. set() 이렇게 나온다.
d = dict()
print(type(d)) # <class 'dict'>
d = {}
print(type(d)) # <class 'dict'>
두개 차이 알아라
A.intersection(B) : A & B 와 동일.
A.intersection_update(B) : A 를 A & B 로 갱신
$$A \cap B$$
두개 차이 알아라
A.difference(B) : A - B 와 동일(B에는 없고 A에만 있는 원소의 집합 반환)
A.difference_update(B) : A 를 A - B 로 갱신
D = { "Kim":89,"Lee":56,"Yo":50 } --> list(D.values()) 출력 결과
→ [89,56,50]
# TODO: 시험에 나옴 e+02 에서 0이 붙은거는 그냥 외워라.
# 소숫점이하 3 자리 지수 (8자리)
print("|{:8.3e}|".format(314.15926)) # |3.142e+02|
print("|{:9.2e}|".format(314.15926)) # | 3.14e+02|
print("|{:10d}|".format(12345)) # | 12345| (5개 공백있는거임)
# space bar 대신 0 을 넣는다. 총10개 문자 사용하라(쉼표도 문자에 포함)
print("|{:010,d}|".format(12345)) # |00,012,345|
# %는 곱하기 100하라는 뜻. 그리고 소수점 셋째자리까지 표현. % 까지 자동으로 표현
print("{:.3%}".format(1 / 3)) # 33.333%
x = "hello"
y = "abc"
print("{0[1]}, {1[2]}".format(x, y)) # 0 은 format 의 0 인덱스값이니까 hello를 의미 그리고 [1] 은 e. 1은 1인덱스니까 abc. 그리고 [2] 는 c
print("{:*^12}".format("center")) # ***center***
a = 5
b = 2
print(a // b, a % b, a ** 3) # 2 1 125
L = "Hi there!"
print(L[1::2]) # itee
while&function #31
TODO
빈칸 채우기
( ) get_max(a,b):
if a>b:
( ) a
else:
( ) b
get_max(20,,10)
→ 답 : def return return
지역변수, 전역 변수 문제 나올 수 있음
에러나는 이유 설명하기 : 함수내에서 사용하는 a 는 지역변수다. 선언 먼저 하고 사용해야한다. 안그러면 아래와 같은 에러발생
def test():
print(a) # 컴파일 에러 UnboundLocalError: local variable 'a' referenced before assignment
a = 20
print(a)
a = 100 # a 전역변수
print(a) # 100 출력
test()
print(a)
condition #21
윤년
3개 수 입력 받아 내림차순 정렬(이건 시험에 나온다고 한적은 없음 그냥 나올법해서 정리)
int 로 꼭 치환 해줘야함
n1 = int(n1) n2 = int(n2) n3 = int(n3)
총 3번 if 문 필요 (n1, n2) , (n2, n3), (n1, n2)
if n1 <= n2: n1, n2 = n2, n1
if n2 <= n3: n2, n3 = n3, n2
if n1 <= n2: n1, n2 = n2, n1
print("내림차순 성렬: {} {} {}".format(n1, n2, n3))
보기 단어 중 변수의 이름이 될 수 없는 것은?
2nd_base : 숫자로 시작 할 수 없다.
money : # 문자 기호 사용 못함
varname$ : $ 특수 문자 사용 못함
id name : 중간에 공백 문자 사용 못함
for : 예약어 for 를 변수명으로 사용 못함 # print(keyword.kwlist)
변수명 규칙 : 영어 대소문자, 숫자 밑줄(_)로만 이뤄지는데, 영어 대소문자와 밑줄로만 시작 가능. 마지막으로 키워드들은 사용 불가
for #23
TODO: for page17 코드(소수인지 판단) 응용해서 시험 나올수도 있음
별찍기
io #24
list #25
module&file #26
operator #27
교수님은 as 쓰는 방법을 더 선호하셨던걸로 기억
tuple/set/dict #28
두개 차이 알아라
A.intersection(B)
: A & B 와 동일.A.intersection_update(B)
: A 를 A & B 로 갱신$$A \cap B$$
두개 차이 알아라
A.difference(B)
: A - B 와 동일(B에는 없고 A에만 있는 원소의 집합 반환)A.difference_update(B)
: A 를 A - B 로 갱신string #29
while&function #31
TODO
지역변수, 전역 변수 문제 나올 수 있음 에러나는 이유 설명하기 : 함수내에서 사용하는 a 는 지역변수다. 선언 먼저 하고 사용해야한다. 안그러면 아래와 같은 에러발생