1. 程式人生 > >Python3從零學習(二)

Python3從零學習(二)

# -*- coding: utf-8 -*-

#數字型別轉換

a = 1.0
print(int(a))

a = 1
print(float(a))
#complex(x) 將x轉換到一個複數,實數部分為 x,虛數部分為 0。
a = 1.1
print(complex(a))
#complex(x, y) 將 x 和 y 轉換到一個複數,實數部分為 x,虛數部分為 y。x 和 y 是數字表達式。
a = 1
b = 2
print(complex(a,b))

#數字函式

# 函式	                      返回值 ( 描述 )
# abs(x)	            返回數字的絕對值,如abs(-10) 返回 10
# ceil(x)	            返回數字的上入整數,如math.ceil(4.1) 返回 5
# cmp(x, y)             如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已廢棄 。使用 使用 (x>y)-(x<y) 替換。
# exp(x)	            返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045
# fabs(x)	            返回數字的絕對值,如math.fabs(-10) 返回10.0
# floor(x)	            返回數字的下舍整數,如math.floor(4.9)返回 4
# log(x)	            如math.log(math.e)返回1.0,math.log(100,10)返回2.0
# log10(x)	            返回以10為基數的x的對數,如math.log10(100)返回 2.0
# max(x1, x2,...)	    返回給定引數的最大值,引數可以為序列。
# min(x1, x2,...)	    返回給定引數的最小值,引數可以為序列。
# modf(x)	            返回x的整數部分與小數部分,兩部分的數值符號與x相同,整數部分以浮點型表示。
# pow(x, y)	x**y        運算後的值。
# round(x [,n])     	返回浮點數x的四捨五入值,如給出n值,則代表舍入到小數點後的位數。
# sqrt(x)	            返回數字x的平方根,數字可以為負數,返回型別為實數,如math.sqrt(4)返回 2+0j

a = -1
print(abs(a))


import math
a = 4.6
print(math.ceil(a))

#隨機數函式
# 函式	                描述
# choice(seq)	     從序列的元素中隨機挑選一個元素,比如random.choice(range(10)),從0到9中隨機挑選一個整數。
# randrange ([start,] stop [,step])	從指定範圍內,按指定基數遞增的集合中獲取一個隨機數,基數預設值為1
# random()	         隨機生成下一個實數,它在[0,1)範圍內。
# seed([x])	         改變隨機數生成器的種子seed。如果你不瞭解其原理,你不必特別去設定seed,Python會幫你選擇seed。
# shuffle(lst)	     將序列的所有元素隨機排序
# uniform(x, y)    	 隨機生成下一個實數,它在[x,y]範圍內。

import random

print(random.choice(range(10)))
#從1到100中隨機一個奇數
print(random.randrange(1,100,2))
print(random.random())

lists = [20, 16, 10, 5];
random.shuffle(lists)
print(lists)

print(random.uniform(1,10))

#常量 pi圓周率 e自然常數


#字串
#訪問字串中的值
a = "121ep;osd"
print(a[2])

print("更新字串"+a[:6] + "hhh")

#轉義字元
# 轉義字元	描述
# \(在行尾時)	續行符
# \\	反斜槓符號
# \'	單引號
# \"	雙引號
# \a	響鈴
# \b	退格(Backspace)
# \e	轉義
# \000	空
# \n	換行
# \v	縱向製表符
# \t	橫向製表符
# \r	回車
# \f	換頁
# \oyy	八進位制數,yy代表的字元,例如:\o12代表換行
# \xyy	十六進位制數,yy代表的字元,例如:\x0a代表換行
# \other	其它的字元以普通格式輸出


#字串運算子

# 操作符	          描述          	例項
# +	           字串連線	a + b 輸出結果: HelloPython
# *	           重複輸出字串	a*2 輸出結果:HelloHello
# []	     通過索引獲取字串中字元	a[1] 輸出結果 e
# [ : ]	   擷取字串中的一部分	a[1:4] 輸出結果 ell
# in	     成員運算子 - 如果字串中包含給定的字元返回 True	H in a 輸出結果 1
# not in	成員運算子 - 如果字串中不包含給定的字元返回 True	M not in a 輸出結果 1
# r/R	原始字串 - 原始字串:所有的字串都是直接按照字面的意思來使用,沒有轉義特殊或不能列印的字元。 原始字串除在字串的第一個引號前加上字母"r"(可以大小寫)以外,與普通字串有著幾乎完全相同的語法。	print r'\n' prints \n 和 print R'\n' prints \n
# %	              格式字串


print("my name %s , %d years old" % ('xiaoming',10))

