內容選單標籤

2019年11月27日 星期三

CH10 陣列 ( 數據類型資料 )


--------------------------------- 數據類型資料

Python 將一般的陣列變數轉換為容器,容器中有:
串列 List
元組 Tuple
字典 Dictionary
集合 Set


------------ 10.1 串列 List ------------

>>> list1=[2,4,6,8,10]
>>> print(list1)
[2, 4, 6, 8, 10]


>>> for i in range(5):
print(list1[i],end=' ')

2 4 6 8 10


>>> x=range(5)
>>> type(x)
<class 'range'>
# range 其實也是一個串列 range(start, end, step)

>>> for i in list1:
print(i,end=' ')

2 4 6 8 10



>>> C=[3,4]
>>> D=[5,6]
>>> E=C+D
>>> print(E)
[3, 4, 5, 6]
>>> E=E+E
>>> print(E)
[3, 4, 5, 6, 3, 4, 5, 6]
>>> E=2*C
>>> print(E)
[3, 4, 3, 4]

>>> e=21
>>> print(e)        #變數名稱大小寫 是不同
21
>>> print(E)
[3, 4, 3, 4]




>>> list01=[]
>>> for i in range(1,10+1):
list01.append(i)


>>> print(list01)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


----- 10.1.1 串列宣告

串列元素類別可以是整數、字串、布林值...
 list01=[2,4,6,8,10]
 list02=["星期日","星期一","星期二"]
 list03=[True, 1, 3.14, "abc"]


----- 10.1.2 空串列

還不知串列元素有多少個
list01=[ ]



----- 10.1.3 一維串列

 >>> colors=['red','blue','green','yellow']
>>> for i in colors:
print(i, end=' ')

red blue green yellow


>>> list02=['a','b','c','d','e','f']
>>> for i in range(6):
print(list02[i],end=' ')

a b c d e f


>>> nums=[1,2,3,4,5,6]
>>> for i in nums:
print(i,end=' ')

1 2 3 4 5 6





----- 10.1.4 二維串列

>>> list06=[('Jan',1),('Feb',2),('Mar',3),('Apr',4),('May',5),('Jun',6)]
>>> print(list06[0][0],list06[0][1],list06[3][0],list06[3][1])
Jan 1 Apr 4

012345
0JanFebMarAprMayJun
1123456


>>> for i in range(2):
for j in range(6):
print(list06[j][i],end=' ')
print()

Jan Feb Mar Apr May Jun
1 2 3 4 5 6



二維串列:產生、設定、呼叫

>>> p=[['']*5 for i in range(10)]
>>> for i in range(10):
for j in range(5):
p[i][j]=str(i)+','+str(j)

>>> for i in range(10):
for j in range(5):
print(p[i][j],end=' ')
print()

0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
3,0 3,1 3,2 3,3 3,4
4,0 4,1 4,2 4,3 4,4
5,0 5,1 5,2 5,3 5,4
6,0 6,1 6,2 6,3 6,4
7,0 7,1 7,2 7,3 7,4
8,0 8,1 8,2 8,3 8,4
9,0 9,1 9,2 9,3 9,4






----- 10.1.5 串列搜尋 index()

>>> IList=[123,'xyz','456','abc']
>>> print("index for xyz :",IList.index('xyz'))
index for xyz : 1
>>> print("index for zara :",IList.index('456'))
index for zara : 2



----- 10.1.6 串列計算 count()

>>> list01=[123,'xyz','456','abc',123]
>>> print("count for 123 :",list01.count(123))
count for 123 : 2
>>> print("count for 456 :",list01.count('456'))
count for 456 : 1



----- 10.1.7 串列新增元素 append()

>>> list02=[123,'xyz','456','abc']
>>> list02.append(2019);
>>> print("list02=",list02)
list02= [123, 'xyz', '456', 'abc', 2019]




----- 10.1.8 串列插入元素 insert()

>>> list03=[123,'xyz','456','abc']
>>> list03.insert(3,2019)
>>> print("list03:",list03)
list03: [123, 'xyz', '456', 2019, 'abc']




----- 10.1.9 串列移除元素 remove()

>>> list04= [123, 'xyz', '456', 'abc', 'xyz']
>>> list04.remove('xyz')
>>> print("list04:",list04)

