※ AND, OR, NOT

다른 언어에서 &&, ||, ! 처럼 사용하는 것에 비해 파이썬에서는 다음과 같이 사용한다.

and, or, not

이를 이용한 if문을 다음과 같이 만들 수 있다.

money = 10000
card = True

if money >= 15000 or card:
    print("restauraunt")   # <= 이거 출력
else:
    print("CU")

 

 

※ pass

조건문에서 아무일도 일어나지 않게 설정하고 싶을 때 사용하는 키워드

a = [1, 2, 3]

if 1 in a:
    pass   
else:
    print("not here")

 

 

 

※ 리스트, 튜플, 문자열과 관련된 in 조건문

다른 언어와 달리 파이썬이 갖는 특이한 조건문으로 in과 not in을 이용하는 조건문이 있다.

str = "Python is nice"

if "is" in str:
    print("It's here")   # <= 이거 출력
else:
    print("not here")
a = [1, 2, 3]

if 1 in a:
    print("It's here")   # <= 이거 출력
else:
    print("not here")

 

 

 

 

※ 조건부 표현식

마치 3항연산자처럼 다음과 같은 형식을 갖고 있다.

조건이 참일 때 if  조건문 else 조건이 거짓일 때
a = [1, 2, 3]

print("It's here") if 1 in a else print("not here")

 

 

 

 

 

 

※ while문을 이용한 조건문

prompt = """
1. Add  2. Del  3. List 4. Quit
Enter num: """

num = 0

while num != 4:
    print(prompt)
    num = int(input())

 

 

 

※ for문을 이용한 조건문

§ for문의 기본구조

for i in 리스트, 튜플, 문자열:
    수행문장

Ex-1)

a = ['one', 'two', 'three']

for i in a:
    print(i)

#---출력---#
one
two
three

 

Ex-2)

a = [(1,2), (3,4), (5,6)]
for (first, last) in a:
    print(first + last)

#---출력---#
3
7
11

이는 튜플을 사용한 변수대입 방법과 매우 비슷하다.

(first, last) = (1,2)

 

 

Ex-3)

marks = [90, 25, 67, 45, 80]

number = 0
for mark in marks:
    number = number +1
    if mark >= 60:
        print("%d번 학생은 합격입니다." % number)
    else:
        print("%d번 학생은 불합격입니다." % number)
        
#--------출력--------#
1번 학생은 합격입니다.
2번 학생은 불합격입니다.
3번 학생은 합격입니다.
4번 학생은 불합격입니다.
5번 학생은 합격입니다.

 

 

 

※ for문과 함께 자주 사용하는 range 함수 

§ range(시작 숫자, 끝 숫자)

이때, 끝 숫자는 포함되지 않는다.

 

Ex-1)

add = 0
for i in range(1, 11):
    add = add + i
print(add)  # 55출력

 

Ex-2)

marks = [90, 25, 67, 45, 80]

number = 0 
for mark in marks: 
    number = number +1 
    if mark < 60:
        continue 
    print("%d번 학생 축하합니다. 합격입니다. " % number)

#--------출력--------#
1번 학생 축하합니다. 합격입니다.
3번 학생 축하합니다. 합격입니다.
5번 학생 축하합니다. 합격입니다.

 

marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):
    if marks[number] < 60:
        continue
    print("%d번 학생 축하합니다. 합격입니다." % (number+1))

#--------출력--------#
1번 학생 축하합니다. 합격입니다.
3번 학생 축하합니다. 합격입니다.
5번 학생 축하합니다. 합격입니다.

 

 

Ex-3)

end=" "은 print가 출력할 때 개행처리를 하지 않고 계속 처리하게 한다.

for i in range(2,10):        # 1번 for문
     for j in range(1, 10):   # 2번 for문
         print(i*j, end=" ")
     print()  # 단이 종료되면 결과값을 다음줄에 출력하게 함

#--------출력--------#
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

 

 

 

 

 

※ 리스트 안에 for문 포함 (리스트 내포)

a = [1,2,3,4]
result = []
for num in a:
    result.append(num*3)

print(result)

#--------출력--------#
[3, 6, 9, 12]

이 코드를 다음과 같이 표현할 수 있다.

a = [1,2,3,4]
result = [num * 3 for num in a]

print(result)

#--------출력--------#
[3, 6, 9, 12]

 

 

만약 짝수 숫자에만 3을 곱하고 싶다면?

리스트 내포 안에 if조건문을 사용!

a = [1,2,3,4]
result = [num * 3 for num in a if num % 2== 0]

print(result)

#--------출력--------#
[6, 12]

 

이는 다음과 같이도 사용할 수 있다.

result = [x * y for x in range(2,10)
          for y in range(1,10)]

print(result)

#--------출력--------#
[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]

※ switch 문

보통 if문 대신 사용하며 case를 나눌 필요가 있을 때, if-else를 여러번 쓰기 힘들 때 사용한다.

switch (n) // n은 정수형 변수로 전달되는 인자정보, n에 지정된 값에 따라 case 영역 실행
{
    case 'M':
        // 조건 입력
        break;
    case 2:
        // 조건입력
        break;
    default:
        // else문과 비슷한 역할
}

이때, break를 하지 않으면 다음 break가 있는 case문까지 같이 실행되기에 적는 것이 좋다.

§ break와 continue

break: 가장 가까운 반복문을 탈출한다.
continue: 실행위치와 상관없이 반복문의 조건검사위치로 이동한다.
          이때, 이후부터는 continue는 생략하고 재실행한다.

 

 

 

※ while 문 vs for 문

보통 while문은 특정 종료조건이 나타나기 전까지의 지속적인 실행을 위해,

보통 for문은 반복횟수가 정해져 있는 경우에 많이 사용된다.

 

※ 비트 연산자

메모리에 할당된 정수값을 bit단위로 논리연산을 실행하기 위해 사용한다.

 

 

 

 

 

 

 

 

※ 함수 선언

[함수 return 타입] [함수 이름] (인자) {
    /*
     * 
     */
}

인자 (argument): 함수 호출 시 전달되는 "값"

매개변수(parameter): 그런 인자를 받는 "변수"

 

 

 

 

 

 

※ 지역변수와 전역변수, static과 block scope

지역변수(local variable): 중괄호에 의해 형성되는 영역안에 존재, "스택"이라는 메모리 영역에 할당
전역변수(global variable): 초기화를 하지 않으면 0으로 초기화되며 많이 사용하면 효율이 떨어진다.

 

§ 지역변수와 Block Scope

특정함수, 명령문의 블록안에 선언된 변수는 블록범위(Block Scope)밖에서는 사용이 불가능하다!

int a = 1;

{
    a = 2; // a는 2로 초기화 됨
}

{
    int a = 5; // 앞선 a와는 전혀 다른 a
    // Block scope가 끝나면 사라짐
}

{
    a++; // 여기까지 a값은 2, 아래줄 실행 시 a=3으로 증가
}

printf("%d", a); // 3 출력

 

 

§ static: "한 함수 내"에서 "지역변수의 전역변수화"를 해주는 tool

선언된 함수내에서만 접근 가능 (지역변수의 특징)
1회만 초기화, 종료전까지 메모리 공간에 저장 (전역변수 특징)
★ 전역변수와 달리 Block Scope 내부에서만 접근 가능

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts