Python入門之一

bug--maker發表於2018-09-18
  • python是一種解釋行,物件導向的動態資料型別的高階程式設計語言,在1989年發明;
    • 解釋型:開發過程中沒有編譯這個環節,類似於shell;
    • 互動型:支援python提示符,互動執行程式;
    • 物件導向:支援物件導向的風格或者程式碼封裝在物件的程式設計技術;
  • python的特點:
    • 易於學習:關鍵字相對較少,結構簡單;
    • 易於閱讀:Python程式碼閱讀清晰;
    • 擁有廣泛的標準庫;
    • 可移植性好;
    • 可擴充套件性好:可以使用其他的程式碼來擴充這部分程式碼;
    • 支援多種GUI 變成以及系統呼叫;
    • 支援將Python程式碼嵌入到C/C++程式中;
  • 缺點:
    • 執行速度慢:和C程式相比非常慢,Python屬於解釋性語言,程式碼在執行時會一行一行翻譯成CPU機器程式碼,翻譯過程十分耗時;
    • 程式碼不能夠加密:解釋型語言只能夠釋出原始碼,不像C語言釋出成二進位制的可執行檔案;
  • 註釋
  • 程式碼的註釋使用#進行註釋;
  • 多行註釋使用'''註釋多行 ''',寫程式碼時,不應該存在中文字元;
  • 同樣的"""註釋多行""";
  • 輸出
  • print:列印雙引號之間的內容;
print("hello world")
  • 如果需要列印多條資訊,可以使用,進行分割
print("hi python","hello python")
  • 輸出的結果是
    這裡寫圖片描述
  • 輸出數字以及運算
print(19)

print(10 + 8)

print("10 + 8 ", 18)
  • 輸出的結果是
    這裡寫圖片描述
  • 輸入
  • input:用於從標準輸入獲取變數的值
age=input("please input your age ")

print("age = ", age)

  • 輸出的結果為
    這裡寫圖片描述

  • Python的資料型別

  • number:

  • 整數:Python可以處理任意大小的整數,同時也包括負整數,在程式中的寫法和數學表達是一致的;

  • 連續定義多個變數

num1 = 10
num3 = num2 = num1   //這樣變數的地址是一樣的

num6,num7 = 6,6這兩個變數的地址也是一樣的;

print(id(num2),id(num3));
93941385645920 93941385645920
  • 浮點數:浮點數由整數部分和小數部分組成,浮點數運算可能會丟失精度;
float1 = 1.1
float2 = 2.30000

print(type(float1))

print(float1+float2)
  • 結果為
    這裡寫圖片描述

  • 複數:表示的實數部分和虛數部分組成;

  • 數值型別轉換:

print(int(1.9))
print(int('123'))
print(int("+123"))
print(int("-112"))
  • 常見的數學函式
  • abs():用於返回某個數的絕對值;
  • print((num2>num3)-(num2<num3)):用於表示比較這兩個數的大小,返回值為1 0 -1;
  • max(arg1,arg2,arg3..):用於返回給定引數的最大值;
  • min(arg1,arg2,arg3..):用於返回給定引數的最小值;
  • pow(x,y):用於計算x^y的結果;
  • round(x,y):表示保留y位,x的值,省略表示的就是隻保留整數位;
  • math庫:數學運算相關的庫;
  • math.ceil(18.1):表示向上取整;
  • math.flooe():表示向下取整;
  • math.modf(22.3):用於將一個數拆分為整數[浮點型]部分和小數部分;
  • math.sqrt():表示用於開平方;
print(max(num2,num3))
print(min(num2,num3))

print(pow(num2,num3))

print(round(3.456,1))
  • 隨機數:
print(random.choice([1,3,5,7,9,"aa"]))        //在這些數裡面選出隨機數
print(random.choice(range(5)))
print(random.choice("sunck"))

print(random.choice(range(100))+1)

print(random.randrange(1,100,2))     //1-->100生成隨機數[包含1,但是不包含100],步長為2;
print(random.randrange(100))   //start預設是0,步長預設為1

print(random.random())    //隨機生成[0,1)之間的浮點數; 
  • 將列表中的元素進行隨機排序