list04: [123, '456', 'abc', 'xyz']                #移除列表中第一個匹配項

>>> list04.remove('abc')
>>> print("list04:",list04)
list04: [123, '456', 'xyz']




----- 10.1.10 串列排序

>>> List=["星期0","星期2","星期1","星期3","星期4"]
>>> List.sort()
>>> print("List:",List)
List: ['星期0', '星期1', '星期2', '星期3', '星期4']



----- 10.1.11 串列反轉排序

>>> List=["星期0","星期2","星期1","星期3","星期4"]
>>> List.sort(reverse=True)                #reverse=True 降冪   reverse=False 升冪 (內定)
>>> print("List:",List)

List: ['星期4', '星期3', '星期2', '星期1', '星期0']




----- 10.1.12 串列綜合表達法 comprehension

>>> list00=[0,1,2,3,4,5,6,7,8,9]
>>> print(list00)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> list01=[str(x) for x in list00]
>>> print(list01)
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

>>> print(" ".join(list01))
0 1 2 3 4 5 6 7 8 9                #最後沒有空白

>>> for i in list01:
print(i,end=' ')

0 1 2 3 4 5 6 7 8 9                 #最後有一個空白




----- 10.1.13 字串串列轉數值串列

>>> listA=['1','2','3']
>>> listB=list(map(int,listA))
>>> print(listB)

[1, 2, 3]



>>> list03='1 10 100 1000 10000 10000'
>>> print(list03)
1 10 100 1000 10000 10000
>>> list04=list(map(int,list03.split()))
>>> print(list04)
[1, 10, 100, 1000, 10000, 10000]



重點:

  • 文字字串   轉成   數值串列
  • 數值串列   轉成   文字字串


  • 文字字串   轉成   文字串列
  • 文字串列   轉成   文字字串


  • 字串前後空白去除




>>> list01=[1,2,3,4]
>>> list02=[3,4,5,6]
>>> len(list01)
4

>>> listA=list(map(int,['1','2','3','4']))        #字元轉成整數
>>> print(listA)
[1, 2, 3, 4]

>>> max(list01)
4
>>> max(list02)
6

>>> min(list01)
1
>>> min(list02)
3

>>> tupe=(6,7,8)                #元素轉成串列 Tuple 轉 List
>>> list(tupe)
[6, 7, 8]



>>> list03=[6,5,4,3,2,1]
>>> listA=list03[1:3]                #取出 n1~n2-1 的元素
>>> print(listA)
[5, 4]

>>> listB=list03[0:5:2]                #取出 n1~n2-1 的元素,間隔n3
>>> print(listB)
[6, 4, 2]


>>> del list03[1:3]
>>> print(list03)
[6, 3, 2, 1]

>>> list03.append(7)
>>> print(list03)
[6, 3, 2, 1, 7]

>>> n=list03.count(7)        #某元素在列表中出現的次數
>>> print(n)
1
>>> m=len(list03)
>>> print(m)
5


>>> list03.insert(1,7)
>>> print(list03)
[6, 7, 3, 2, 1, 7]





>>> s1='375'
>>> list06=list(s1)        #字串轉列表
>>> print(list06)
['3', '7', '5']



>>> print(list03)
[6, 7, 3, 2, 1, 7]

>>> n=list03.pop()        #預設移除最後一個元素
>>> print(n)
7

>>> print(list03)
[6, 7, 3, 2, 1]


>>> print(list03)
[6, 7, 3, 2, 1]
>>> list03.remove(3)        #移除列表中某個值得第一個匹配項
>>> print(list03)
[6, 7, 2, 1]


>>> print(list03)
[6, 7, 2, 1]
>>> list03.reverse()
>>> print(list03)
[1, 2, 7, 6]


>>> list03=[7,2,1,6]
>>> list03.sort()
>>> print(list03)
[1, 2, 6, 7]








------------ 10.2  ------------




------------ 10.3  ------------



------------ 10.4  ------------





















2019年11月25日 星期一

CH9 初學5題

---------------------- 9-1 九九乘法表

