---
# System prepended metadata

title: HW3
tags: [dataframe]

---

---
title: HW3
tags: dataframe
---
<style>
.green {
  padding: 0 2px;
  white-space: pre-line;
  border-radius: 2px;
  background-color: #CCFF99;}
.red {
  padding: 0 2px;
  white-space: pre-line;
  border-radius: 2px;
  background-color: #FFA488;}
.blue {
  padding: 0 2px;
  white-space: pre-line;
  border-radius: 2px;
  background-color: #77DDFF;}
.purple {
  padding: 0 2px;
  white-space: pre-line;
  border-radius: 2px;
  background-color: #D1BBFF;}
</style>

#  `HW3重點小整理：`


### **寫下第⼀隻Python程式**
算法一：我寫的
```python
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
nOdd=0
nEven=0

for i in range(1,10,2):
    nOdd=nOdd+i
for i in range(0,10,2):
    nEven=nEven+i
    
print('奇數總和={0}，偶數總和={1}'.format(nOdd,nEven))
```

算法二：老師寫的
```python
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
nOdd=0
nEven=0
for 1 in 1st :
    if 1%2 ==0:
        nEven=nEven+ 1
    else:
        nOdd=nOdd+ 1
print('奇數總和={0}，偶數總和={1}'.format(nOdd,nEven))    
```


算法三：
```python
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]

print ('奇數總和={0}，偶數總和={1}'.format(sum(lst[::2]),sum(lst[1::2])))
```
:::   info
lst[a : b : c] -> 起點lst[a], 終點 lst[b], 間隔 c

lst[  :   : 2] -> 起點lst[0], 終點 lst[-1] (-1 表最後一個), 間隔 2 
-> lst[0], lst[2], lst[4], lst[6], lst[8]

lst[1 :   : 2] -> 起點lst[1], 終點 lst[-1], 間隔 2
-> lst[1], lst[3], lst[5], lst[7]
:::


> 這三種算法，我覺得都可以，以電腦算法來說，都會想要越快越好。
> `法一`： 需要跑兩次 for
> `法二`： 需要跑一次 for
> `法三`： 我不確定會不會比較快，但比較簡潔。


### **試利⽤迴圈撰寫出⼀程式可計算出 n! 的值**
> 註：n! = n*(n-1)*(n-2)...*1 (e.g. 5!=5*4*3*2*1)
```python
n = int(input('請輸入一個正整數：')) 
sum = 1
for i in range(1, n + 1):
    sum *= i
print(n,"!","=" ,format(sum))
```
> 數值型態：int 

### **試利⽤巢狀迴圈(nest for)撰寫九九乘法表**
```python
for i in range(1, 10, 1):
    for j in range(1, 10, 1):
        print(i, 'x', j, '=', i*j)
```
### **試寫出⼀個函式，該函式可以將字串(string)反轉**
```python
def str_reverse(input_str):
    return input_str[::-1]
str1='1234abcd'
str2=str_reverse(str1)
print('原來的字串：{0}\n反轉後的字串：{1}'.format(str1, str2))
```
### **試寫⼀個函式，該函式接受⼀個串列(list)，並返回⼀個沒有重複項⽬(item)的新串列(list)**
```python
lst1 = [1,2,3,3,4,4,4,5,6,6]
lst2 = list(set(lst1))
print('原來的串列：{0}\n去除重複項目以後的串列：{1}'.format(lst1, lst2))
```
> <span class="green">查找 set 的意思</span>
> 數組的概念 -> 看裡面有幾個不同的數
> set([1, 2, 5, 5]) = [1, 2, 5]