2015-04-02 43 views
-2

嗨,大家要通過一些python代碼,並且我遇到了這一行(如果語句行)。在我查看語句後的's'類型之後,它仍然'str type'。int(s [0])%2 == 0)如何影響's'。首先對它進行切片,然後將獲得的值轉換爲int類型。代碼:這是's'的正確類型是什麼

values = [] 
for i in range(1000, 3001): 
    s = str(i) 
    if (int(s[0])%2==0): 
     #print type(s) #type str 
     values.append(s) 
print ",".join(values) 
+1

如果你沒有改變's',爲什麼's'的類型會改變? – 2015-04-02 03:55:51

+1

僅僅因爲你寫了'int(s [0])'並不意味着's'現在是一個int或者它的任何部分都是。這是一個字符串,因爲你用's = str(i)'鑄造了它。 – royhowie 2015-04-02 03:56:44

回答

2

當你寫int(x)將採取的x任何值,並將其轉換成integer。它不會更改變量x的類型。

這就是所謂的鑄造,你可以得到更多的信息​​

如果不包括有鑄造過程中,會產生錯誤,你正在嘗試做一個字符串值模運算,必將是非法行爲。

因此,您正在取s [0]所保留的值,將其轉換/轉換爲整數,然後執行模運算。

+0

感謝您的鏈接 – user2983686 2015-04-02 04:09:32

+0

Python沒有類型轉換:您不是簡單地將'x'視爲一個整數,而是使用'x'的值創建一個全新的對象作爲新對象的值。 – chepner 2015-04-02 04:14:19

+0

@chepner Casting是編程中使用的一個通用術語,我使用它。當然,我可以去系統級操作,這是在這裏執行,但沒有看到需要... – 2015-04-02 04:16:43

0

您的代碼將帶有一個數字,例如1782,並將其轉換爲字符串,以便您可以從數字中獲取第一個字符。因此,我們將從上述數字中獲得"1"。然後,它將轉換爲一個整數,以便它可以計算模塊%上的數字,如果該數字爲奇數則返回1,如果數字爲偶數則返回0。因此,if num == 0或僞代碼if num is even,我們繼續。

實際上,如果編號爲i的第一個數字是偶數,代碼將輸入if語句。

0

如果你沒有鑄造int(s [0]),你將無法檢查字符串s中的第一個字符是否是偶數(這是什麼int(s [0])%2 == 0是這樣做)。所以嘗試一下:取下int,你會得到一個類型錯誤。