728x90
반응형

참고자료: https://wikidocs.net/22

 

03-3 for문

`[동영상 강의]` : [점프 투 파이썬 03-3 for문](https://www.youtube.com/watch?v=sbS5QayiCoE&list=PLGSQkvB9T6rvnDo…

wikidocs.net

 

# 반복문 for문

# for 문의 기본 구조

for 변수 in 리스트(또는 튜플, 문자열):
    수행할_문장1
    수행할_문장2
    ...

# 리스트나 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 

‘수행할_문장1’, ‘수행할_문장2’ 등이 수행된다.

 

 


# 1. 전형적인 for 문

test_list = ['one', 'two', 'three'] 
for i in test_list: 
    print(i)


one 
two 
three


# ['one', 'two', 'three'] 리스트의 첫 번째 요소인 'one'이 먼저 i 변수에 대입된 후 print(i) 문장을 수행한다. 

다음에 두 번째 요소 'two'가 i 변수에 대입된 후 print(i) 문장을 수행하고 리스트의 마지막 요소까지 이것을 반복한다.



# 2. 다양한 for 문의 사용

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

3
7
11

# 위 예는 a 리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 (first, last) 변수에 대입된다.


# 3. for 문의 응용

# 총 5명의 학생이 시험을 보았는데 시험 점수가 60점 이상이면 합격이고 그렇지 않으면 불합격이다. 합격인지, 불합격인지 결과를 보여 주시오.

# marks1.py
marks = [90, 25, 67, 45, 80]   # 학생들의 시험 점수 리스트

number = 0   # 학생에게 붙여 줄 번호
for mark in marks:   # 90, 25, 67, 45, 80을 순서대로 mark에 대입
    number = number +1 # 0번학생은 이상하니까 1번학생을 만들어주기위해 넣음
    if mark >= 60: 
        print("%d번 학생은 합격입니다." % number)
    else: 
        print("%d번 학생은 불합격입니다." % number)


1번 학생은 합격입니다.
2번 학생은 불합격입니다.
3번 학생은 합격입니다.
4번 학생은 불합격입니다.
5번 학생은 합격입니다.


# for 문과 continue 문


# while 문에서 살펴본 continue 문을 for 문에서도 사용할 수 있다. 즉, for 문 안의 문장을 수행하는 도중 continue 문을 만나면 for 문의 처음으로 돌아가게 된다.

# 앞에서 for 문 응용 예제를 그대로 사용해서 60점 이상인 사람에게는 축하 메시지를 보내고 나머지 사람에게는 아무런 메시지도 전하지 않는 프로그램을 IDLE 에디터로 작성해 보자.

# marks2.py
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번 학생 축하합니다. 합격입니다.



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

a = range(10)
a
range(0, 10)

# range(10)은 0부터 10 미만의 숫자를 포함하는 range 객체를 만들어 준다.
# 시작 숫자와 끝 숫자를 지정하려면 range(시작_숫자, 끝_숫자) 형태를 사용하는데, 이때 끝 숫자는 포함되지 않는다.

a = range(1, 11)
a
range(1, 11)


# range 함수의 예시 살펴보기

add = 0 
for i in range(1, 11): 
    add = add + i 

print(add)
55

# range(1, 11)은 숫자 1부터 10까지(1 이상 11 미만)의 숫자를 데이터로 가지는 객체이다. 따라서 위 예에서 i 변수에 숫자가 1부터 10까지 하나씩 차례로 대입되면서 add = add + i 문장을 반복적으로 수행하고 add는 최종적으로 55가 된다.

# 또한 우리가 앞에서 살펴본 합격 축하 문장을 출력하는 예제도 range 함수를 사용해서 다음과 같이 바꿀 수 있다.


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

# len는 리스트 안의 요소 개수를 리턴하는 함수이다. 따라서 len(marks)는 5, range(len(marks))는 range(5)가 될 것이다. number 변수에는 차례로 0부터 4까지의 숫자가 대입되고 marks[number]는 차례대로 90, 25, 67, 45, 80 값을 가지게 된다. 결과는 marks2.py 예제와 동일하다.


# for와 range를 이용한 구구단
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


# 그다지 중요하지 않음 !
# 리스트 컴프리헨션 사용하기

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]

