Python Basic

常見錯誤及需要注意的

  • 一定要排版!在python裡排版是必要的
  • 如果可以盡量宣告時直接指定型態
  • 該空格要空格 該縮排就縮排
  • 盡量避免掉語法錯誤

基礎中的基礎

輸出

print('我是被輸出的')

print('HelloWorld')

變數

常見的變數型態有 int(整數),float(浮點數),str(字串),bool(布林值)

  • 變數宣告時不須指定型態
  • 使用指定運算子( = ) 來為變數指定初始值
  • 使用 type可以得知此變數的變數型態
  • 不須設定初始值請用 None
  • 單行註解使用 #被註解的文字
    age = 16 
    name = 'Chen'
    score = 99.7
    pa = False
    ans = None
    print('學生名稱',name)
    print('年齡',age)
    print('分數',score)
    print('會被當嗎',pa)

輸入

變數 = input('提示字元')

註解

使用三個單引號來多行註解
使用井號來單行註解

算術運算子

運算子 結果
x+y 相加
x-y 相減
x*y 相乘
x/y x除y
x//y x除y 求整數
x%y 取x除y的餘數
x**y x的y次

其他語法

\n換行
一次輸出多個變數 %

Code 功能
%% 輸出%
%d 10進位整數
%f 十進位浮點術
%c 字元輸出
(其實還有更多)
chinese =int( input('國文分數:'))
english = int(input('英文分數:'))
math = int(input('數學分數:'))
science = int(input('自然分數:'))
society = int(input('社會分數:'))
avg = float((chinese + english + math + science + society )/5)
print('你的分數分別是')
print('國文:%d\n英文:%d\n數學:%d\n自然:%d\n社會:%d\n' %(chinese,english,math,science,society))
print('平均:%f' %(avg))

條件判斷

使用if elif else

  • 條件不必使用括號
  • 條件完必須要加分號
  • 一樣!絕對要排版!不要忘記TAB和空格
  • 變數型態轉換 後來(原本)
name = input('請輸入您的名字')
score = int(input('請輸入您的分數'))
if score >= 90:
    print(name,'是學霸!好電Orz')
elif score >=60:
    print('還可以接受啦')
else:
    print(name,'!你給我去讀書!')
    

邏輯運算子

運算子 結果
x == y 是否等於Y
x != y 是否不等於Y

布林運算子

A 為條件A
B 為條件B

運算子 結果
A and B 是否A B皆成立
A or B A或B其中一個成立
not A 回傳A的相反
score = int(input('請輸入您的分數'))
if score >= 60 and score <= 90 :
    print('你只有',score,'是個普通人')
if not score >= 60 :
    print('一樣給我去念書!!')

陣列

  • Range,Tuple 不可修改
  • 可存不同資料
  • 使用[index]讀取資料

Range

不可修改
Range(stop)
Range(start, stop)
Range(start, stop, step)

  • 若沒有給起始值,將預設為0
  • 若沒有給間隔,將預設為1
  • 遇到停止點後就會終止,因此Range中的數字將不會包含停止點

Tuple

不可修改

List

即為array

  • 需使用[]
  • 陣列內的元素也可以是陣列(類似數學上的集合)
  • 使用 **[start:stop:step]**來取出資料,-1表示最後一個
number = range (1,5,1) #range
name = 'John','Chris','Amber','Bob','Emma' #tuple
score = [ 50,70,98,78,4] #list
score[0] = [0,1,2]
print('座號:',number[0],number[1],number[2],number[3])
print('姓名:',name[0],name[1],name[2],name[3])
print('分數:',score[0],score[1],score[2],score[3])

str1 = 'hello world'
arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arr2 = arr1[0:5]
arr3 = arr1[0:-1:2]
arr4 = arr1[:]
print(arr2)
print(arr3)
print(arr4)
print(str1[5:])
print(arr1[:-1])

重複結構

for

常跟range搭配使用
或者跟List搭配
有次數限定的

for i in range()
for i in str
for i in arr

score = [0,0,0,0,0]
program = ['國文','英文','數學','自然','社會']
sum = 0
for i in range(5):
    x = int(input(program[i]))
    score[i] = x
for i in range(5):
    print('%s成績為%d分'%(program[i],score[i]))
for i in range(5):
    sum += score[i]
print('總分',sum)
avg = sum/5
print('平均',avg)

example
印出10為底的三角形,如下

***********

 *********

  *******

   *****

    ***

     *

for i in range(10):
    for j in range(i):
        print(' ',end="")
    for j in range(11- 2*i):
        print('*',end="")
    print('\n')
        

while

有條件限定的

while 條件:
    if 條件:
        continue
    if 條件:
        break
num = int(input('請輸入一個數'))
while num != 0:
    print(num % 10)
    num //= 10

字元、字串

字串其實也是序列的一種 也可以把它看成一種容器

  • 使用加號(A+B=AB)
  • 判斷是否相同記憶體使用is
  • split 和 join

split('分割符',數量)
join可將一個陣列組合成一個字串

country = 'Taiwan,USA,UK,Japan'
list1 = country.split(',',4)
for i in range(len(list1)):
    print(list1[i])
ans = 'xx'.join(list1)
print (ans)

a024 大數運算
大數運算對python來說是非常簡單的問題

line=input() a=int(line.split()[0]) fix=line.split()[1] b=int(line.split()[2]) if fix=='+': print(a+b) elif fix=='-': print(a-b) elif fix=='*': print(a*b) else: print(a//b)

函式

在不同地方但需要使用同一段程式碼時
argument可以預設 若無輸入就會使用預設

def FunctionName(Argument):
    程式碼
    return 回傳值

最小公因數(GCD)

輾轉相除法
兩個整數的GCD是能夠同時整除它們的最大的正整數。

原理:
兩個整數的GCD等於較小的數和,兩數的差的最大公因數

def gcd(a,b):
    if b == 0:
        return a
    else:
        return gcd(b,a%b)
x = int(input('請輸入x:'))
y = int(input('請輸入y:'))
print('x和y的GCD為',gcd(x,y))
        

遞迴

這只是基礎的遞迴
費氏數列

def f(n):
    if n == 0:
        return 0
    if n <=2:
        return 1
    return f(n-1)+f(n-2)
for i in range(11):
    print(f(i))

其他常見操作

操作 功能
len(s) s的長度
min(s) s內的最小值
s.count(x) x在s裡出現幾次
s.remove(x) 刪除在s裡第一個x
s.reverse() 反轉
s.insert(i,x) 在i的地方插入x

加解密

10 base to 2 base

bin(num)

10 base to 16 base

hex(num)

2/16 base to 10 base

int(num,[進位])

base64

import base64 base64.b64encode(s).decode() # 將byte轉str

導入模組

import time
import random as rd
from apthlib import Path