for i in range(1,10):                #印直行
    for j in range(1,10):            #印橫行
        print("%3d" %(i*j),end=' ')
    print()


  1   2   3   4   5   6   7   8   9
  2   4   6   8  10  12  14  16  18
  3   6   9  12  15  18  21  24  27
  4   8  12  16  20  24  28  32  36
  5  10  15  20  25  30  35  40  45
  6  12  18  24  30  36  42  48  54
  7  14  21  28  35  42  49  56  63
  8  16  24  32  40  48  56  64  72
  9  18  27  36  45  54  63  72  81









---------------------- 9-2 費氏數列

a,b=0,1
print(a,b,end=' ')
n=1000

while a+b<n:
    c=a+b
    print(c,end=' ')
    a=b
    b=c
print()


0 1 1  2  3  5  8  13  21  34  55  89  144  233  377  610  987  







---------------------- 9-3 猜數字遊戲

import random
c=0;guess=0;play='y'
n=random.randint(1,100)
while (guess != n) and ((play != 'y') or (play != 'Y')):
    guess=int(input("請輸入 (1~100) ?"))
    c=c+1
    if (guess >n):
        print("too big")
    elif(guess<n):
        print("too small")
    else:
        play=input("你猜對了,要繼續ㄇ(Y/N)?")
        if (play=='n') or (play == 'N'):
            break
        n=random.randint(1,100)
        c=0
    print("你已經猜了:",c,"次")
print(" 答案是:",n)












---------------------- 9-4 最大公因數 GCD


x=12;y=18
if(x>y):
    x,y=y,x
m=x;x=y
while(m>0):
    y=x;x=m;m=y%x
print(x)


6




---------------------- 9-5 數制轉換  十進制 轉 二進、八進、 十六進


def numsys(dec,ns):
    n=dec
    x=''
    hstr="0123456789ABCDEF"
    if (n==0):
        x='0'
    while(n>0):
        x=hstr[(n%ns):(n%ns)+1]+x
        n= n//ns
    return x
dec=18
print("十進制:",dec,":")
print("二進制=",numsys(dec,2))
print("八進制=",numsys(dec,8))
print("十六進制=",numsys(dec,16))


十進制: 18 :
二進制= 10010
八進制= 22
十六進制= 12


*********2024/03/28

def NumSys(dec,NS):
    
    RtnS=""
    AllStr="0123456789ABCDEF"
    if dec==0:RtnS="0"
    while dec>0:
        RtnS=AllStr[dec%NS:(dec%NS)+1]+RtnS
        dec=dec//NS
    return RtnS


N=int(input("請輸入任一大於0正整數:"))
print(str(N)+ " 的 二  進制=",NumSys(N,2))
print(str(N)+ " 的 八  進制=",NumSys(N,8))
print(str(N)+ " 的 十六進制=",NumSys(N,16))

請輸入任一大於0正整數:18
18 的 二  進制= 10010
18 的 八  進制= 22
18 的 十六進制= 12



2019年11月20日 星期三

CH8 函數

----------------------- 區域變數Local Variable 和 全域變數Global Variable

global_list=[1,2,3,4,]

def runvar(local_list=global_list):        #同一個位置,所以local_list 跟global_list 同
    print(local_list)
    local_list.append(5)

runvar()
print(global_list)


[1, 2, 3, 4]
[1, 2, 3, 4, 5]




x=10           #全域變數
y=20           #全域變數
lista=[]        #全域變數

def showvar():
    global y,lista
    listb=[5,4,3,2,1]        #區域變數
    lista=listb
    y=10
 
    lista.append(6)
    print('showvar=',lista)


def localvar():
    y=30                #區域變數
    z=40                #區域變數
    print('x=',x)
    print("localvar 區域 y=",y)
    print("localvar 全域 lista=",lista,'\n')


print("main x=",x)                #全域變數
showvar()
localvar()
print("main y=",y)
print("main lista=",lista)


main x= 10
showvar= [5, 4, 3, 2, 1, 6]
x= 10
localvar 區域 y= 30
localvar 全域 lista= [5, 4, 3, 2, 1, 6]

main y= 10
main lista= [5, 4, 3, 2, 1, 6]








----------------------- 8.4 程序
函數 function:
y=f(x) y 會隨 x 改變而改變
f(x):函數
x:引數 argument 會被帶到函數中運算,把結果放到函數名字中帶回

程序 procedure:
可以沒有引數,在程式中做運算,由於這運算在程式中執行多次,所以把它定義成程序,有需要再呼叫使用