#字串格式化符號
#     符號	    描述
#      %c 	 格式化字元及其ASCII碼
#      %s	 格式化字串
#      %d	 格式化整數
#      %u	 格式化無符號整型
#      %o	 格式化無符號八進位制數
#      %x	 格式化無符號十六進位制數
#      %X	 格式化無符號十六進位制數(大寫)
#      %f	 格式化浮點數字,可指定小數點後的精度
#      %e	 用科學計數法格式化浮點數
#      %E	 作用同%e,用科學計數法格式化浮點數
#      %g	 %f和%e的簡寫
#      %G	 %f 和 %E 的簡寫
#      %p	 用十六進位制數格式化變數的地址

#格式化操作符輔助指令
# 符號	功能
# *	定義寬度或者小數點精度
# -	用做左對齊
# +	在正數前面顯示加號( + )
# <sp>	在正數前面顯示空格
# #	在八進位制數前面顯示零('0'),在十六進位制前面顯示'0x'或者'0X'(取決於用的是'x'還是'X')
# 0	顯示的數字前面填充'0'而不是預設的空格
# %	'%%'輸出一個單一的'%'
# (var)	對映變數(字典引數)
# m.n.	m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)

#三引號
strs = """hhhhhh
hhhhhh
jjjjjj"""
print(strs)

#字串內建函式
# 序號	方法及描述
# 1
# capitalize()
# 將字串的第一個字元轉換為大寫
print(strs.capitalize())
# 2
# center(width, fillchar)
#
# 返回一個指定的寬度 width 居中的字串,fillchar 為填充的字元,預設為空格。
print(strs.center(40,'-'))
# 3
# count(str, beg= 0,end=len(string))
#
# 返回 str 在 string 裡面出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數
# 4
# decode(encoding='UTF-8',errors='strict')
#
# 使用指定編碼來解碼字串。預設編碼為字串編碼。
# 5
# encode(encoding='UTF-8',errors='strict')
#
# 以 encoding 指定的編碼格式編碼字串,如果出錯預設報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace'
# 6
# endswith(suffix, beg=0, end=len(string))
# 檢查字串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,如果是,返回 True,否則返回 False.
# 7
# expandtabs(tabsize=8)
#
# 把字串 string 中的 tab 符號轉為空格,tab 符號預設的空格數是 8 。
# 8
# find(str, beg=0 end=len(string))
#
# 檢測 str 是否包含在字串中 中,如果 beg 和 end 指定範圍,則檢查是否包含在指定範圍內,如果是返回開始的索引值,否則返回-1
# 9
# index(str, beg=0, end=len(string))
#
# 跟find()方法一樣,只不過如果str不在字串中會報一個異常.
# 10
# isalnum()
#
# 如果字串至少有一個字元並且所有字元都是字母或數字則返 回 True,否則返回 False
# 11
# isalpha()
#
# 如果字串至少有一個字元並且所有字元都是字母則返回 True, 否則返回 False
# 12
# isdigit()
#
# 如果字串只包含數字則返回 True 否則返回 False..
# 13
# islower()
#
# 如果字串中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是小寫,則返回 True,否則返回 False
# 14
# isnumeric()
#
# 如果字串中只包含數字字元,則返回 True,否則返回 False
# 15
# isspace()
#
# 如果字串中只包含空格,則返回 True,否則返回 False.
# 16
# istitle()
#
# 如果字串是標題化的(見 title())則返回 True,否則返回 False
# 17
# isupper()
#
# 如果字串中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是大寫,則返回 True,否則返回 False
# 18
# join(seq)
#
# 以指定字串作為分隔符,將 seq 中所有的元素(的字串表示)合併為一個新的字串
# 19
# len(string)
#
# 返回字串長度
# 20
# ljust(width[, fillchar])
#
# 返回一個原字串左對齊,並使用 fillchar 填充至長度 width 的新字串,fillchar 預設為空格。
# 21
# lower()
#
# 轉換字串中所有大寫字元為小寫.
# 22
# lstrip()
#
# 截掉字串左邊的空格
# 23
# maketrans()
#
# 建立字元對映的轉換表,對於接受兩個引數的最簡單的呼叫方式,第一個引數是字串,表示需要轉換的字元,第二個引數也是字串表示轉換的目標。
# 24
# max(str)
#
# 返回字串 str 中最大的字母。
# 25
# min(str)
#
# 返回字串 str 中最小的字母。
# 26
# replace(old, new [, max])
#
# 把 將字串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次。
# 27
# rfind(str, beg=0,end=len(string))
#
# 類似於 find()函式,不過是從右邊開始查詢.
# 28
# rindex( str, beg=0, end=len(string))
#
# 類似於 index(),不過是從右邊開始.
# 29
# rjust(width,[, fillchar])
#
# 返回一個原字串右對齊,並使用fillchar(預設空格)填充至長度 width 的新字串
# 30
# rstrip()
#
# 刪除字串字串末尾的空格.
# 31
# split(str="", num=string.count(str))
#
# num=string.count(str)) 以 str 為分隔符擷取字串,如果 num 有指定值,則僅擷取 num 個子字串
# 32
# splitlines( num=string.count('\n'))
#
# 按照行分隔,返回一個包含各行作為元素的列表,如果 num 指定則僅切片 num 個行.
# 33
# startswith(str, beg=0,end=len(string))
#
# 檢查字串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定範圍內檢查。
# 34
# strip([chars])
#
# 在字串上執行 lstrip()和 rstrip()
# 35
# swapcase()
#
# 將字串中大寫轉換為小寫,小寫轉換為大寫
# 36
# title()
#
# 返回"標題化"的字串,就是說所有單詞都是以大寫開始,其餘字母均為小寫(見 istitle())
# 37
# translate(table, deletechars="")
#
# 根據 str 給出的表(包含 256 個字元)轉換 string 的字元, 要過濾掉的字元放到 deletechars 引數中
# 38
# upper()
#
# 轉換字串中的小寫字母為大寫
# 39
# zfill (width)
#
# 返回長度為 width 的字串,原字串右對齊,前面填充0
# 40
# isdecimal()
#
# 檢查字串是否只包含十進位制字元,如果是返回 true,否則返回 false。


