단비의 코딩 공부 blog

[Python] study 5주차 본문

Python

[Python] study 5주차

황굽달 2024. 4. 26. 16:52
Python If ... Else

 

수학의 일반적인 논리적 조건을 지원한다.

  • 같음: a == b
  • 같지 않음: a != b
  • 미만: a < b
  • 작거나 같음: a <= b
  • 보다 큼: a > b
  • 이상: a >= b

이러한 조건은 여러가지 방법으로 사용될 수 있으며 일반적으로 'If'문에서 사용한다.

*들여쓰기가 없는 If문의 경우 오류가 발생한다.

a = 33
b = 200

if b > a:  #33보다 200이 커서 true이므로 출력
 print("b is greater than a")

출력 결과:

 

키워드 elif는 "그렇지 않고 ~ 이면"을 뜻하는 키워드이다.

이 예에서 a는 b와 동일하므로 첫 번째 조건은 true가 아니지만 elif조건은 true 이므로 a == b 을 화면에 출력한다.

a = 33
b = 33
if b > a:
  print("b is greater than a")
elif a == b:
  print("a and b are equal")

출력 결과:

 

else 키워드는 이전 조건에 맞지 않은 모든 항목을 캐치한다.

이 예에서는 a가 b보다 크므로 true가 아니고 elif 조건도 true가 아니므로 else 조건으로 이동한다.

else 조건은 elif가 없어서 사용가능하다.

a = 200
b = 33
if b > a:
  print("b is greater than a")
elif a == b:
  print("a and b are equal")
else:
  print("a is greater than b")
  
  
  
a = 200
b = 33
if b > a:
  print("b is greater than a")
else:
  print("b is not greater than a")

출력 결과:

 

실행할 조건문이 한줄일 경우 if문과 같은 줄에 넣을 수 있다.

a = 200
b = 33

if a > b: print("a is greater than b")

출력 결과:

 

또, 실행할 명령문이 하나만 있는 경우(if문 하나, else문 하나) 모두 같은 줄에 배치할 수 있다.

a = 2
b = 330

print("A") if a > b else print("B")

출력 결과: B

 

같은 줄에 여러 개의 else문을 배치할 수 있다.

a = 330
b = 330

print("A") if a > b else print("=") if a == b else print("B")

출력 결과:

 

and 키워드와 or 키워드는 논리 연산자이며 조건문을 결합하는데 사용한다.

nor 키워드는 논리 연산자이며 조건문의 결과를 뒤집는데 사용한다.

#and
a = 200
b = 33
c = 500
if a > b and c > a:
  print("Both conditions are True")

# or
a = 200
b = 33
c = 500
if a > b or a > c:
  print("At least one of the conditions is True")

#not
a = 33
b = 200
if not a > b:
  print("a is NOT greater than b")

출력 결과:

 

if 명령문안에 if문이 있을 수 있으며, 이를 중첩된 if명령문이라고 한다.

x = 41

if x > 10:
  print("Above ten,")
  if x > 20:
    print("and also above 20!")
  else:
    print("but not above 20.")

출력 결과:

 

if문은 비워둘 수 없지만 어떤 이유로 내용이 없는 경우 pass문을 사용하여 오류가 발생하지 않도록 할 수 있다.

a = 33
b = 200

if b > a:
  pass

 


Python While Loop

 

파이썬에는 두가지 리본 루프 명령이 있다.

  • while loop
  • for loop

while 루프를 사용하면 조건이 참인 일련의 명령문을 실행할 수 있다.

i = 1
while i < 6:
  print(i)
  i += 1

출력 결과:

 

break문을 사용하면 while 조건이 true인 경우에도 루프를 중지 할 수 있다.

i = 1
while i < 6:
  print(i)
  if (i == 3):
    break
  i += 1

출력 결과:

 

continue문을 사용하면 현재 반복을 중지하고 다음을 계속할 수 있다.

i = 0
while i < 6:
  i += 1
  if i == 3:
    continue
  print(i)

# Note that number 3 is missing in the result

출력 결과:

 

else문을 사용하면 조건이 더 이상 참이 아닐때도 코드 블록을 한번 실행할 수 있다.

i = 1
while i < 6:
  print(i)
  i += 1
else:
  print("i is no longer less than 6")

출력 결과:


Python For Loop

 

for 루프는 시퀀스(목록, 튜플, 사전, 집합 또는 문자열)을 반복하는 데 사용된다.

for루프를 사용하면 각 항목에 대해 한 번씩 일련의 명령문을 실행할 수 있다.

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x)

출력 결과:

 

문자열도 반복 가능한 객체이므로 일련의 문자를 포함한다.

for x in "banana":
  print(x)

출력 결과:

 

break문을 사용하면 모든 항목을 반복하기 전에 루프를 중지할 수 있다.

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x) 
  if x == "banana":
    break
    
# break위치 확인 //인쇄전에 중단 발생    
fruits = ["apple", "banana", "cherry"]
for x in fruits:
  if x == "banana":
    break
  print(x)

출력 결과:

 

continue문을 사용하면 루프의 현재 반복을 중지하고 계속할 수 있다.

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  if x == "banana":
    continue
  print(x)

출력 결과:

 

지정된 횟수만큼 코드 세트를 반복하려면 range() 함수를 사용할 수 있다.

range()함수는 기본적으로 0부터 시작하여 1씩 증가하고 지정된 숫자에서 끝나는 일련의 숫자를 반환한다.

for x in range(6):
  print(x)

출력 결과:

 

