---
# System prepended metadata

title: Day 10 - Beginner - Functions with Outputs
tags: [python, 100 Days Of Code, Udemy]

---

Udemy課程：[100 Days Of Code（Dr. Angela Yu）](https://www.udemy.com/course/100-days-of-code/)
# Day 10 - Beginner - Functions with Outputs
###### tags: `python` `Udemy` `100 Days Of Code`
2021.02.24（Wed.）～02.26（Fri.）
## ● 前言 / 心得
這單元主要提到print跟return的差別，然後沒太多新的內容，除了recursion之外，像是dictionary、while loop等等都是前面學過的內容，加上這單元基本上都是跟著老師的步驟，我覺得有相對簡單些。

## ● 上課筆記
## 0.code
[day-10-start](https://repl.it/@tina0915tw/day-10-start#main.py)
[day-10-end](https://repl.it/@tina0915tw/day-10-end#main.py)
[day-10-1-exercise](https://repl.it/@tina0915tw/day-10-1-exercise#README.md)
[calculator-start](https://repl.it/@tina0915tw/calculator-start#main.py)
[calculator-debug-solution](https://repl.it/@tina0915tw/calculator-debug-solution#main.py)
[calculator-final](https://repl.it/@tina0915tw/calculator-final#main.py)

## 1.[day-10-1-exercise](https://repl.it/@tina0915tw/day-10-1-exercise#README.md)
* 我的作法：
```python=
def is_leap(year):
  if year % 4 == 0:
    if year % 100 == 0:
      if year % 400 == 0:
        return True
      else:
        return False
    else:
      return True
  else:
    return False

def days_in_month(year,month):
  month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]  
  if not is_leap(year):
    return month_days[month-1]
  elif is_leap(year):
    month_days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] 
    return month_days[month-1]
  
  
#🚨 Do NOT change any of the code below 
year = int(input("Enter a year: "))
month = int(input("Enter a month: "))
days = days_in_month(year, month)
print(days)
```

* 老師作法：
```python=
def is_leap(year):
  if year % 4 == 0:
    if year % 100 == 0:
      if year % 400 == 0:
        return True
      else:
        return False
    else:
        return True
  else:
    return False
    
def days_in_month(year, month):
  month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  if month > 12 or month < 1:
    return "Invalid month entered."
  if month == 2 and is_leap(year):
    return 29
  return month_days[month - 1]



#Do NOT change any of the code below 👇
year = int(input("Enter a year: "))
month = int(input("Enter a month: "))
days = days_in_month(year, month)
print(days)
```

## 2.Project部分

1. Step 1：（[calculator-start](https://repl.it/@tina0915tw/calculator-start#main.py)）

先弄出一個dictionary字典，包含加減乘除。
把加減乘除的符號當作keys，然後設好的function:add、multiple......等等當作values，然後再用function去包裝。

* 作法：
```python=
def add(n1,n2):
  return n1 + n2

def subtract(n1,n2):
  return n1 - n2

def mutiply(n1,n2):
  return n1 * n2

def devide(n1,n2):
  return n1 / n2

operations = {
  "+": add,
  "-": subtract,
  "*": mutiply,
  "%": devide
}

num1 = int(input("What's the first number?: "))
num2 = int(input("What's the second number?: "))
for symbol in operations:
  print(symbol)
operationSymbol = input("Pick an operation from the line above: ")

ans = operations[operationSymbol](num1,num2)
print(f"{num1} {operationSymbol} {num2} = {ans}")
```

2. Recursion
> 一個函式當中再去呼叫它自己

* 舉例：
（此例子會無限循環列印ahhhhh）
```python=
def calculator():
    print("ahhhhh")
    calculator()
    
calculator()
```