#列表

print('-------------------------')
lists = [1,2,3,4]
del lists[1]
print(lists)

#長度
print(len(lists))

#重複
print(lists*2)

#元素是否存在
print(3 in lists)

for x in lists:
    print(x)

print(max(lists))

tu = (1,2,3)
#將元祖轉換為列表

a = list(tu)
print(a)

#在列表末尾新增新的物件
a.append(3)
print(a)

#統計某個元素在列表中出現的次數
print(a.count(3))

#在列表末尾一次性追加另一個序列中的多個值(用新列表擴充套件原來的列表)
a.extend([4,5,6])
print(a)
#從列表中找出某個值第一個匹配項的索引位置
print(a.index(2))
#將物件插入列表
a.insert(0,2)
print(a)

# 移除列表中的一個元素(預設最後一個元素),並且返回該元素的值
print(a.pop(2))

# 移除列表中某個值的第一個匹配項
a.remove(2)
print(a)

# 反向列表中元素
a.reverse()
print(a)

# 對原列表進行排序
a.sort()
print(a)

# list.clear()
# 清空列表
print('----------------')
b = a.copy()
# 複製列表
print(b)

print('--------------------------------------')
print('--------------------------------------')
#空元祖
a = ()
#元組中只包含一個元素時,需要在元素後面新增逗號
a = (1,)
#---------------
#|元祖元素不能修改|
#---------------
#基本用法和list相同


#字典
#字典值可以沒有限制地取任何python物件,既可以是標準的物件,也可以是使用者定義的,但鍵不行。
# 兩個重要的點需要記住:
# 1)不允許同一個鍵出現兩次。建立時如果同一個鍵被賦值兩次,後一個值會被記住
# 鍵必須不可變,所以可以用數字,字串或元組充當,而用列表就不行

a = {1:'1',2:'2'}
print(len(a))
print(str(a))#輸出字典以可列印的字串表示。
print(type(a))#返回輸入的變數型別,如果變數是字典就返回字典型別。

#內建方法
# 序號	函式及描述
# 1	radiansdict.clear()
# 刪除字典內所有元素
# 2	radiansdict.copy()
# 返回一個字典的淺複製
# 3	radiansdict.fromkeys()
# 建立一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
# 4	radiansdict.get(key, default=None)
# 返回指定鍵的值,如果值不在字典中返回default值
# 5	key in dict
# 如果鍵在字典dict裡返回true,否則返回false
# 6	radiansdict.items()
# 以列表返回可遍歷的(鍵, 值) 元組陣列
# 7	radiansdict.keys()
# 以列表返回一個字典所有的鍵
# 8	radiansdict.setdefault(key, default=None)
# 和get()類似, 但如果鍵不存在於字典中,將會新增鍵並將值設為default
# 9	radiansdict.update(dict2)
# 把字典dict2的鍵/值對更新到dict裡
# 10	radiansdict.values()
# 以列表返回字典中的所有值


#集合
a = {1,2,3,4,5,4}
print(a)# 輸出集合,重複的元素被自動去掉

if (2 in a):
    print(2)

#集合運算
a = set('asdfgh')
b = set('213e212')

print(a - b) #ab差集
print(a | b) # a和b的並集
print(a & b) # a和b的交集
print(a ^ b)  # a和b中不同時存在的元素

#程式設計第一步
#斐波那契數列
a, b = 0, 1
while b < 20:
    print(b)
    a,b = b, a+b

# 第一行包含了一個複合賦值:變數 a 和 b 同時得到新值 0 和 1。最後一行再次使用了同樣的方法,可以看到,右邊的表示式會在賦值變動之前執行。右邊表示式的執行順序是從左往右的。

#關鍵字end可以用於將結果輸出到同一行,或者在輸出的末尾新增不同的字元

a, b = 0, 1
while b < 20:
    print(b,end=',')
    a,b = b, a+b