[Python] 기초 문법 #2

and 와 or 같이 쓰기

if (age > 19 and age < 30) or (married == True and income < 100000000):    
    print("WeCode 은행의 전세대출 우대자 이십니다")
if (age > 19 and age < 30) or (married == True and income < 100000000):    
    print("WeCode 은행의 전세대출 우대자 이십니다")

가독성을 높이기 위해 ( ) 괄호로 묶어준다.

Assignment

월(month)와 일(day), 이 2가지를 input 값으로 받았을때, 2020년의 해당 월과 일의 다음 날의 월과 일을 출력해주세요.

예를 들어, month 는 3이고 일은 31이면 2020년 3월 31일의 다음날은 4월 1일 임으로 다음과 같이 출력이 되면 됩니다 (월 과 일을 각각 다른 줄에 출력 해주세요).

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

## 아래 코드를 입력해주세요.
if month == 12 and day == 31:
  month = 1
elif month == 2 and day == 29:
  month = month
elif day == 31 or day == 30 or day == 29:
  month += 1

if month == 2 and day == 29:
  month += 1
  day = 1
elif (month == 1 or 3 or 5 or 7 or 8 or 10 or 12) and (day == 31):
  day = 1
elif (month == 4 or 6 or 9 or 11) and (day == 30):
  day = 1
else:
  day += 1

print(month)
print(day)

Nested If Statements (중첩 if 조건문)

2단계 이상 중첩을 하면 가독성이 너무 떨어지기 때문에 일반적으로 2단계 이상은 잘 하지 않는다. 대부분은 2단계도 잘 가지 않고 1단계 정도만 중첩한다.

25. Assignment

다음의 방정식을 해결하는 프로그램을 구현 하세요. x값을 구해야 합니다.

ax = b

결과 출력물은 다음과 같아야 합니다.

  • Input 으로 주어진 a 와 b 값으로 위의 방정식을 충족하는 단 하나의 정수가 존재한다면 해당 정수를 출력하면 됩니다
  • 만일 a 와 b 값으로 위의 방정식을 충족하는 정수가 없다면 "No Solution"을 출력해주세요.
  • a 와 b 값으로 위의 방정식을 충족하는 정수가 많다면 "Many Solutions"을 출력해주세요.

Hint: ab는 0 이될 수 있습니다.

🔹 a가 0이고 b가 0인 경우
0 * ? = 0
방정식을 충족하는 정수는 무수히 많다. ("Many Solutions")

🔹 a가 0이고 b가 0이 아닌 경우
0 * ? = 3
방정식을 충족하는 정수가 없다. ("No Solution")

🔹 b를 a로 나눴을 때 나머지가 0인 경우
b % a == 0
방정식을 충족하는 단 하나의 정수가 존재한다.

🔹 b를 a로 나눴을 때 나머지가 0이 아닌 경우
방정식을 충족하는 정수가 없다. ("No Solution")

a = int(input("첫 번째 숫자를 입력해주세요: "))
b = int(input("두 번째 숫자를 입력해주세요: "))

## 아래 코드를 작성해주세요.
if a == 0:
    if b == 0:
        print("Many Solutions")
    else:
        print("No Solution")
elif b % a == 0:
    print(b // a)
else:
    print("No Solution")

Comments (주석)

# 를 줄마다 사용하여 주석을 삽입하는 방식이 일반적

주석은 최소한으로 사용하는 게 좋다.
주석이 필요 없을 정도로 가독성이 높은 코드를 작성 하는 게 최고다.

Function

input은 parameter 라고 한다.
output은 return 값 이라고 한다.

input parameter를 받아서 return값을 output으로 리턴한다.

입력값(parameter)과 결괏값(return값)이 반드시 존재하는 건 아니다.

입력값이 없는 함수도 있을 수 있고 결괏값이 없는 함수도 있을 수 있다.

리스트의 수정과 삭제

더하기 기호 + 를 사용하여 list 들을 합한 값을 다시 저장하고자 하는 변수에 지정해주어야 한다.

list1 = list1 + list2

+ 를 사용하면 기존의 list가 수정되지 않고 기존의 list와 다른 새로운 list가 생성되기 때문이다.

리스트 슬라이싱

slicing은 오리지널 list를 수정하는 게 아니라, 새로운 list를 만들어 낸다.

39. Assignment (리스트 요소 지우기)

Input으로 주어진 리스트에서 홀수는 전부 지우고 짝수만 남은 리스트를 리턴해주세요.
리스트의 요소들은 전부 숫자값이고 총 요소 수는 5개 입니다.


앞에서부터 지우면 리스트 요소들의 순서가 계속 바뀌기 때문에
뒤에서부터 삭제해 나가면 된다.

👇 del 함수 사용

def remove_odd_numbers(numbers):
  ## 이 함수를 구현해주세요
  if numbers[4] % 2 == 1:
    del numbers[4]
  if numbers[3] % 2 == 1:
    del numbers[3]
  if numbers[2] % 2 == 1:
    del numbers[2]
  if numbers[1] % 2 == 1:
    del numbers[1]
  if numbers[0] % 2 == 1:
    del numbers[0]
  return numbers

👇 또는 remove 함수 사용

def remove_odd_numbers(numbers):
    if numbers[4] % 2 == 1:
        numbers.remove(numbers[4])
    if numbers[3] % 2 == 1:
        numbers.remove(numbers[3])
    if numbers[2] % 2 == 1:
        numbers.remove(numbers[2])
    if numbers[1] % 2 == 1:
        numbers.remove(numbers[1])
    if numbers[0] % 2 == 1:
        numbers.remove(numbers[0])
    return numbers

좋은 웹페이지 즐겨찾기