list = [1,2,3,4,5]

random.shuffle(list)
print(list)
  • 顯示的結果為

這裡寫圖片描述

  • 隨機生成實數
random.uniform(3,9)   //範圍是[3,9]
  • 隨機數小程式
import random

num = int(input("please input your number "))

res = random.choice(range(100)) + 1

if num == res:
    print("you are lucky")
else:
    print("not you")
  • string: 表示字串,python裡面沒有字元的概念;
  • 字串是以單引號或者雙引號引用的任意文字,引號本身不是資料;
str1 = "hello today"
str2 = "hello tomorrow"
  • 字串運算:
  • +:用於連線字串
str1 = "hello today "
str2 = "hello tomorrow"


print(str1)

str3 = str1 + str2
  • *:表示字串的多次輸出,也就是拼接
str3 = "oo "
print(str3*3)
  • []用於獲取某個單個字元
str1 = "hello today "
str2 = "hello tomorrow"

print(str1[1])
str1[1]='a'         //字串不可變原則,所以一定會出錯;
  • 擷取字串
str2 = "hello tomorrow,it's a new day"

print(str2[2:14])

print(str2[:13])
print(str2[10:])
  • 顯示的的結果
    這裡寫圖片描述
  • 關於in的使用
str2 = "hello tomorrow,it's a new day"

print("hello" in str2)

print("hi" in str2)
  • 輸出的結果
    這裡寫圖片描述
  • 轉義字元
  • \n:用於表示換行;
print("num = %d \nstr = %s\nfnum =%f " %(num,str1,fnum2))
print("today is \\n a new day")

print('today is a \'new\' day')

print("today is a 'new' day")
  • 如果需要列印多行,使用
print('''
today 
is 
a 
good
day
''')
  • \t:表示製表符,預設是4個空格
print("today is a \t good day")
  • r:如果字串中,存在很多字元進行轉義,為了簡化,允許使用r表示內部的字串預設不轉義
print(r"\\\\t\\\\")
  • eval():用於將字串當成有效的表示式來求值,並且返回計算結果,用於將字串轉換成整數不能夠用於處理字母;
num = eval("1234")
print(num)
print(type(num))


num = eval("12+34")
print(num)
print(type(num)) //輸出結果為46 
  • len():用於返回字元個數,並不計算位元組個數
print(len("today is a new day"))
  • lower(str):轉換字串中的大寫字母為小寫字母
str2 = "Hello tomoRRow,it's a new day"

print(str2.lower()) //並不改變原有字串的;
  • upper():將小寫字母轉換為大寫字母
print(str2.upper())
  • swapcase():用於將大寫轉換為小寫,用於將小寫轉換為大寫
print(str2.swapcase())
  • capitalize():只有將首字母大寫,其他字母都是小寫
print(str2.capitalize())

Hello tomorrow,it's a new day
  • title():每個單詞的首字母大寫
print(str2.title())

Hello Tomorrow,It'S A New Day
  • center(width,filechar):表示寬度和填充字元
print(str1.center(40,'*'))
**************hello today**************
  • ljust():表示進行左對齊,預設是空格填充
print(str1.ljust(20,"%"))

hello today%%%%%%%%%
  • rjust():表示返回一個指定長度的字串,是右對齊,預設使用空格填充
print(str1.rjust(20,'*'))

*********hello today
  • zfill():返回指定字串的長度,字串右對齊,預設使用0進行填充
print(str1.zfill(20))

000000000hello today
  • count(str[,start][,end]):可以用於在指定字串的位置中查詢指定字串出現的位置
str2 = "Hello tomotoRRow,it's a new day"

print(str2.count("to",5,len(str2)))