>>> dir(time)
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']


>>> help(time.perf_counter)
Help on built-in function perf_counter in module time:
perf_counter(...)
    perf_counter() -> float 
    Performance counter for benchmarking.

>>> help(time.time)
Help on built-in function time in module time:
time(...)
    time() -> floating point number 
    Return the current time in seconds since the Epoch.
    Fractions of a second may be present if the system clock provides them.





import time
def procedure():
    time.sleep(2.5)

t0=time.perf_counter()
print("計時開始:")
procedure()
print(time.perf_counter()-t0)

t1=time.time()
procedure()
print(time.time()-t1)


計時開始:
2.503089078        #因 print("計時開始:") ,所以比下面多0.00308...秒
2.5



def procedure():
    print("這是程序")
    a=10+20
    print(a)

procedure()


這是程序
30












----------------------- 常用外部套件

sys 模組
math 模組
random 模組
array 模組
time 模組
numpy 模組




>>> import math
>>> math.pi
3.141592653589793


>>> dir(math)        #有那些涵數
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']


>>> help(math.pow)
Help on built-in function pow in module math:

pow(x, y, /)
    Return x**y (x to the power of y).

>>> 4**2
16
>>> math.pow(4,2)
16.0



>>> 4^2        #位元運算  XOR 互斥或
6
>>> 5^4
1


>>> math.sqrt(16)
4.0
>>> math.floor(3.14)
3
>>> abs(-2)
2
>>> math.fabs(-2)
2.0

>>> math.fmod(5,3)
2.0
>>> 5%3
2








>>> import random
>>> random.seed(10)        #改變隨機數產生器的種子
>>> random.randint(1,100)        #隨機產生1~100間整數
74


>>> random.randrange(10,50)        #10~50 挑選出一個亂數
37

>>> random.uniform(1,10)        #1~10 產生一個實數亂數
5.3430550709577025


>>> random.random()        #0~1 產生一個實數亂數
0.014832446024553692



>>> random.choice('abcdefg!@#$%')        #隨機字元
'!'


>>> a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
>>> random.sample(a,5)        #從 list a 中取出5個不重複的數
[14, 8, 5, 11, 3]








>>> import time
>>> localtime=time.localtime(time.time())
>>> print('本地時間:',localtime)
本地時間: time.struct_time(tm_year=2019, tm_mon=11, tm_mday=21, tm_hour=9, tm_min=8, tm_sec=10, tm_wday=3, tm_yday=325, tm_isdst=0)

>>> print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
2019-11-21 10:09:14

>>> print(time.strftime("%a %b %d %H:%M:%S:%Y",time.localtime()))
Thu Nov 21 10:10:29:2019


#格式字串符轉換為時間戳
>>> a='Thu Nov 21 10:10:29:2019'
>>> print(time.mktime(time.strptime(a,"%a %b %d %H:%M:%S:%Y")))
1574302229.0





>>> from datetime import date        #datetime 套件  date 模組
>>> today=date.today()                   #date 物件  today() 函數
>>> today
datetime.date(2019, 11, 21)


>>> my_birthday=date(2000,1,1)
>>> my_birthday
datetime.date(2000, 1, 1)
>>> days=abs(my_birthday-today)
>>> print(days)
7264 days, 0:00:00




>>> from datetime import datetime,date,time        #從datetime 物件 呼叫 其中3個模組
>>> d=date(2000,1,1)        #函數
>>> t=time(12,30)
>>> datetime.combine(d,t)
datetime.datetime(2000, 1, 1, 12, 30)


>>> datetime.now()
datetime.datetime(2019, 11, 21, 9, 26, 54, 426221)



#算天數
>>> from datetime import datetime
>>> date_format='%m/%d/%Y'
>>> a=datetime.strptime('1/1/2000',date_format)
>>> b=datetime.strptime('3/1/2019',date_format)
>>> delta=b-a
>>> print(delta.days)
6999



>>> dt=datetime.strptime('24/11/18 12:30','%d/%m/%y %H:%M')
>>> dt
datetime.datetime(2018, 11, 24, 12, 30)

>>> tt=dt.timetuple()
>>> for i in tt:
print(i)


