Python < Replit 정리 15 - 28 >

do yeon kim·2022년 6월 22일
0

Python

15. If Statement

if문
if문은 조건에 따라서 실행하는 코드가 다른 것을 의미한다.

if 조건문:
	실행문
    

조건문이 참에 해당하면 아래의 실행문이 동작한다.
거짓이라면 실행되지 않느다.

Indents
if문도 다른 파이썬의 문법 처럼 들여쓰기를 해주어야 한다.
들여쓰기가 되어 있어야 같은 레벨의 코드라고 컴퓨터가 인식하고, 프로그램을 실행한다.

if number % 2 == 1:
  print("홀수")
elif number % 2 == 0: 
  print("짝수")

많이 사용되는 나머지 연산자를 이용한 짝수, 홀수 구하기
2로 나눈 나머지가 1이라면 홀수, 0이라면 짝수이다.



16. If (1) - is_okay_to_drive

def is_okay_to_drive(who):
  if who == "son":
    return "Nope!"
  elif who == "dad":
    return "Good!"
  elif who == "grand father":
    return "Be careful!"
  else:
    return "Who are you?"

print(is_okay_to_drive("son"))

여러가지 조건을 활용해서 조건별 실행되는 실행문 구현하기



17. If (2) - check_age


def check_age(name, age):
  if age < 21:
    return f"Go home, {name}!"
  else:
    return f"Nice to meet You, {name}!"

여러가지 조건을 활용해서 조건별 실행되는 실행문 구현하기



18. If (3) - equals_wecode

def equals_wecode(string):
  if string == "wecode":
    return True
  else:
    return False

여러가지 조건을 활용해서 조건별 실행되는 실행문 구현하기



19. If (4) - find_greater_num

def find_greater_num(num1, num2):
  if num1 > num2:
    return "First one is greater!"
  elif num2 > num1:
    return "Second one is greater!"
  elif num1 == num2:
    return "Same!"

if문을 활용해서 더 큰 수를 구하기



20. If (5) - is_even

def is_even(num):
  if num % 2 == 0:
    return True
  elif num % 2 == 1:
    return False

나머지 연산자를 이용해서 짝수와 홀수를 조건으로 if문 사용하기



21. If (6) - is_odd_and_greater_than_twenty

def is_odd_and_greater_than_twenty(num):
    if num % 2 == 1 and num > 20:
      return True
    else:  
      return False

논리 연산자 and를 이용해서 조건문을 연결해서 조건을 만들고
조건이 참이라면 True를 return 한다.



22. Comparison Operators

비교연산자

  • ==
    같다
  • !=
    같지 않다
  • >
    오른쪽이 왼쪽 보다 크다
  • <
    오른쪽이 왼쪽 보다 작다
  • >=
    오른쪽이 왼쪽 보다 크거나 같다
  • <=
    오른쪽이 왼쪽 보다 작거나 같다

크거나 같다를 표시하는 비교연산자는 읽는 방법에 따라서 상대적으로 뜻이 달라진다.

숫자형 뿐만 아니라 문자형에도 사용가능하다.

number = int(input("숫자를 입력해주세요: "))

if len(str(number)) >= 3:
    print("YES")
else:
    print("NO")

100자리수 보다 큰 수를 어떻게 판단 할 것인가. 100보다 크거나 같으면 100자리수 이사이다.
또는 숫자를 문자형으로 바꾼 후 길이를 구해서 길이가 3이사이면 100자리 수 이상이 된다.



23. elif and else

elif and else

if문이 거짓인 경우 실행되는 코드이다.
else문은 if문, else문 모두 거짓을 경우 default로 실행되는 코드이다.
else문의 조건은 없다.

x = int(input("X 값을 입력해주세요: "))
y = int(input("Y 값을 입력해주세요: "))

if (x + y) % 2 == 0:
  print("YES")
elif (x+y) % 2 == 1:
  print("NO")

두개의 합이 짝수이면 검정색, 홀수이면 하얀색에 위치한다.