2
  • find(str[,start][,end[):用於查詢指定字串重做開始第一次出現的位置,如果不存在就返回-1
str2 = "Hello tomotoRRow,it's a new day"

print(str2.find("to",7,len(str2)))

10
  • rfind():用法和上面一樣,表示從由向左進行查詢
print(str2.rfind("to"))

10
  • index(str,start=0,end-len=(str)):用法和上面一樣,如果指定字串不存在,就會報錯;
str2 = "Hello tomotoRRow,it's a new day"

print(str2.index("too"))

Traceback (most recent call last):
  File "/root/PycharmProjects/test/first.py", line 5, in <module>
    print(str2.index("too"))
ValueError: substring not found
  • rindex():表示從右向左進行查詢,如果找不到,就會出錯

  • lstrip():用於去掉字串左側指定的字元,預設為空格

str2 = "*******Hello tomotoRRow,it's a new day"
print(str2.lstrip('*'))

Hello tomotoRRow,it's a new day
  • split(" ",num):表示按照某個關鍵字將字串進行切割,如果指定num表示擷取指定的num個字串;
string1 = "today   is    a new  day, but where are you"

string2 = string1.split(" ")

wordnum = 0
for i in string2:
    if len(i) > 0:
        wordnum +=1
print(wordnum)

9
  • splitlines(true | false):表示按照\r, \r\n, \分隔,true表示返回換行符,false表示不返回換行符;
string1 = '''today   is    an new  day, but where are you
the next day is an new day 
hello tomorrow
'''

print(string1.splitlines())
print(string1.splitlines(True))

['today   is    an new  day, but where are you', 'the next day is an new day ', 'hello tomorrow']
['today   is    an new  day, but where are you\n', 'the next day is an new day \n', 'hello tomorrow\n']
  • join:用於將列表組合成為字串
list1 = ['today   is    an new  day, but where are you', 'the next day is an new day ', 'hello tomorrow']

string1 = "\n".join(list1)
print(string1)

today   is    an new  day, but where are you
the next day is an new day 
hello tomorrow
  • max():表示用於返回字串裡面的最大值;
  • min():表示用於返回字串裡面的最小值,按照ASCII進行比較;
  • replace(old,new,count):表示要替換的值,替換的值,替換的次數,預設進行全部替換,如果指定了count,那麼只進行前count的替換;
string1 = "today is an new day"

string2 = string1.replace("an","a",1)
print(string2)
  • maketrans("對映前","對映後"):表示建立字串對映表,是一張表,每個字元對應進行替換,是按照字元為單位的,替換前後的字元數必須相等;
  • translate():表示執行上面的對映
string1 = str.maketrans("an", "6o")
string2 = "today is an an an an new day"



string3 = string2.translate(string1)

print(string3)


tod6y is 6o 6o 6o 6o oew d6y
  • 這種替換較少使用;

  • startwith("str", num1, num2):表示從num1num2進行查詢,是否是以str開頭的字串,如果沒有指定範圍,預設是整個字串;

string2 = "today is an an an an new day"
print(string2.startswith("an", 3, 10))

False
  • endwith("str",num1,num2):使用同上,用於判斷是否是str結尾的
  • 編碼:
  • encode("utf-8,"ignore")
string2 = "today is an an an an new day"

data = string2.encode("utf-8")
print(data)
print(type(data))
解碼
string3 = data.decode("utf-8")

print(string3)

b'today is an an an an new day'
today is an an an an new day
  • 解碼和編碼必須使用同樣的格式,否則會出錯;

  • isalpha():表示如果字串中至少有一個字元,並且所有的字元都是字母,但會True,否則返回False;

  • isalnum:表示字串中至少有一個字元,並且所有的字元都是字母或者數字返回True,否則返回False;

  • isupper():表示字串中至少有一個英文字元,且所有的英文字元必須都是大寫的英文字母,返回True,否則返回False,如果包含數字也會返回True

  • islower():表示字串中至少一個英文字元,並且所有的英文字元必須都是小寫的英文字元;

  • istitle():表示如果字串是標題化的就返回True,否則就是返回False,標題化表示單詞的第一個字母必須是大寫;

  • isdigit():如果字串只包含數字,返回True,否則返回False;

  • isnumeric():字串中只包含數字字元,返回為True;

  • isdecimal():字串中只包含十進位制字元;

  • isspace():如果字串中只包含空格,返回True,否則返回False;

  • rstrip():作用和上面的一樣

  • ord():用於將字母轉換成為ACSII

  • chr():用於將某些ASCII轉換成為值;

  • 字串進行比較的規則:

    • 某個字串的ASCII的大,那麼就是比第二個;
    • 如果相等,就會比較下一個字元的ASCII;
  • boolean:用於表示true以及false,有且只有這兩種值,

  • None:是一個特殊值,但是不能夠使用0來進行表示;

  • list

  • 列表用於儲存更多的資料 ,列表表示一組有序的集合,並且允許時不同的型別

age = []
print(age)

[]

age = [12, 23, 34, 45]
print(age)

[12, 23, 34, 45]

list1 = [1, 2, "sunck", True]
print(list1)
[1, 2, 'sunck', True]
  • 取值和替換:對於元素的訪問從0開始,並且訪問不能夠越界;
list1 = [1, 2, "sunck", True]
print(list1[1])

list1[1] = 12
print(list1)
  • 層級巢狀 不能夠超過3
  • 列表操作
list2 = age + list1
print(list2)
  • 列表重複
print(age * 3)

[12, 23, 34, 45, 12, 23, 34, 45, 12, 23, 34, 45]
  • 判斷元素是否在列表中
print(12 in age)
  • 列表擷取
list2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list2[2:6])
print(list2[2:])
print(list2[:6])

[3, 4, 5, 6]
[3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6]
  • 二維列表
list33 = [[1,2,3],[4,5,6],[7,8,9]]
print(list33[1][1])
  • 列表方法
  • append:表示在末尾一次性追加另一個列表中的多個值;
list1 = [1, 2, 3, 4, 5]
list1.append(6)
print(list1)
list1.append([7, 8, 9])
print(list1)

[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, [7, 8, 9]]
  • 追加的是一個列表中的元素
list1 = [1, 2, 3, 4, 5]
list1.extend([6, 7, 8])
print(list1)

[1, 2, 3, 4, 5, 6, 7, 8]
  • insert: 在下標處,新增一個元素,將列表當做一個元素來處理
list1 = [1, 2, 3, 4, 5]
list1.insert(3, 100)
print(list1)

[1, 2, 3, 100, 4, 5]
  • 插入的是一個列表
list1 = [1, 2, 3, 4, 5]
list1.insert(3, [100, 200])
print(list1)

[1, 2, 3, [100, 200], 4, 5]
  • pop(x=list[-1]):預設表示列表最後一個元素被彈走,可以指定下標移除指定元素,並且返回刪除的資料
list1 = [1, 2, 3, 4, 5]
print(list1[-1])

5

list1.pop()
print(list1)

[1, 2, 3, 4]

list1.pop(2)
print(list1)

[1, 2, 4]
  • remove():表示用於刪除指定元素第一個匹配的結果,首先會查詢指定元素的值
list1 = [1, 2, 3, 4, 4, 4, 5]
list1.remove(4)
print(list1)

[1, 2, 3, 4, 4, 5]
  • clear():用於刪除列表中的所有元素
list1 = [1, 2, 3, 4, 4, 4, 5]
list1.clear()
print(list1)

[]
  • index():表示從列表中找出第一個匹配的索引
list1 = [1, 2, 3, 4, 4, 4, 5]
print(list1.index(3))
print(list1.index(4, 2, 7))

2
3
  • len():用於獲取列表裡面的元素個數
list1 = [1, 2, 3, 4, 4, 4, 5]
print(len(list1))
  • max():用於獲取列表中的最大值;
  • min():用於獲取列表中的最小值;
  • count():用於查詢某個元素出現的次數;
  • reverse():用於進行列表的倒序;
  • sort():預設進行升序排序;
  • 關於淺拷貝與深拷貝
list1 = [1, 2, 3, 4, 4, 4, 5]
list2 = list1
list2[3] = 300
print(list2)
print(list1)
print(id(list1))
print(id(list2))

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

140657342356296
140657342356296
  • 棧區:程式結束,自動釋放程式空間;
  • 堆區:手動申請,手動釋放,普通變數儲存在棧區;
  • 淺拷貝的地址結構
    這裡寫圖片描述
  • 由於執行的是淺拷貝,棧區list27list28裡面儲存的是堆區裡面的同一段地址空間的首地址0x100,其實訪問的是同一片地址空間;
  • 深拷貝
list1 = [1, 2, 3, 4, 4, 4, 5]
list2 = list1.copy()
list2[3] = 300
print(list2)
print(list1)

print(id(list1))
print(id(list2))

[1, 2, 3, 300, 4, 4, 5]
[1, 2, 3, 4, 4, 4, 5]
140278067989320
140278067987720
  • 深拷貝表示的是記憶體拷貝,
    這裡寫圖片描述

  • 元組轉換為列表

list2 = list((1, 2, 3, 4, 5))
print(list2)

[1, 2, 3, 4, 5]
  • 分解質因數的小程式
num = int(input())
i = 2
list1 = []
if num == 1:
    print(1)
while num != 1:
    if num % i == 0:
        list1.append(i)
        num //= i
    else:
        i += 1
print(list1)
  • ** tuple**
  • 表示元組,元組和列表的不同之處在於,元組裡面的元素不能夠進行修改,但是可以進行元組的組合;
  • 建立元組
tuple2 = (1, 2, 3, 4, "hello", True)
  • 對於只有一個元素的元組
tuple1 = (1, )
  • 元組的訪問,下標從0開始,並且不允許越界;
print(tuple2[3])  //下標為 0
print(tuple2[-1])  //用於獲取最後一個元素 [-2]表示倒數第二個元素
  • 對於這樣一種情況是可以進行修改的.也就是對於元組裡面存在可修改的列表時,是可以進行修改的;
tuple2 = (1, 2, 3, 4, 5, [7, 8, 9])

tuple2[-1][0] = 50
print(tuple2)

(1, 2, 3, 4, 5, [50, 8, 9])
  • 元組表示的是元組裡面的資料不可變,但是列表中的資料是可以進行改變的;
    這裡寫圖片描述
  • 刪掉元組
del tuple2
  • 元組的操作
  • +:表示相加
print(tuple2 + tuple1)

(1, 2, 3, 4, 5, [50, 8, 9], 1, 2, 3, 4)
  • *:表示乘法
tuple3 = (1, 2, 3)

print(tuple3 * 3)

(1, 2, 3, 1, 2, 3, 1, 2, 3)
  • in: 判斷元素是否在元組裡面
tuple3 = (1, 2, 3)
print( 1 in tuple3)
  • 元組的擷取:從開始下標開始擷取,結束到結束下標之前;
tuple1 = (1, 2, 3, 4, 5, 6, 7, 8, 9)

print(tuple1[3:])
print(tuple1[3:5])
print(tuple1[:5])


(4, 5, 6, 7, 8, 9)
(4, 5)
(1, 2, 3, 4, 5)
  • 二維元組
tuple2 = ((1, 2, 3, 4),(1, 2, 3, ),(1, 2, 3, ),(4, 5, 6, ))

print(tuple2[1][1])
  • 元組的方法
  • len():用於返回元組裡面元素的個數
tuple1 = (1, 2, 3, 4, 5, 6, 7, 8, 9)
  • max():用於返回元組裡面的最大值
print(max(tuple1))
  • 將列表轉換成元組
list1 = [1, 2, 3, 4, 5]

tuple2 = tuple(list1)
print(tuple2)

(1, 2, 3, 4, 5)
  • 元組的列印
for i in tuple2:
    print(i)
  • dictionary
  • 表示字典,使用鍵值的儲存形式,具有快速的查詢速度,key-value,對於key
    的要求:
    • 首先key必須是唯一的;
    • key:必須是不可變的物件;
    • 字串,整數都必須是不可變的,可以作為key;
    • list是可變的,不能夠作為key
  • 字典的建立
dict1 = {"tom":60, "xiaoxiao":90, "houhou":100}
  • 通過key來訪問value,通過這種方式取值,如果值不存在,就會報錯;
print(dict1["jerry"])
  • 大多數情況下是通過下面這種方式來取值的,因為如果取的值不存在,不會進行報錯,方便進行返回值的判斷;
print(dict1.get("houhouo"))
  • 新增
dict1["cat"] = 99          //如果字典裡面內部存在就是新增
dict1["jerry"] = 90        //字典裡面存在就是修改
  • 刪除
dict1.pop("houhou")         //刪除的前提是必須存在
  • 遍歷
dict1 = {"tom":60, "jerry":90, "houhou":100}
print(dict1.get("houhouo"))

dict1["cat"] = 99
dict1["jerry"] = 90

for key in dict1:
    print(key, dict1[key])

for value in dict1.values():
    print(value)


for key, value in dict1.items():
    print(key, value)

for key, values in enumerate(dict1):
    print(key, values)
0 tom
1 jerry
2 houhou
3 cat
  • dictionary
    • 字典的儲存一般是無序的;
    • list相比,查詢和插入的速度是極快的,不會隨著key-value的增加而變慢;
    • dict在儲存資料時,還需要儲存序號,會導致記憶體浪費;
  • list
    • 查詢和插入的速度會隨著數量的增多而減慢;
    • 佔用記憶體小,記憶體浪費小;
  • 一個用於查詢字串中的關鍵字
w = "the"
str = "this is a good day, hello the new day, the the a and what the weather;"
d = {}
list = str.split(" ")
print(list)


for value in list:
    need = d.get(value)
    if need == None:
        d[value] = 1
    else:
        d[value] += 1

print(d[w])
print(d)

w = "the"
str = "this is a good day, hello the new day, the the a and what the weather;"
d = {}
list = str.split(" ")
print(list)

for value in list:
    need = d.get(value)
    if need == None:
        d[value] = 1
    else:
        d[value] += 1

print(d[w])

print(d)

['this', 'is', 'a', 'good', 'day,', 'hello', 'the', 'new', 'day,', 'the', 'the', 'a', 'and', 'what', 'the', 'weather;']
4
{'what': 1, 'good': 1, 'and': 1, 'day,': 2, 'this': 1, 'is': 1, 'the': 4, 'new': 1, 'hello': 1, 'a': 2, 'weather;': 1}
  • set:表示集合;

  • 識別符號

  • 識別符號是字串,但是字串未必是識別符號;

  • 識別符號遵守的規則:

    • 只能夠通過字母,數字,下劃線組成;
    • 開頭不能夠使數字;
    • 不能夠使Python的關鍵字和保留字;
    • 識別符號對於大小寫敏感;
    • 見名知意
    • Python3中,允許使用非ASCII來定義識別符號;
  • 表示符是用來給變數和函式進行命名的;

  • 檢視關鍵字

import keyword

print(keyword.kwlist)
  • 顯示的結果
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
  • 變數和常量
  • 變數表示可以操作的儲存空間名稱,還表示程式執行期間能夠改變的資料,對於每個變數來說都存在特定的型別;變數是用來將不同型別的資料儲存在記憶體裡面;
    • 定義變數:name = 初始值,初始值是為了確定變數的型別,變數的型別根據初始值確定的;
    • 資料的儲存是變數名 = 資料值,這個是用來儲存資料值的;
    • 變數在使用之前必須進行定義,否則會出錯;
  • 一個簡單的求和程式
number1 = int(input("please input a number"))
number2 = int(input("please input a number "))

print("the sum is ",number1+number2)
  • 顯示結果為
    這裡寫圖片描述

  • 刪除變數

  • del name,刪除之後,變數無法引用,用於釋放記憶體空間;

del number1
del number2
  • 檢視變數的型別
print(type(number1))
<class 'int'>
  • 檢視變數的地址
print(id(age))
140043296231312    //變數的首地址
  • 常量:程式執行期間不能夠改變的資料,成為常量

  • 運算子和表示式

  • 表示式:由變數,常量和運算子組成的式子;

  • 算術運算表示式不會改變變數的值,

  • 運算子:

  • 算術運算子:+ - * /,%取模,**求冪,//取整;
    賦值運算子:=,格式是變數 = 表示式,計算了等號右側的表示式的值並且賦值給等號左側的變數;

  • 複合運算子:+= -= /= %= **= //=

  • 位運算子:將數值當做二進位制數來進行運算;

    • &:表示按位與運算子,如果按位進行運算,兩個值都為1,結果為1,否則為0;
    • |:表示二進位制位有一個為1時,結果為1;
    • ^:表示按位異或運算子,兩個二進位制位不同時,結果為1;
    • ~:表示按位取反運算子;
    • <<:表示二進位制位向左移動幾位,高位丟棄,低位補0;
0000 0000 0000 0010
0000 0000 0000 1000
* `>>`:表示各個二進位制向右移動幾位,低位丟棄;
  • 關係運算子和關係運算表示式的結果是truefalse

  • == != > < >= <=

  • 邏輯運算子:

  • 表示式1 and 表示式2:雙真為真;

  • 表示式1 or 表示式2:一個為真,就是真;

  • not 表示式:真為假,假為真;

  • 成員運算子

  • in:如果在指定的序列中,找到的指定的值,返回值為true,否則為false;

  • not in:如果在指定的序列中,沒有找到的指定的值,返回值為true,否則為false;

  • 身份運算子

  • is:判斷兩個識別符號是不是引用同一個物件;

  • is not:判斷兩個識別符號是不是引用不同的物件;

  • 運算子優先順序

  • ** --> ~ + - --> * / % // --> + - --> << >> --> & --> ^ | --> < > <= >= --> == != --> = --> is --> in --> not or and

  • 判斷語句

if 表示式:
	語句
else:
	語句	
  • 當程式執行到if 語句時,首先計算表示式的值,並且得到表示式的真假,表示式為真,執行if語句 ,如果表示式為假,則跳過if語句,向後執行;

  • 假:0 以及 0.0 或者 '' 再或者 False;

  • 其餘都為真;

  • 判斷三位的水仙花數


num1 = int(input("please input a number "))

a = num1 % 10
b = num1 //10 % 10
c = num1 //100

if num1 == a**3 + b**3 + c**3:
    print("yes")
else:
    print("no")
  • 三個數取最大值
max = num1
if num2 > max:
	max = num2
if num3 > max:
	max = num3
  • 迴圈
  • while迴圈
while 表示式:
	語句
  • 表示式的結果為真,執行語句,執行完成語句之後,再次計算表示式的值,繼續進行判斷,知道為假;
while i < 100:
    sum += i
    i += 1
print("down")
print(sum)

while index < len(string1) - 1:
    print(string1[index])
    index += 1
 
  • if-elif-else語句
if 表示式1:
	語句
elif 表示式2:
	語句2
	.
	.
	.
else:
	語句n
  • 每個elif都是對上面條件的否定;
  • 迴圈語句
  • 死迴圈:表示表示式永遠為真的迴圈;
while 表示式:
	語句1
else:
	語句2
  • 執行的邏輯是:在表示式語句為false,會執行else:中的語句2;
  • for迴圈語句:
for 變數名 in 集合:
	語句
  • 按照順序取集合中的每個元素複製給變數,然後執行語句,知道取完集合中的元素;
  • range():列表生成器,用於生成數列,表示範圍[0,n);
for i in range(2,20,2):  開始位置預設為0,結束位置,步長預設為1
    print(i)
  • 獲取下標
for index, i in enumerate([1, 2, 3, 4, 5]):
    print(index, i)
  • break:用於跳出forwhile的迴圈,只能跳出距離最近的那一層迴圈;
  • continue:用於跳過當前迴圈的剩餘語句,然後繼續下一次迴圈,同樣只能夠跳過最近的一次迴圈;
  • turtle:是一個簡單的繪圖工具
  • done():用於保持程式不結束;
  • forward():表示向前移動,原點預設是從中間開始的;
  • backward():表示向後移動;
  • right():
  • left()
  • goto(x,y):移動到座標為x,y的位置
  • speed():表示移動的速度;
  • up:表示在移動過程中,不畫圖
  • down():表示開始劃線
  • setheading():改變朝向
  • pencolor():用於表示顏色
  • pensize():用於表示粗細
  • reset():用於清空視窗,重置turtle狀態
  • clear():表示清空視窗,但是不會重置turtle
  • circle():表示用於繪製圓形,或者是五邊形
  • 關於填充
  • turtle.begin_fill()
  • turtle.fillcolor("blue"):表示填充什麼顏色
  • turtle.end_fill():表示結束填充
  • undo():表示撤銷生一次動作;
  • hideturtle():表示隱藏海龜
  • showtutle():表示用於顯示海龜
  • screensize():表示更改顯示的螢幕大小

相關文章