python學習筆記

18. random()的用法python

#隨機整數:
>>> import random
>>> random.randint(0,99)
21

#隨機選取0到100間的偶數:
>>> import random
>>> random.randrange(0, 101, 2)
42

#隨機浮點數:
>>> import random
>>> random.random() 
0.85415370477785668
>>> random.uniform(1, 10)
5.4221167969800881

#隨機字符:
>>> import random
>>> random.choice('abcdefg&#%^*f')
'd'

#洗牌:
>>> import random
>>> items = [1, 2, 3, 4, 5, 6]
>>> random.shuffle(items)
>>> items
[3, 2, 5, 6, 4, 1]

17.lambda函數git

def add(a,b):
    x = a+b
    print(x)
add(1,3)

g = lambda a,b :a+b
print(g(1,2))

16.兩個變量值互換數組

a,b = b,a

15. insert()函數的使用閉包

list.insert('索引位置','要插入的內容’) 
#要注意索引位置是指在對應的位置以後,而不是插入之後充當的位置。

14. 在循環外使用elsedom

今天在練習一個題目:求100以內的素數。,我寫的代碼以下:函數

for i in range(1,100):
    for k in range(2,i):
        if i % k == 0:
            pass
        else:
            print(i)

輸出的結果和個人期待截然不同,分析以後發如今if那裏,每出現一次能整除i的狀況,函數都會把i輸出一遍,從而致使了錯誤。後來查看了答案,發現是這麼寫的:學習

for i in range(1,100):
    for k in range(2,i):
        if i % k == 0:
            break
    else:
        print(i)

區別在於答案使用了break,奇怪的是else語句出如今了if以外,查詢資料得知:這種寫法表示若是if循環中出現了符合條件的狀況,則直接跳出終止循環,若是走完但尚未符合條件的出現,則執行else的語句。參考 Python——在循環外使用elsespa

13. 如何反向一個列表中的元素?有三種思路:.net

a = [1,2,3]
a.reverse() #第一種方法,列表直接反向
a.sort(reverse = True) #第二種方法,使用sort方法
a[::-1] #第三種方法,也是最高級的一種寫法,使用切片。表示「從倒數第一個開始往前數」 若是是a[:]的話則表示從正數第一個到最後一個。

12.如何將一個字符串所有統一爲大寫或者小寫?code

week = input('請輸入星期幾:').upper()  #這樣能夠將輸入的星期幾所有統一爲大寫,方便後面作比較

11.如何將一個元素都是整數的列表作所有加和處理?

直接用sum(列表名)便可:

[100.0, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625]
print(sum(s))
  1. 判斷一個字符串是不是字母、數字、空格

isalpha()/isdigit()/isspace這些函數來實現。

test = input('輸入一個字符串:')
letter =0
digit =0
space = 0
i = 0
for i in range(0,len(test)):
    if test[i].isalpha():
        letter += 1
    elif test[i].isdigit():
        digit += 1
    elif test[i].isspace():
        space += 1
    i += 1
print(letter,digit,space)

9.int形式的數字,能夠經過用str()的方式處理成字符串,從而用索引獲取到指定位置的數字。

x = 234
print(x[0]) #會報錯--TypeError: 'int' object is not subscriptable
s = str(x)
print(s[0])

這個點出如今「打印出全部的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數自己。例如:153是一個"水仙花數",由於153=1的三次方+5的三次方+3的三次方。」這道題中。

8.列表的截取

對於列表a,a[:]表示的意思是從a的第一個到最後一個元素的合集,相似的,a[1:]則表示從第二個開始到最後的元素造成的列表。

# 若是要把列表a中的元素所有複製到b,代碼以下
a = [1,2,3,4]
b = []
b = a[:]
print(b)

7.python中 sort()函數的使用

sort()函數是用來比較一個元組中元素大小的,須要注意的是,在實踐中發現不能直接print(a.sort()),而只能先進行a.sort(),而後再print(a)
另外sort()有一個參數reverse=True,能夠將數組實現從大到小的排了。

a = [int(input('請輸入整數1:')),int(input('請輸入整數2:')),int(input('請輸入整數3:'))]

print(a)
a.sort()
print(a)

6.函數的閉包
相似於if的嵌套,能夠理解爲函數的嵌套:當內部的函數引用了外部函數的參數的時候,咱們認爲就造成了閉包。同時,閉包要求外部函數的返回值是內部函數的函數名。
好處是須要調用的參數變少,適用於有參數不變、有參數變化的狀況。(好比ax+b = y 假設a/b不變,而只有x須要變化)


def func1(a):
    def func2(b):
        return  a+b
    return func2

x = func1(5)
print(x(4))

5.函數做用域

若是函數外和函數內都各自有一個重名的變量,那麼函數內的變量複製只能影響到函數內部,而在函數外部仍是由函數外部的變量主導。
但若是確實想讓函數內部的變量賦值影響全局的話,那麼能夠在內部的變量賦值前增長global var的寫法。好比:

var1 = 123

def func():
    global var1
    var1 = 456
    print(var1)

func()

4. 函數的可變長參數

定義一個函數,默認參數都是必須的,但若是還但願增長非必須(沒有寫也不會報錯)的參數的話,能夠在參數前面加「*」,好比:

def func(lenght,* height):
    
    return

其中lenght是必須的,而height則是非必須的。

3.兩個函數之間的參數傳遞

以下。假設要把func2的結果傳遞給func1做爲參數,那麼關鍵是在func2的最後面加上func1()函數,這樣就能夠把func2的結果直接傳遞給func1繼續運行了。

固然,在這種狀況下,func1產生的結果也能夠再回來被func2直接調用。

def func1():

    return

def func2():

    return name
    func1(name)

————————————————————————————————
# 代碼實例
import re
def find_item(hero):
    with open('sanguo.text') as f:
        data = f.read().strip().replace('\n','')
        name_num = len(re.findall(hero,data))

    return name_num


with open('name.text') as f:
    names = f.read().split('|')
    for name in names:
        name_num = find_item(name)
        print(' %s 出現的次數是 %s 次' %(name,name_num))

1.用變量替換字符串的內容:

Chinese_zodiac = '鼠牛虎兔龍蛇馬羊猴雞狗豬'

for year in range(2000,2018):
    print('%s 年是 %s 年' %(year,Chinese_zodiac[year % 12]))

學習要點:
a. 用變量替換字符串內容須要用%s來實現,最後跟上 %()來做爲變量的來源;
b. 字符串也能夠像數組那樣,用索引值來指定某一部分;
c. year % 12表示的是年份除以12獲得的餘數;

2.Python--read()和readline()以及readlines()用法區別

# 試驗材料
諸葛亮|關羽|劉備|曹操|孫權|關羽|張飛|呂布|周瑜|趙雲|龐統|司馬懿|黃忠|馬超

.read() 每次讀取整個文件,它一般用於將文件內容放到一個字符串變量中

.readlines() 一次讀取整個文件(相似於 .read()

.readlines() 自動將文件內容分析成一個行的列表,該列表能夠由 Python 的 for ... in ... 結構進行處理.

.readline() 每次只讀取一行,一般比 .readlines() 慢得多。僅當沒有足夠內存能夠一次讀取整個文件時,才應該使用 .readline()。

相關文章
相關標籤/搜索