24. Testing set of conditions

논리연산자

  • and
  • or

논리연산자를 이용해서 조건을 이을 수 있다.

and는 조건이 모두 참인 경우만 참이 된다.
or는 하나라도 참이면 참이 된다.

and와 or를 함꼐 사용해서 조건을 만들 수도 있다.

month = int(input("월(month) 를 숫자로 입력해주세요: "))
day = int(input("일(day) 를 숫자로 입력해주세요: "))

## 아래 코드를 입력해주세요.


def next_month_day(month, day):
    day_31 = [1,3,5,7,8,10,12]
    day_30 = [4,5,9,11]
    day_28 = [2]
    
    if month in day_31:
        if month == 12 and day == 31:
            month = 1
            day = 1 
        elif day == 31:
            month = month + 1
            day = 1
        else:
            month = month
            day =day + 1 
        
        print(month, day ,sep="\n")
    
    
    elif month in day_30:
        if day == 30:
            month = month +1
            day = 1
        else:
            month = month
            day = day + 1
        print(month, day ,sep="\n")
    
    
    elif month in day_28:
        if day == 28:
            month = month +1
            day = 1
        else:
            month = month
            day = day + 1
        print(month, day ,sep="\n")

next_month_day(month, day)

중첩 if문을 이용해서 구현



25. Nested If Statements

중첩 if문을 의미한다.
중첩 if문도 들여쓰기를 잘 해야 한다.

a = int(input("첫번째 정수"))
b = int(input("두번째 정수"))

if a == 0 and b != 0:
  print("No Solution") # 해가 없느 경우
elif a != 0 and b == 0:
  print(0)
elif a== 0 and b == 0: # 둘다 0인 경우는 무수힌 많은 경우
  print("Many Solutions")
else:
  if b%a == 0: # 나머지가 0인 경우는 정수인 경우
    print(int(b/a)) # 나눗셈의 결과는 실수이므로 정수형으로 변환
  else:
    print("No Solution")

중첩 if문을 이용해서 구현



26. Comments

주석은 코드에 실행과는 상관없는 코드이다.
파이썬에선는 #을 이용해서 주석을 달 수 있다.
주석은 커뮤니케이션의 역할을 하기도 한다.

  • Inline Comments
    #을 이용한 주석달기

  • Mutiline Comments
    ''' , ''' 을 이용해 중간에 주석 내용을 적는다.



27. Function

함수 function
input을 받아서 일정한 작업을 수행 후 output을 내는 구조이다.
중복코드를 제거해서 가독성을 높이기 위해서 사용된다.

                        def 함수명(parameter):
                            문장1
                            문장2
                            ...
                            문장N
                            return 리턴값

함수의 형태는 다양하다.
파라미터가 없느 함수도 있고, 리턴이 없는 함수도 존재한다.

n = 11

# 1 혹은 그 이하이면 소수가 아니다 
if (n <= 1): 
    return False

# 2 와 3은 소수 이다
if (n <= 3): 
    return True

# 2 나 3으로 나누어 떨이지면 소수가 아니다
if (n % 2 == 0 or n % 3 == 0): 
    return False

i = 5
while(i * i <= n): 
    if (n % i == 0 or n % (i + 2) == 0) : 
        return False
    i = i + 6

return True

소수를 계산하기 위해서 필요한 코드이다. 하지만 반복적인 작업이 이루어지면, 코드의 가독성이 떨어지고, 코드도 복잡해진다.
그러므로 반복적인 코드는 함수로 정의해서 사용하느 것이 좋다.

is_eleven_prime = is_prime(11)
print(f"11 is prime? {is_eleven_prime}")

num1 = int(input())
num2 = int(input())
def multiply(num1, num2):
  return num1 * num2

result = multiply(num1, num2)
print(result)


28. Function Parameters

