# 資研 3/15 社課講義
[**提問表單**](https://forms.gle/z4dPC1JPV6uA2q9w7)
---
## 字串 Strings
1. 可以用`'`或是`"`表示(單引號或雙引號)
```python=
print( 'Hello, world!' )
print( "Hello, world!" )
```
2. 多行字串以`'''`或是`"""`表示
```python=
print('''A is for appele.
B is for bug.''')
```
3. index
```python=
s = '0123456789'
print(s[0])
# 輸出: 0
print(s[:-1])
# 輸出: 012345678
print(s[2:])
# 輸出: 23456789
```
4. for迴圈 迭代
```python=
s = '0123456789'
for i in s:
print(i, end=', ')
# 輸出: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
```
5. 組合
```python=
s1 = 'Hello'
s2 = 'world!'
print(s1 + s2)
# 輸出: Helloworld!
print(s1, s2)
# 輸出: Hello world!
```
6. f-string (format)
>用在要打的文字中有穿插變數的時候
```python=
name = 'John'
age = 18
# 寫法一
print(f'I am {name} ,and my age is {age}')
# 寫法二
print('I am {} ,and my age is {}'.format(name, age))
# 輸出: I am John ,and my age is 18
```
7. 各種函式
| function | meaning | function | meaning |
|:---------------:|:----------------:|:-------------:|:------------------------:|
| len(s) | 取長度 | s.count() | 計算出現次數 |
| s.upper() | 轉成大寫 | s.find() | 回傳指定index |
| s.lower() | 轉成小寫 | s.isalnum() | 判斷是不是字母或數字 |
| s.strip() | 去除空白 | s.isalpha() | 判斷是不是字母 |
| s.replace(a, b) | 用b取代a | s.islower() | 判斷是不是小寫 |
| s.split() | 切成列表 | s.isupper() | 判斷是不是大寫 |
| s.capitalize() | 把第一個轉成大寫 | s.isnumeric() | 判斷是不是數字 |
| s.casefold() | 轉成小寫 | ''.join() | 把列表(或元組)轉成字串 |
```python=
# len()
s = '12345'
print(len(s))
# 輸出: 5
# upper
s = 'hello, world!'
print(s.upper())
# 輸出: HELLO, WORLD!
# lower
s = 'Hello, World!'
print(s.lower())
# 輸出: hello, world!
# strip
s = ' hello, world ! '
print(s.strip())
# 輸出: hello, world !
# replace
s = 'Hello, wold!'
print(s.replace('wold', 'world'))
# 輸出: Hello, world!
# split
s = 'Monday Tuesday Wednesday Thursday Friday'
print(s.split())
# 輸出: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
# capitalize
s = 'today is Friday.'
print(s.capitalize())
# 輸出: Today is friday.
# casefold
s = 'KGHS'
print(s.casefold())
# 輸出: kghs
# count
s = 'Monday Tuesday Wednesday Monday Friday'
print(s.count('Monday'))
# 輸出: 2
# find
s = 'Monday Tuesday Wednesday Tuesday Friday'
print(s.find('Tuesday'))
# 輸出: 7
# isalnum
s = '123abc'
print(s.isalnum())
# 輸出: True
# isalpha
s = '123abc'
print(s.isalpha())
# 輸出: False
# islower
s = '123abc'
print(s.islower())
# 輸出: True
# isupper
s = '123abc'
print(s.isupper())
# 輸出: False
# isnumeric
s = '123abc'
print(s.isnumeric())
# 輸出: False
# join
t = ('Monday', 'Tuesday')
print(''.join(t))
# 輸出: MondayTuesday
```
8. 特殊字元
[**連結**](https://www.w3schools.com/python/python_strings_escape.asp)
## 練習
1. 請寫出一個程式可以將使用者輸入的字串反轉
```python=
s = input()
for i in range(len(s)-1, -1, -1):
print(s[i], end='')
```
2. 請寫出一個程式可以將使用者輸入的字母後移一個(a->b, b->c)
```python=
s = input()
ascii = ord(s)
print(chr(ascii + 1))
```
---
## **練習題**
**Zerojudge**
[**連結**](https://zerojudge.tw/)
---
## 補充資料
**推薦網站:**[**W3Schools**](https://www.w3schools.com/)