2018        #年
11        #月
24        #天
12        #時
30        #分
0        #秒
5        #周 (0=Monday)
328        #自1月1日以來的天數
-1        #dst -method tzinfo.dst() returned None






>>> import calendar
>>> cal=calendar.month(2019,1)        #輸出2019年 1月份的日曆
>>> print(cal)
    January 2019
Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31



>>> import datetime
>>> i=datetime.datetime.now()
>>> print("當前的日期和時間是 %s" %i)
當前的日期和時間是 2019-11-21 10:20:33.948829

>>> print("ISO 格式的日期和時間 %s" %i.isoformat())
ISO 格式的日期和時間 2019-11-21T10:20:33.948829

>>> print("當前的年份是 %s" %i.year)
當前的年份是 2019
>>> print("當前的月份是 %s" %i.month)
當前的月份是 11
>>> print("當前的日期是 %s" %i.day)
當前的日期是 21

>>> print("當前小時是 %s" %i.hour)
當前小時是 10
>>> print("當前分鐘是 %s" %i.minute)
當前分鐘是 20
>>> print("當前秒是 %s" %i.second)
當前秒是 33

>>> print("dd/mm/yyyy 格式是 %s/%s/%s" %(i.day,i.month,i.year))
dd/mm/yyyy 格式是 21/11/2019
















----------------------- 自訂函數


def sum(n):
    s=0
    for i in range(s,n+1):
        s=s+i
    return s

print(sum(100))

5050


#費氏數列
def fib(n):
    a,b=0,1
    while a<n:
        print(a,end='  ')
        a,b=b,a+b
    print()
 
fib(1000)

0  1  1  2  3  5  8  13  21  34  55  89  144  233  377  610  987






----------------------- 字串函數
>>> chr(65)
'A'
>>> ord('A')
65

>>> a=123
>>> b='456'
>>> a+int(b)
579
>>> str(a)+b
'123456'

>>> len('guochin')
7

>>> 'guo'.center(10)        #傳回指定長度的字串,字串置中
'   guo    '

>>> 'guo'.find('g')        #字元第1次出現的索引
0
>>> 'guo'.find('u')
1

>>> 'Python is easy'.endswith('easy')       #判斷是否以指定的字串結束
True


>>> 'chinku'.upper()
'CHINKU'
>>> 'CHINKU'.lower()
'chinku'


>>> repr(65)        #輸出的字符加上引號
'65'
>>> repr('ku')
"'ku'"
>>> repr("ku")
"'ku'"


>>> str='abcdef'        #擷取
>>> str[2:5]
'cde'


>>> 'good'.replace('o','e')        #取替
'geed'


>>> 'good dog'.count('o')
3


>>> '12'.ljust(5,'0')        #對齊,餘補上指定字元
'12000'
>>> '12'.rjust(5,'0')
'00012'


>>> ' abc '.strip()        #去除前後空白
'abc'


>>> 'qqqabchhh'.rstrip('h')        #刪除左、右指定字元
'qqqabc'
>>> 'qqqabchhh'.lstrip('q')
'abchhh'



>>> 'my name is chinku'.split()        #將字符串拆分為列表
['my', 'name', 'is', 'chinku']

>>> "my,name,is,chinku".split(',')
['my', 'name', 'is', 'chinku']




>>> help(round)
Help on built-in function round in module builtins:

round(number, ndigits=None)
    Round a number to a given precision in decimal digits.
    
    The return value is an integer if ndigits is omitted or None.  Otherwise
    the return value has the same type as the number.  ndigits may be negative.








>>> for i in range(0,5):
print(i)
0
1
2
3
4

>>> a='12345'
>>> print(a[1:3])
23
>>> b=a[0:2]+'A'+a[3:5]
>>> b
'12A45'









----------------------- 常用數值函數

>>> abs(-5)
5

>>> bool(0)          #非 0 即真
False
>>> bool(-3)
True

>>> divmod(8,4)      #除,傳回 商 與 餘數
(2, 0)

>>> float(6)
6.0

>>> import math
>>> math.floor(3.14159)        #傳回小於原數的整數 (去除小數點)
3

>>> hex(10)
'0xa'
>>> hex(16)
'0x10'

>>> oct(7)
'0o7'
>>> oct(8)
'0o10'