함수는 파라민터를 받아서 리턴을 하는 구조이다.
이때 파라미터의 종류에는 여러가지가 있다.

  • 위치매개변수
    우리가 함수를 정의할때 일반적으로 사용하는 매개변수

  • 기본매개변수
    매개변수에 아무런 값을 주지 않았을 경우 Default값으로 들어가느 매개변수

  • 키워드매개변수
    매개변수에 키워드르 지정해서, 매개변수를 적을때 같이 적어준다.

  • 위치 가변 매개변수
    매개변수의 개수가 정확하지 않을 경우 사용하며, 튜플형태로 들어온다.

  • 키워드 가변 매개변수
    매개변수의 개수가 정확하지 않은 경우 사용하며, 딕셔너리 형태로 들어온다.

매개변수 선언 순서
위치매개변수 -> 기본매개변수-> 위치가변매개변수-> 키워드매개변수-> 키워드가변매개변수

정리1

함수를 정의 할때 default value parameter를 non-default value parameter 앞에 정의 하면 안 되는 이유에 대해 생각해보시고 블로깅 해주세요.

=> 함수의 인자는 일반적으로 순서대로 들어가게 된다. default value parameter를 사용하게 되면, 뒤에 오는 non-default value parameter와의 위치가 어긋나게 됨으로 앞에 오면 안된다고 생각한다.



위치 인수(positional arguments)와 가변 인수(variable length arguments)의 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력되는 결과를 블로그에 정리해 주세요.



에러코드
TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'

가변인자는 매개변수의 개수를 정하지 않은 매개변수이다. 그렇다보니 가변인자 매개변수 뒤에 또다른 매개변수가 오면, 어떤 매개변수인지 모호하게 됨으로 오류가 발생하게 된다.

def func_param_with_var_args(name, age, *args ):
    print("name=",end=""), print(name)
    for arg in args:
        print("arg=",end=""), print(arg)
    
    print("age=",end=""), print(age)

func_param_with_var_args("정우성", 20, "01012341234", "seoul", )

위와 같이 age속성을 앞으로 가변인자 매개변수 앞으로 이동시키면 된다.



정리2

가변 키워드 인수 (variable length keyword arguments)의 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력되는 결과를 블로그에 정리해 주세요.



def func_param_with_kwargs(name, age, **kwargs, address=0): ^^^^^^^ SyntaxError: invalid syntax

ef func_param_with_kwargs(name, age, address=0,**kwargs ):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")

가변키워드 인자 역시 매개변수의 개수가 정해지지 않은 경우 사용하는 매개변수로, 딕셔너리 형태로 매개변수가 들어간다. 그러므로 맨 마지막 위치에 또다른 매개변수가 들어가게되면, 매개변수의 속성이 모호해지게 된다.
그리고 가변키워드 인자 뒤에 또다른 매개변수를 적게 되면 컴퓨터가 자동으로 에러를 표시해준다.



정리3

위치 인수와 키워드 가변 키워드 인수 (variable length keyword arguments)의 위치를 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력되는 결과를 블로그에 정리해 주세요.



첫번째 오류
def mixed_params(name="아이유", *args, age, **kwargs, address): ^^^^^^^ SyntaxError: invalid syntax

address의 매개변수 위치를 변경

두번째 오류
TypeError: mixed_params() missing 1 required keyword-only argument: 'age'

age의 매개변수 위치를 변경

def mixed_params(age, name="아이유", *args, address ,**kwargs ):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")

먼저 키워드 매개변수인 address는 키워드가변매개변수 뒤에 오면 안된다.
키워드가변매개변수는 맨 마지막에 위치하는 것이 가장 바람직하다.

두번째로는 age는 기본적인 위치매개변수로 위치에 따라 인자가 들어오는 매개변수로 앞에 인자에서 첫번째에 해당하는 위치로 옮겨 주어야 한다.

매개변수의 위치는 다음 순서로 작성하는 것이 바람직하다.

  • 위치매개변수

  • 기본매개변수

  • 위치가변매개변수

  • 키워드매개변수

  • 키워드가변맥변수

0개의 댓글