1. 程式人生 > >Python進階系列連載(1)——那些容易被忽略的問題(上)

Python進階系列連載(1)——那些容易被忽略的問題(上)

本篇我們來聊一聊一些在入門部分容易被忽略的問題

int()強制轉換浮點數

在int()的強制轉換浮點數時候,不管是正數還是負數,只取整數部分。

注意:這裡不是向上或者向下取整,也不是四捨五入。

無限遞迴

還記得我們講的俄羅斯套娃麼,還記得數列求通項公式麼,都用到了遞迴的思想

如果不記得了,記得回看入門教程哦~

遞迴是為了將問題簡化為更小規模的同類型問題,最後加以解決。

但是有一種情況是遞迴時不斷呼叫自身,達到不了最簡單的情況(例如俄羅斯套娃一層層開啟到最內層的)

所以一直找不到遞迴的出口

我們定義了一個函式名為recurse

然後函式體中呼叫自身

當我們執行呼叫這個函式時,系統丟擲異常,意思是達到了最大的遞迴深度。

你可以認為系統設定了一個最大遞迴次數,如果超過這個次數還沒解決問題,則丟擲異常

簡答點說,就是:繞來繞去你怎麼還沒解決問題,你是要上天麼!

這種問題,我們要避免

字串是不可變的

在入門階段我們說過,字串和元組是不可變的資料型別,那字串的不可變體現在哪呢?

看個例子:

如果我想改名字,而且改的是姓【不要當真,只是為了舉例子,我爸應該看不到這篇文章的】

我把姓 '王' 改為 ' 方',我就做了如下修改: 

結果丟擲異常,提示不讓我修改,這體現了字串的不可變性,如果你執意要改呢?

可以這樣

聯合使用字串的切片和拼接完成~

一些遺漏的字串方法

upper()和lower()方法

upper()能將一個字串的字母全變成大寫,lower()與之相反:

find()方法

find()可以在字串中查詢子串是否存在:

如果找到,返回的是子串的起始索引位置,例如Hello是從字串索引0位置開始,空格是在索引5位置

當找不到子串時,返回-1,而不是丟擲異常

還可以限定查詢開始的索引位置:

我們知道,空格的索引是5,當我們從索引3開始往後找,能找到空格

當我們從索引7開始找,則返回沒找到,因為索引7已經在索引5之後了

注意操作的返回值

我們用a來 接盤 , 啊呸!接收來自print的返回值,發現a是NoneType,所以print是沒有返回值的

例如在列表中,你希望接收排序的結果,你可能會這樣寫:

發現這樣是沒有結果的!

你還能找出哪些容易犯錯的地方呢?

人生苦短,我選Python!