>>> int(4.7)
4
>>> max(45,23,76)
76
>>> min(45,23,76)
23

>>> pow(2,3)        # 2 的 3 次方
8



>>> round(8.4)
8
>>> round(8.5)
8
>>> round(8.6)
9
>>> round(8.9)        #傳回最接近原數的整數
9


>>> sorted([2,8,5,3,1])        #list 小到大排序
[1, 2, 3, 5, 8]

>>> sorted([2,8,5,3,1],reverse=True)         #list 大到小排序
[8, 5, 3, 2, 1]


>>> sum([2,8,5,3,1])
19

>>> type(3.5)
<class 'float'>











2019年11月18日 星期一

CH7 指令



-------------------------- while 迴圈

sum=0
i=1
while i<=100:
    sum +=i
    i+=1
print('1+2..+100=',sum)

1+2..+100= 5050


cnt=0
guess=0
ans=38
while (guess != ans):
    guess=int(input('請輸入(1~100) ?'))
    cnt += 1
    print('你已經猜:',cnt,'次')





for n in range(2,10):
    for i in range(2,n):
        if n % i ==0:
            print(n,'=',i,'*',n//i)
            break
    else:
        print(n,'是質數')


2 是質數
3 是質數
4 = 2 * 2
5 是質數
6 = 2 * 3
7 是質數
8 = 2 * 4
9 = 3 * 3




for n in range(2,10):
    if n % 2 == 0:
        print(n,' 是偶數')
        continue
    print(n,' ..奇數')


2  是偶數
3  ..奇數
4  是偶數
5  ..奇數
6  是偶數
7  ..奇數
8  是偶數
9  ..奇數









-------------------------- for 迴圈


Python 中 for 以及 while 可以像 if 一樣有個 else 區塊,當迴圈沒有中斷就會執行到 else 區塊。
換句話說,就是 esle 為 for loop 的其中一個部份,如果 break 就一併跳出,沒有的話就會執行到。


#小於10的質數
for n in range(2,10):
    print('n=',n)
    for i in range(2,n):
        print('i=',i,end=' ')
        if n % i ==0:
            break
    else:
        print( '>> %d'  %n,end=' ' )
    print('\n')

n= 2
>> 2

n= 3
i= 2 >> 3

n= 4
i= 2

n= 5
i= 2 i= 3 i= 4 >> 5

n= 6
i= 2

n= 7
i= 2 i= 3 i= 4 i= 5 i= 6 >> 7

n= 8
i= 2

n= 9
i= 2 i= 3




nums=[60,70,30,110,90]
isFound=False
for n in nums:
    if n>100:
        isFound=True
        print("有大於100的數")
        break

if not isFound:
    print("沒有大於100的數")


有大於100的數




nums=[60,70,30,110,90]

for n in nums:
    if n>100:
     
        print("有大於100的數")
        break
else:
    print("沒有大於100的數")


有大於100的數












Python 中 break、continue、pass 的區別:
break:強制跳出 ❮整個❯ 迴圈
continue:強制跳出 ❮本次❯ 迴圈,繼續進入下一圈
pass:不做任何事情,所有的程式都將繼續


cnt=0
for char in 'content':
    cnt+=1
    if char == 't':
        break
    print(char)
print('\n迴圈結束')
print('迴圈執行 %d 次' %cnt)

c
o
n

迴圈結束
迴圈執行 4 次



cnt=0
for char in 'content':
    cnt+=1
    if char == 't':
        continue
    print(char)
print('\n迴圈結束')
print('迴圈執行 %d 次' %cnt)


c
o
n
e
n

迴圈結束
迴圈執行 7 次




cnt=0
for char in 'content':
    cnt+=1
    if char == 't':
        pass
    print(char)
print('\n迴圈結束')
print('迴圈執行 %d 次' %cnt)

c
o
n
t
e
n
t

迴圈結束
迴圈執行 7 次

在迴圈中使用 pass 語句,執行程式後,你會發現什麼事也沒做,完全不起任何作用,只是一個空運算而已,那問題就來了:
如果什麼事都不做,就不用寫拉,那 pass 語句是要做什麼的? ……
其實有時候會有非寫不可的情況!!
pass 就像是 To do 的概念,在寫程式的時候,有時候想的比實際寫出來的速度快,例如定義一個函數,但還沒有實作出來,空著內容不寫又會產生語法錯誤,這時就會使用 pass 來替代,當作是個指標,提醒自己之後要來完成。












>>> for letter in 'Python':
print(letter,end=' ')


P y t h o n


>>> w=['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
>>> for days in w:
print(days,end=' ')


Sun Mon Tue Wed Thu Fri Sat



>>> for i in range(1,11,2):
print(i,end=' ')


1 3 5 7 9



>>> for i in range(10,1,-3):
print(i,end=' ')


10 7 4


>>> for i in range(1,10):
print(i,end='')


123456789
>>> for i in range(1,10):print(i,end=' ')

1 2 3 4 5 6 7 8 9


>>> r=range(1,11,2)
>>> print(r)
range(1, 11, 2)
>>> print(type(r))
<class 'range'>
>>> for i in r:
print(i,end=' ')


1 3 5 7 9


-------------------------- if 判斷
x=int(input('x='))
if x<0:
    print('成績小於0')
elif x>100:
    print('成績大於100')
elif x<60:
    print('成績不及格')
else:
    print('成績及格')






>>> n=int(input('輸入一整數:'))
輸入一整數:6
>>> if n%2==0:
print('偶數')
else:
print('奇數')


偶數



--------------------------交換數值

>>> a=5
>>> b=10
>>> a,b=b,a
>>> a,b
(10, 5)

2019年11月17日 星期日

CH6 python 運算





---------------------------------

---------------------------------

---------------------------------
---------------------------------

---------------------------------

---------------------------------
---------------------------------

---------------------------------

---------------------------------
---------------------------------

---------------------------------
>>> a='12345'
>>> b=7
>>> a
'12345'
>>> b
7
>>> print(a,b)
12345 7

>>> c=12;d=c+2
>>> c,d
(12, 14)

>>> list1=[5,4,7,1,6]
>>> print(sorted(list1))   #排序 小-->大
[1, 4, 5, 6, 7]



---------------------------------

>>> a=8
>>> b=13
>>> a&b
8

>>> a=3
>>> b=15
>>> a&b
3

>>> a=3
>>> b=15
>>> a|b
15

>>> a=8
>>> b=13
>>> a|b
13

>>> 11<<2
44                    #乘 2**2
>>> 11>>2
2                        #除 2**2

>>> a=1
>>> ~a 
-2
# 0001 --> 1110 即 以1's補數法,表示的負整數

>>> a=4
>>> ~a
-5
#4 --> 0100 --> 1011 --> -5


>>> a=2
>>> b=3
>>> a^b
1

>>> a=5
>>> b=7
>>> a^b
2

>>> a=2
>>> b=7
>>> a^b
5

>>> a=3
>>> b=15
>>> a^b
12
---------------------------------

>>> a=16
>>> bin(a)
'0b10000'
>>> oct(a)
'0o20'
>>> hex(a)
'0x10'





---------------------------------

>>> a=True
>>> b=False
>>> if(a):
print('True')
else:
print('False')

True

>>> c=(5>3)
>>> if c:
print('True')
else:
print('False')

True

>>> if(2):
print('True')
else:
print('False')

True

>>> if(0):
print('True')
else:
print('False')

False





>>> list1=[1,2,3]
>>> list2=[4,5,6]

>>> list1==list2
False

>>> list1=list2
>>> list1
[4, 5, 6]



---------------------------------運算

>>> b=a[0:2]+'A'+a[3:5]
>>> print(b)
12A45


>>> print(a[1:3])
23

>>> a='12345'
>>> for i in range(0,5):
print(i)


0
1
2
3
4



>>> a=123
>>> b="567"
>>> a+int(b)
690
>>> str(a)+b
'123567'
>>> c=str(a)+b
>>> c
'123567'
>>> c[3:5]
'56'



>>> print("c:\\workspace")
c:\workspace

>>> print(R"c:\\workspace")
c:\\workspace


>>> a="Hello"
>>> b="Python"
>>> a+b
'HelloPython'
>>> a*2
'HelloHello'
>>> a[1]
'e'
>>> a[2:4]
'll'
>>> 'H' in a
True
>>> 'M' not in a
True



>>> a=5
>>> b=3
>>> a+=b
>>> a
8


CH5 python 資料型態