a = [1,2,3,4]
result = [num * 3 for num in a if num % 2 == 0]
print(result)
[6, 12]

result = []
for num in a:
    if num % 2 == 0:
        result.append(num*3)

# [표현식 for 항목 in 반복_가능_객체 if 조건문]

# [표현식 for 항목1 in 반복_가능_객체1 if 조건문1

    for 항목2 in 반복_가능_객체2 if 조건문2
    ...
    for 항목n in 반복_가능_객체n if 조건문n]


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]

for x in range(2,10):
    for y in range(1,10):
        result.append(x*y)

print(result)

728x90
반응형

'Data Analysis & Engineer > Python' 카테고리의 다른 글

python 입출력: 함수  (2) 2024.01.27
python 3장 되새김문제  (1) 2024.01.25
python 제어문: 반복문 while  (3) 2024.01.24
python 제어문: 조건문 if문  (0) 2024.01.24
python 2장 되새김문제  (1) 2024.01.22
728x90
반응형

참고자료: https://wikidocs.net/21

 

03-2 while문

`[동영상 강의]` : [점프 투 파이썬 03-2 while문](https://www.youtube.com/watch?v=sganLBgH-oc&list=PLGSQkvB9T6rvn…

wikidocs.net

 


# 반복문 while

# while 문의 기본 구조

while 조건문:
    수행할_문장1
    수행할_문장2
    수행할_문장3
    ...




treeHit = 0
while treeHit < 10:
    treeHit = treeHit +1
    print("나무를 %d번 찍었습니다." % treeHit)
    if treeHit == 10:
        print("나무 넘어갑니다.")


나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
나무 넘어갑니다.


# treeHit = treeHit + 1은 프로그래밍을 할 때 매우 자주 사용하는 기법이다. 

treeHit 값을 1만큼씩 증가시킬 목적으로 사용하며 treeHit += 1처럼 작성해도 된다.


# while 문 만들기

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

number = 0
while number != 4:
    print(prompt)
    number = int(input())

'''
1. Add
2. Del
3. List
4. Quit

Enter number:
'''

# number = int(input())는 사용자의 숫자 입력을 받아들이는 것


# while 문 강제로 빠져나가기 :  break

coffee = 10
money = 300
while money:
    print("돈을 받았으니 커피를 줍니다.")
    coffee = coffee -1
    print("남은 커피의 양은 %d개입니다." % coffee)
    if coffee == 0:
        print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
        break


# coffee.py
coffee = 10
while True:
    money = int(input("돈을 넣어 주세요: "))
    if money == 300:
        print("커피를 줍니다.")
        coffee = coffee -1
    elif money > 300:
        print("거스름돈 %d를 주고 커피를 줍니다." % (money -300))
        coffee = coffee -1
    else:
        print("돈을 다시 돌려주고 커피를 주지 않습니다.")
        print("남은 커피의 양은 %d개 입니다." % coffee)
    if coffee == 0:
        print("커피가 다 떨어졌습니다. 판매를 중지 합니다.")
        break


# while 문의 맨 처음으로 돌아가기 : continue
a = 0
while a < 10:
    a = a + 1
    if a % 2 == 0: continue
    print(a)

1
3
5
7
9


# 위는 1부터 10까지의 숫자 중 홀수만 출력하는 예이다. a가 10보다 작은 동안 a는 1만큼씩 계속 증가한다. 

a % 2 == 0(a를 2로 나누었을 때 나머지가 0인 경우)이 참이 되는 경우는 a가 짝수일 때이다. 

즉, a가 짝수이면 continue 문을 수행한다. 

이 continue 문은 while 문의 맨 처음인 조건문(a < 10)으로 돌아가게 하는 명령어이다. 

따라서 위 예에서 a가 짝수이면 print(a) 문장은 수행되지 않을 것이다.



# 무한 루프(endless loop)

while True: 
    수행할_문장1 
    수행할_문장2
    ...


while True:
    print("Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.")

'''
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
Ctrl+C를 눌러야 while문을 빠져나갈 수 있습니다.
'''





728x90
반응형
728x90
반응형

참고자료: https://wikidocs.net/20

 

03-1 if문

`[동영상 강의]` : [점프 투 파이썬 03-1 if문](https://www.youtube.com/watch?v=usIsZ3CCqkQ&list=PLGSQkvB9T6rvnDop…

wikidocs.net

 

 

# 조건문 if문

# ‘돈이 있으면 택시를 타고 가고, 돈이 없으면 걸어간다.’
money = True
if money:
    print("택시를 타고 가라")
else:
    print("걸어 가라")

 

 


# if문의 기본 구조

if 조건문:
    수행할_문장1
    수행할_문장2
    ...
else:
    수행할_문장A
    수행할_문장B
    ...


# 들여쓰기 주의!
    

조건문 다음에 콜론(:)을 잊지 말자!
if 조건문 뒤에는 반드시 콜론(:)이 붙는다. 어떤 특별한 의미가 있다기보다는 파이썬의 문법 구조이다.

앞으로 배울 while이나 for, def, class도 역시 문장의 끝에 콜론(:)이 항상 들어간다.

초보자들은 이 콜론(:)을 빠뜨리는 경우가 많으므로 특히 주의하자.

파이썬이 다른 언어보다 보기 쉽고 소스 코드가 간결한 이유는 

바로 콜론(:)을 사용하여 들여쓰기를 하도록 만들었기 때문이다. 

하지만 이는 숙련된 프로그래머들이 파이썬을 처음 접할 때 제일 혼란스러워하는 부분이기도 하다. 

다른 언어에서는 if 문에 속한 문장들을 {}로 감싸지만, 파이썬에서는 들여쓰기로 해결한다는 점을 기억하자.

 



# 비교연산자

 

비교연산자 설명
x < y x가 y보다 작다.
x > y x가 y보다 크다.
x == y x와 y가 같다.
x != y  x와 y가 같지 않다.
x >= y x가 y보다 크거나 같다.
x <= y x가 y보다 작거나 같다.



x = 3
y = 2
x > y
True

x < y
False

x == y
False

x != y
True

 


# 만약 3000원 이상의 돈을 가지고 있으면 택시를 타고 가고, 그렇지 않으면 걸어가라.

money = 2000
if money >= 3000:
    print("택시를 타고 가라")
else:
    print("걸어가라")
#걸어가라

 

 

 

 


# and, or, not

 

연산자 설명
x or y  x와 y 둘 중 하나만 참이어도 참이다.
x and y x와 y 모두 참이어야 참이다.
not x x가 거짓이면 참이다.



# 돈이 3000원 이상 있거나 카드가 있다면 택시를 타고 가고, 그렇지 않으면 걸어가라.

money = 2000
card = True
if money >= 3000 or card:
    print("택시를 타고 가라")
else:
    print("걸어가라")
#택시를 타고 가라

 


# in, not in

 

 

in not in
x in 리스트 x not in 리스트
x in 튜플 x not in 튜플
x in 문자열 x not in 문자열

 



# 리스트
1 in [1, 2, 3]
True
1 not in [1, 2, 3]
False


# 튜플
'a' in ('a', 'b', 'c')
True
'j' not in 'python'
True


# 만약 주머니에 돈이 있으면 택시를 타고 가고, 없으면 걸어가라.

pocket = ['paper', 'cellphone', 'money']
if 'money' in pocket:
    print("택시를 타고 가라")
else:
    print("걸어가라")
#택시를 타고 가라

 


# 조건문에서 아무 일도 하지 않게 설정하고 싶다면? pass

# 주머니에 돈이 있으면 가만히 있고, 주머니에 돈이 없으면 카드를 꺼내라.
pocket = ['paper', 'money', 'cellphone']
if 'money' in pocket:
    pass 
else:
    print("카드를 꺼내라")

 



# 다양한 조건을 판단하는 elif

# 주머니에 돈이 있으면 택시를 타고 가고, 

주머니에 돈은 없지만 카드가 있으면 택시를 타고 가고, 

돈도 없고 카드도 없으면 걸어가라.

pocket = ['paper', 'cellphone']
card = True
if 'money' in pocket:
    print("택시를 타고가라")
else:
    if card:
        print("택시를 타고가라")
    else:
        print("걸어가라")
#택시를 타고가라

# 위 코드를 더 간단히 쓰면,

pocket = ['paper', 'cellphone']
card = True
if 'money' in pocket:
    print("택시를 타고가라")
elif card: 
    print("택시를 타고가라")
else:
    print("걸어가라")
#택시를 타고가라

# 즉, elif는 이전 조건문이 거짓일 때 수행된다. if, elif, else를 모두 사용할 때 기본 구조는 다음과 같다.

if 조건문:
    수행할_문장1 
    수행할_문장2
    ...
elif 조건문:
    수행할_문장1
    수행할_문장2
    ...
elif 조건문:
    수행할_문장1
    수행할_문장2
    ...
    ...
else:
    수행할_문장1
    수행할_문장2
    ... 


# if 문을 한 줄로 작성하기
if 'money' in pocket:
    pass 
else:
    print("카드를 꺼내라")


# 한줄로 변경하면
pocket = ['paper', 'money', 'cellphone']
if 'money' in pocket: pass
else: print("카드를 꺼내라")
# if 문 다음에 수행할 문장을 콜론(:) 뒤에 바로 적었다. else 문 역시 마찬가지이다.


# 조건부 표현식
# score가 60 이상일 경우 message에 문자열 "success", 아닐 경우에는 문자열 "failure"를 대입하는 코드이다.

if score >= 60:
    message = "success"
else:
    message = "failure"

# 조건부 표현식
message = "success" if score >= 60 else "failure"
# 변수 = 조건문이_참인_경우의_값 if 조건문 else 조건문이_거짓인_경우의_값



728x90
반응형
728x90
반응형

2장 되새김문제 p.116~p.119

 

# 1. 평균 점수 구하기
a, b, c = 80, 75, 55
d = a+b+c
e = d / 3
print(e)
70.0

# 2. 홀수,짝수 판별하기
# 자연수 13이 홀수인지, 짝수인지 판별할 수 있는 방법에 대해 말해 보자.
a = 13 % 2
print(a)
# 짝수로 나누었을때 나머지가 있으면 홀수이다.


# 3. 주민등록번호 나누기
# 홍길동 씨의 주민등록번호는 881120-1068234 이다. 

홍길동 씨의 주민등록번호를 연월일(YYYYMMDD)부분과 그 뒤의 숫자 부분으로 나누어 출력해보자.
pin = "881120-1068234"
yyyymmdd = pin[:6]
num = pin[7:]
print(yyyymmdd)
print(num)


# 4. 주민등록번호 인덱싱
# 주민등록번호 뒷자리의 맨 첫 번째 숫자는 성별을 나타낸다. 

주민등록번호에서 성별을 나타내는 숫자를 출력해보자.
pin = "881120-1068234"
print(pin[7])

# 5. 문자열 바꾸기
# 다음과 같은 문자열 a:b:c:d가 있다. 문자열의 replace함수를 사용하여 a#b#c#d로 바꿔 출력해보자.
a = "a:b:c:d"
b = a.replace(":","#")
print(b)

# 6. 리스트 역순 정렬하기
# [1,3,5,4,2] 리스트를 [5,4,3,2,1]로 만들어 보자.
a = [1, 3, 5, 4, 2]
a.sort()
a.reverse()
print(a)

# 7. 리스트를 문자열로 만들기
# ['Life', 'is', 'too', 'short'] 리스트를 Life is too short 문자열로 만들어 출력해 보자.
a = ['Life', 'is', 'too', 'short']
result = a.join()  # --> 답: result = " ".join(a)
print(result)


# 8. 튜플 더하기
# (1,2,3) 튜플에 값 4를 추가하여 (1,2,3,4)를 만든 후 출력해 보자.
a = (1,2,3)
a = a + b(4) # --> 답: a = a + (4,)
print(a)
# a 튜플에 (4,)라는 튜플을 더하면 된다. 단, 이 때 만들어지는 a+(4,)의 결과는 a 값이 변경되는 것이 아니라(튜플은 그 값을 변경할 수 없다) 새로운 튜플이 생성되고 그 값이 a 변수에 대입되는 것임을 유념하자.

# 9. 딕셔너리의 키
# 다음과 같은 딕셔너리 a가 있다.
# a = dict()
# a
# {}

# 다음 중 오류가 발생하는 경우를 고르고, 그 이유를 설명해 보자.
# a['name'] = 'python'
# a[('a',)] = 'python'
# a[[1]] = 'python' --> 딕셔너리의 키로 변하는 값을 사용할 수 없기 때문이다. 여기서 키로 사용된 [1]은 리스트 이므로 변하는 값이다. 다른 예에서 키로 사용된 문자열, 튜플, 숫자형은 변하지 않는 값이므로 딕셔너리의 키로 사용이 가능하다.
# a[250] = 'python'


# 10. 딕셔너리 값 추출하기
# 딕셔너리 a에서 'B'에 해당하는 값을 추출해 보자.
a = {'A':90, 'B':80, 'C':70}
result = a.pop(1) # --> 답: result = a.pop('B')
print(a)
print(result)

# 11. 리스트에서 중복 제거하기
# a 리스트에서 중복 숫자를 제거해 보자.
a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5]
aSet = set(a)
b = list(aSet)
print(b)

# 12. 파이썬 변수
# 파이썬은 다음처럼 동일한 값에 여러 개의 변수를 선언할 수 있다.
# 다음과 같이 a,b 변수를 선언한 후 a의 두 번째 요솟값을 변경하면 b값은 어떻게 될까?
# 그리고 이런 결과가 나타나는 이유를 설명 해보자.
# a = b = [1, 2, 3]
# a[1] = 4
# print(b)

# b = [1,2,3] 객체의 주소값이 다르기 때문에
# --> 답: [1,4,3]이 출력된다. a와b 변수는 모두 동일한 [1,2,3]이라는 리스트 객체를 가리키고 있기 때문이다.

728x90
반응형
728x90
반응형

참고자료: https://wikidocs.net/18

 

02-8 자료형의 값을 저장하는 공간, 변수

`[동영상 강의]` : [점프 투 파이썬 02-8 자료형의 값을 저장하는 공간, 변수](https://www.youtube.com/watch?v=yQ7j3hVmrwc&list=P…

wikidocs.net

 

# 변수
a = 1
b = "python"
c = [1, 2, 3]
# 변수_이름 = 변수에_저장할_값

a = [1, 2, 3]
b = a

print(id(a))
4303029896
print(id(b))
4303029896

print(a is b)  # a와 b가 가리키는 객체가 같을까?
True

# b 변수를 생성할 때 a 변수의 값을 가져오면서 a와는 다른 주소를 가리키도록 만들기

# [:] 이용하기
a = [1, 2, 3]
b = a[:]
a[1] = 4
print(a)
[1, 4, 3]
print(b)
[1, 2, 3]

# copy 모듈 이용하기
from copy import copy
a = [1, 2, 3]
b = copy(a) # = b = a[:]

print(b is a)
False

a = [1, 2, 3]
b = a.copy()
b is a
False


# 변수를 만드는 여러가지 방법

# 튜플에 대입하기
a, b = ('python', 'life')
(a, b) = 'python', 'life'

# 리스트로 변수 만들기
[a, b] = ['python', 'life']
a = b = 'python'

# 변수 값을 서로 바꾸기
a = 3
b = 5
a, b = b, a
print(a)
5
print(b)
3

728x90
반응형

'Data Analysis & Engineer > Python' 카테고리의 다른 글

python 제어문: 조건문 if문  (0) 2024.01.24
python 2장 되새김문제  (1) 2024.01.22
python 자료형: 불  (0) 2024.01.15
python 자료형: 집합  (2) 2024.01.14
python 자료형: 딕셔너리  (1) 2024.01.12

+ Recent posts