python 제어문

도리·2025년 1월 9일

[python]기초

목록 보기
3/8

조건문(Condition)

  • if, elif, else 구문 사용.

  • 이때 조건은 bool (True, False)

  • 독립적인 조건이 있을 때

    if if if ..

  • 연속적인 조건이 있을 때

    if elif elif… else

예시

💡회원가입이 성공하려면 글자가 영어와 숫자로만 이뤄져야하고 , 8글자 이상이어야 한다.
  • if if 나열

    영어와 숫자가 아니면 경고 8글자 미만이면 경고

    이 두가지 조건은 독립적이다.

  • 코드 형식

if not [회원 아이디가 영어와 숫자로 이뤄졌는지]:
 영어와 숫자만 쓰라고 경고창

if not [8글자인지] :
 8글자 이상 입력하라고 경고창 띄워주기

문제

계좌에 10000원이 들어 있습니다. 인출 금액을 입력 받습니다.

인출 금액이 계좌에 있는 금액보다 크면 "인출이 불가능합니다. {} 원의 잔액이 부족합니다." 출력

인출 금액이 계좌에 있는 금액보다 작으면 "{} 원이 인출 되었습니다." 출력

마지막에 현재 계좌의 잔액을 출력 : "현재 잔액은 {} 원 입니다." 출력

정답은 06.condition 과 loop코드에~~

반복문(Loop)

  • while 조건제 반복
  • ~라면 code context반복적 실행

ex) exit이나 상담종료 메세지 입력될 때까지 반복.

  • for ~ in 컬렉션 반복
  • 순회가능한 컬렉션을 더 이상 순회할 수 없을 때까지 반복
  • 순회 ( iterable ) : 컬렉션 내의 item을 하나씩 접근할 수 있음.

list, tuple , set , dict

  • iterator : 순회를 하게 하는 화살표

While

while로 총점, 평균 구하기

→ [] 만들어서 pop . += 계산하자

무한루프

while (True) : … 특정 조건 넣어서 무한루프 방지.

if ~ break. else ~

난 a라는 [] 만들어서 a. append 저장 후 sum(a)해서 숫자들을 다 더했다.

For문

for item in [A,B,C]

HEAD

next

→ A꺼내서 item에 넣기.

next

→ B꺼내서 item에 넣기.

next

→ C꺼내서 item에 넣기

next

TAIL

ZIP()

  • 여러개의 컬렉션을 병렬적으로 순회 가능하도록!

[10,20,30]

[A,B,C]

  • 직렬이란?

순서 :: 10,20,30,A,B,C

  • 병렬이란?

순서 :: 10&A, 20&B. 30&C

* 딕셔너리 사용하면서 data 다루기

→ [{ : }, { : }, … ]

→ { “ “ : [, ,] , “ “ : [, ,] …}

이런식의 구조 잘 다룰 수 있어야 함.

ex) [{ : }, { : }, … ]

3명의 수학,과학점수를 입력받고 평균 출력하기

  1. 명 수입력
  2. 명 수대로 점수 입력
  3. 입력된 값 저장
  • scores = []
  • score = { “math” : math_score, “science” : science_score}

→ 이런식으로 저장할 dict를 정의한다.

이때 math_score와 science_score는 입력값

  • scores.append(score)
  • scores라는 list안에 score라는 dict를 저장한다.
    [{'math': 10, 'science': 20}, {'math': 10, 'science': 40}]
  1. list-dict에 저장된 변수를 꺼내서 계산
  • score[”math”] score[”science”] 이렇게 key로 꺼내면 되는것!

ex) { “ “ : [, ,] , “ “ : [, ,] …}

3명의 수학,과학점수를 입력받고 평균 출력하기

  • m_list [], s_list [] 정의
  • score_dict = {} 정의
  • 입력받고
  • m_list.append(score), s_list.append(score)

→ list에 먼저 추가하고

  • score_dict[”math”] = m_list
  • score_dict[”science”] = s_list

→ 딕셔너리 키에 맞춰 list저장

{'math': [30, 20, 10, 80],

'science': [30, 20, 10, 80]}

격자 구구단 출력하기 ★★★★★

💡

2단 3단 4단

... ... ...

5단 6단 7단

... ... ...

8단 9단

... ...

times = range(1, 10)

h_num = 3 # 가로로 표시할 숫자의 개수

for idx in range(0, len(dans), h_num):
  # 한 줄에 표시할 단 가져오기
  now_dan = dans[idx : idx + h_num] # 1) 0, 1, 2

  for dan in now_dan:
    print(f"{dan} 단", end='\t\t')
  print()

  for time in times:
    for dan in now_dan:
      print(f"{dan} * {time} = {dan * time}", end='\t')
    print()
  print()

0 1 2 3 4 5 6 7

[2 3 4 / 5 6 7 / 8 9 ]

인덱스가 0.3.6 인 것을 가져오면 된다.

range(0,9,3) → step 사용하자.

Continue , Break

  • continue : 반복문에서 반복 중지하고 이어서 반복 루틴 수행
    • while은 조건검사
    • for은 꺼내는것 부터 이어서
  • break : 반복문 자체를 중지
    • while, for 다 중지

예시코드

for item in range(5):
  if item == 3:
    break
  print(item)
print('-'*30)

for item in range(5):
  if item == 3:
    continue
  print(item)

출력>

기타 제어문

  • 삼항연산

    if, else구문 만들어서 한줄의 코드로 표현하여 삼항연산 수행

삼항연산 예시

a = 1
b = 2

if a>b:
  result = "Hello"
else:
  result = "Bye"

result

이러한 코드는
result = "hello" if a>b else "bye" 이런식의 한줄로 표현가능.

  • 컴프리핸션

컴프리핸션 예시

데이터를 가공해서 list, set,dict 만들자. (tuple xxx)

list comprehension
[1, 4, 9, 16, 25] 이런값을 출력하고싶다.

[data**2 for data in range(1,6)]

추가할 값 for 값 in collection if 조건

문제!!
1~100까지 정수에 대해서 홀수는 제곱, 짝수는 그대로 리스트에 추가

이때 뒤에 if else쓰려는 고려 X -> 쓸지말지를 생각하는 함수이기 때문임

result2 = [ i **2 if i%2 ==1 else i for i in range(1,101)]

set comprehension

text = {'a', 'b', 'c'}
#set 컴프리헨션!
result = {f"{letter}입니다." for letter in text}
result

결과 :: {'a입니다.', 'b입니다.', 'c입니다.'}

dict comprehension

key_list = ["아침","점심","저녁"]
value_list = ["바나나","구내식당","카레"]

a = { meal : food for meal, food in zip(key_list, value_list)}

결과 :: {'아침': '바나나', '점심': '구내식당', '저녁': '카레'}

실습!!

단어가 몇번 등장했나요?

text= "letter"
result = {char : text.count(char) for char in set(text)}
result
profile
인공지능응용학과 졸업예정..

0개의 댓글