range()는 기본 시작 값은 0이지만, 매개변수 range(2, 6)을 추가하여 시작 값을 지정할 수 있다.

(이는 2 ~ 6사이의 값, 6은 포함하지않음)

range()함수는 기본적으로 시퀀스를 1씩 증가시키지만 세 번째 매개변수  range(2, 30, 3) 를 추가하여 증가 값을 지정할 수 있다.

for x in range(2, 6):
  print(x)
  
  
for x in range(2, 30, 3):
  print(x)

출력 결과:

 

for 루프의 else키워드는 for가 완료될 때 실행될 코드 블록을 지정한다.

for x in range(6):
  print(x)
else:
  print("Finally finished!")
  
  
# x가 3일 때 루프 중단
for x in range(6):
  if x == 3: break
  print(x)
else:
  print("Finally finished!")

#If the loop breaks, the else block is not executed.

출력 결과:

 

중첩루프는 루프 내 루프를 말한다. 내부 루프는 외부 루프가 반복될 때마다 한번씩 실행된다.

# 모든과일에 대해 각각의 형용사를 출력하라.
adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]

for x in adj:
  for y in fruits:
    print(x, y)

출력 결과:


Python 함수

 

함수는 호출될 때 실행되는 코드 블록이다. 매개변수라고 하는 데이터를 함수에 전달할 수 있다.

함수는 결과로 데이터를 반환할 수 있다.

def 키워드를 사용하여 함수를 정의한다.

def my_function():
  print("Hello from a function")

my_function()

출력 결과 : 

 

정보는 함수에 인수로 전달될 수 있다. 인수는 함수 이름 뒤에 괄호 안에 지정된다.

원하는 만큼 추가 가능하며 쉼표로 구분한다.

def my_function(fname):
  print(fname + " Refsnes")

my_function("Emil")
my_function("Tobias")
my_function("Linus")

출력 결과:

 

기본적으로 함수는 올바른 수의 인수를 사용하여 호출해야한다.

함수에 2개의 인수가 필요한 경우 정확히 2개의 인수를 사용하여 함수를 호출해야 한다.

def my_function(fname, lname):
  print(fname + " " + lname)

my_function("Emil", "Refsnes")

출력 결과:

 

인수를 1개만 넣을 시 오류가 발생한다.

def my_function(fname, lname):
  print(fname + " " + lname)

my_function("Emil")

 

출력 결과:

 

함수에 전달될 인수 수를 모르는 경우 *args를 변수 이름 앞에 추가한다.

여러 개(복수 개)의 인자를 함수로 받고자 할 때 씌인다.

def my_function(*kids):
  print("The youngest child is " + kids[2])

my_function("Emil", "Tobias", "Linus")
            # 0        # 1       #2

출력 결과:

 

key = value 구문을 사용하여 인수를 보낼 수도 있다. key = value 구문을 사용하면 인수의 순서가 중요하지 않다.

def my_function(child3, child2, child1):
  print("The youngest child is " + child3)

my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")

출력 결과:

 

임의의 키워드 인수를 **kwargs라고한다.

함수에 전달될 키워드 인수의 수를 모를 경우 변수 이름 앞에 **를 추가한다.

def my_function(**kid):
  print("His last name is " + kid["lname"])

my_function(fname = "Tobias", lname = "Refsnes")

출력 결과:

 

인수 없이 함수를 호출하면 기본값이 사용된다. 이것을 기본 매개변수라고 한다.

def my_function(country = "Norway"):  #기본
  print("I am from " + country)

my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")

출력 결과:

 

모든 데이터 유형의 인수를 함수에 보낼 수 있으며 이는 함수 내에서 동일한 데이터 유형으로 처리된다.

def my_function(food):
  for x in food:
    print(x)

fruits = ["apple", "banana", "cherry"]

my_function(fruits)

출력 결과:

 

함수가 값을 반환하도록 하려면 return 명령문을 사용하면 된다.

def my_function(x):
  return 5 * x

print(my_function(3))
print(my_function(5))
print(my_function(9))

출력 결과:

 

어떤 이유로 내용이 없는 정의가 있는 경우 오류가 발생하지 않게 하려면 pass 명령문을 입력한다.

def myfunction():
  pass

 

함수가 위치 인수만 가질 수 있거나 키워드 인수만 가질 수 있도록 지정할 수 있다.

인수뒤에 , / 을 추가한다.

def my_function(x, /):
  print(x)
my_function(3)


def my_function(x):
  print(x)
my_function(x = 3)


#오류 발생
def my_function(x, /):
  print(x)
my_function(x = 3)

출력 결과:

 

함수가 키워드 인수만 가질 수 있도록 지정하려면 인수 앞에 *, 를 추가한다.

def my_function(*, x):
  print(x)
my_function(x = 3)


def my_function(x):
  print(x)
my_function(3)


#오류 발생
def my_function(*, x):
  print(x)
my_function(3)

 

출력 결과:

 

동일한 함수에서 두 인수 유형을 결합할 수 있다.

앞의 모든 인수는 위치 / ,전용이고 뒤의 모든 인수 는 *, 키워드 전용이다.

def my_function(a, b, /, *, c, d):
  print(a + b + c + d)

my_function(5, 6, c = 7, d = 8)

출력 결과:

'Python' 카테고리의 다른 글

[Python] study 4주차  (0) 2024.04.17
[Python] study 3주차  (0) 2024.04.12
[Python] study 2주차  (0) 2024.04.05
[Python] study 1주차  (0) 2024.04.04