for/while + if
pass/continue/break아무것도 안 함 (형식상 맞춤)
코테에서는 주로 생략한다.
실무에서 error를 발생하지 않도록 빈 칸을 넣어주는 것 (의미는 X)
for/while 다음 순번으로 넘겨줄 때 사용한다. (아래 구문을 pass하고 다음 loop로 넘어간다.)
for i in 조건 :
if 조건 :
continue
print(a)
print(a)
#조건을 만족할 때 print(a)를 하지 않고 넘어간다.
for/while 에서 다음 순서가 남아 있어도 Stop한다. (loop 끝냄, 불필요한 반복문 멈추는 것)
여러 개의 값을 돌려서 모은다.
[모을 값 for i in 여러개 (if 조건)]
#홀수 번째에 위치한 값들에 'h' 추가하는 코드
a = ["a","b","c","d","e","f","g","c","i"]
for i in range(len(a)):
if i % 2 == 0:
#print(i)
print(a[i]+"h")
⬇️
[a[i]+"h" for i in range(len(a)) if i % 2 == 0]
or
[ v+"h" for i,v in enumerate(a) if i % 2 ==0]
#조건이 2개일 경우 (짝수 번째에 +'e', 홀수 번째에 +'o')
[모을값1 if 조건 else 모을값2 for 롤링]
[ v+"e" if i%2 ==0 else v+"o" for i,v in enumerate(a) ]
입력, 출력, 입출에 대한 관계를 지정하고 여러번 재사용 할 수 있다.
무엇을 기능할지에 대해 작성하는 것이 핵심!
코드를 정리하는 습관을 가지는 것이 좋다.
def 함수명(입력인자) : #입력 x에 대한 세팅
무엇을 할지 구현 #입출에 대한 관계/기능 : f
return 출력 #y출력에 대한 세팅
함수 내에서 만든 변수들은 특별한 조치가 없으면 함수 내에서만 사용된다.
함수 밖에서는 의미 X
입력이 가변적으로 여러개가 들어올 경우
*args 는 list(실제는 tuple)처럼, **args는 dict처럼 사용된다.
**arg 의 경우 key=value로 입력, arg 대신 어느 단어도 사용 가능.
ex/ *name, **score.
#여러개의 숫자를 더하는 함수
def sumrandom(*args):
temp = 0
for i in args:
temp += i
return temp
sumrandom(10,20,50,75,91)
# 출력 : 246
def sumscore(**sum_s):
for name, score in sum_s.items():
print(name, score)
print("최소 점수:", min(sum_s.values()))
print("최대 점수:", max(sum_s.values()))
sumscore(철수=40, 영희=80, 맹구=50)
# 출력 : 철수 40 / 영희 80 / 맹구 50 / 최소 점수: 40 / 최대 점수: 80
return a+b, a-b, a*b, a/b
여러개 출력 중 필요한 값이 있다면 index로,
출력 값들을 조작해서 써야 한다면 list로 변경해서 사용
- 데이터 전처리 : apply + 어떤 일을 처리할 지에 대한 규칙 표현
- 코테 : 특이한 정렬 조건에 대한 규칙을 표현할 때
(lambda a,b:a+b)(10,20)
→ 30
a = [ , , , ,]
b = []
for i in range(len(a)) :
b.append(a[i]+str(i+1))
cnt = 1
for i in a:
print(i+ str(cnt))
cnt += 1
[a[i] + str(i+1) for i in range(len(a))]
값/ 조건에 대해 정리 - 규칙에 대해 판단
#홀수 판별
a = [1,2,3,4,5]
b = []
for i in a:
if i % 2 == 1:
b.append(i)
b
or
[i for i in a if i % 2 == 1]
for i in a:
if (i==1) or (i==3) or (i==5):
print(i)
> 최소한의 리스트업으로 필터링 (in, not in)
b = [1,3,5,7]
for i in a:
if i in b: #(i==1) or (i==3) or (i==5) or (i==7) // i%2 == 1
print(i)
#1,3,5를 제외한 모든 원소에 +10
[i+10 for i in a if i not in [1,3,5]]
a[~~] : 값을 찾는 방법
a가 어떤 자료형이냐?
list - a[int], a[slicing]
dict - a[key값] (exact matching 필요)
numpy array - a[int], a[slicing], a[list]
pandas DF/series - a[int], a[slicing], a[여러개], a[내가만든인덱스]
max(list) → 최고점
max(dict) → key값 기준 최댓값 (문자열의 경우 그에 따른 숫자 코드값(ord())에 따라..)
ㄴ 어떤 대상을 중심으로 할지 명시해야한다. ( dict.keys() dict.values() dict.items() ) → max(dict.values())
#누가 최고점/최소점을 받았는지?
for name, score in dict.items():
if score == min(dict.values()) :
print("최소점 학생:" , name)
elif score == max(dict.values()) :
print("최고점 학생:", name)
else :
pass
#이 경우 min = max일 때 문제 -> elif 말고 if 로 쓰기 ??
범위에 대한 표현을 코드로 어떻게 할 것인가?
-> 수치화 하고 범위(부등식, 범위)화 조건을 작성한다.
: (x축 조건) and (y축 조건)
x = int(input("x 좌표값:")
y = int(input("y 좌표값:")
if (x>50 and x<100) and (y>40 and y<80) :
print('사각형 내부')
else:
print('경계 또는 외부')