本文目錄一覽:
python 中的int函數怎麼用
int()是Python的一個內部函數
Python系統幫助裡面是這麼說的
[python] view plain copy
help(int)
Help on class int in module __builtin__:
class int(object)
| int(x[, base]) – integer
|
| Convert a string or number to an integer, if possible. A floating point
| argument will be truncated towards zero (this does not include a string
| representation of a floating point number!) When converting a string, use
| the optional base. It is an error to supply a base when converting a
| non-string. If base is zero, the proper base is guessed based on the
| string content. If the argument is outside the integer range a
| long object will be returned instead.
[python] view plain copy
int(12.0)
12
int()函數可以將一個數轉化為整數
[python] view plain copy
int(’12’,16)
18
這裡有兩個地方要注意:1)12要以字元串的形式進行輸入,如果是帶參數base的話
2)這裡並不是將12轉換為16進位的數,而是說12就是一個16進位的數,int()函數將其用十進位數表示,如下
[python] view plain copy
int(‘0xa’,16)
10
int(’10’,8)
8
python int()數字轉換問題
這個問題的原因是你用的np.zeros(count),它的默認數據類型是float類型的,而且不管你往這個np列表傳入什麼類型的值,它都是自動改為float類型。注意這個float類型可不是原生的浮點類型, 雖然「看」起來差不多, 但如果用type函數的話就能看出來區別了。
有兩種解決方法可以解決你的問題。
list = np.zeros(count) 改為 list = np.zeros(count,dtype=int)。 這樣就不會出現你所說的問題, 但對於你的這段程序用numpy有點大材小用了。 建議你用下面的方法。
list = np.zeros(count) 改為 list = [0 for i in range(count)]
然後第二張圖的錯誤提示正是因為numpy試圖把字元串自動轉換為浮點數,但顯然是不可能的。為了避免這個錯誤就必要用我上面的第二個解決方法才行了。
最後,你的代碼有可優化的空間,太多遍歷和判斷條件了。可能會很長,但可能會對你有一些啟發,如果沒有耐心的話,可以看最後一條就是最終完成的代碼。
slice函數處理邏輯過於複雜了。 你是想把如361變成[3,6,1]這樣的情況吧。那為何不使用list(str(361))呢,雖然最後的結果裡面的元素是字元串類型,但後面直接用int(i)的方式解決了。這樣的話,count函數都可以省略了。
看到slice函數下面的for遍歷語句,我明白了你的用意,就是為了計算各個位數相加的和,這樣的話,就連slice函數都沒必要了。直接下面代碼就可以了:
for i in str(n):
sum += int(i)
3.再繼續,發現又是slice和for循環,原來是要繼續把sum分開。直接list(str(sum))即可。
4.到最後了,我看到了很多條件判斷,總覺得條件判斷這麼寫,顯得有點羅嗦了點。可以把你這個條件判斷寫一個類似配置文件的對象,其實就是字典對象。 最終給你總結一下你的代碼就是下面這樣的:
#input直接用字元串類型就夠用了。然後去掉所有import
inputStr = input()
sum = 0
#這條賦值語句其實無所謂, 但對於理解代碼來說還是很重要的,反正也不影響性能,何樂而不為呢。
result = []
#下面的是類似配置文件的字典對象
convertDic = {‘1′:’yi’,’2′:’er’,’3′:’san’,’4′:’si’,’5′:’wu’,’6′:’liu’,’7′:’qi’,’8′:’ba’,’9′:’jiu’,’0′:’ling’}
#算出input的各個位相加的和
for i in inputStr:
sum += int(i)
#str也是可迭代的類型,所以通過map和lambda匿名函數把各個值變成相對應的拼音。
result = list(map(lambda x:convertDic[x], str(sum)))
print(result)
#去掉注釋和print語句,這段程序只用了7行,而且理解起來是不是還挺簡單的(除了最後一條)
#我相信你對於上面的語句不是很懂,裡面涉及了兩個看起來「高達上的東西」,但其實就是一種簡寫形式。
#map就是映射,簡單說就是一個循環,就是把每一個元素經過一個函數處理後再返回來的過程。
#lambda是一個匿名函數,沒有函數名,只能有一個表達式,且這個表達式就是返回值。它就是一個精簡版的函數而已。當然,map裡面也可以直接寫已定義好的函數名。
#最後我用比較通俗的代碼給你解釋一下上面那句語句的大致的工作流程。
#定義一個函數,相當於上面的匿名函數.
def convert(x):
return convertDic[x]
#然後遍歷sum,並把每個元素替換成相應的拼音。現在的sum是一個int類型,int類型是不能迭代的或者遍歷的,所以需要把int轉換成str類型。
#這裡講一點map和這個循環遍歷的區別,首先map會把已有的元素替換成經過函數處理的值。但這條循環是在一個空的list對象里添加數據,這是區別。當然,也可以寫替換數據的循環,但代碼量不是這2行了,會更多。如果要遍歷的話,這種寫法還是比較推薦的。
for i in str(sum):
result.append(convert(i))
#result.append(convertDic[x]) 也可以這樣寫,但為了解釋上面那條語句,所以這條注釋掉當給你的啟發。
#最後print就可以看到結果了,也就是說,我們把4條一句壓縮成了一天語句了。如果還是不了解的話,可以翻翻文檔什麼的,裡面會有一些例子可當參考。
print(result)
python中int表示什麼數據類型
Python int()函數用於將一個字元串或數字轉換為整型。
語法
以下是Python int()函數的語法:
class int(x, base=10)
參數
x–字元串或數字
base–進位數,默認十進位
返回值
返回整型數據
實例
以下展示了使用int()方法的實例:
int() # 不傳入參數時,得到結果0
int(3)
3
int(3.6)
3
int(’12’,16) # 如果是帶參數base的話,12要以字元串的形式進行輸入,12 為 16進位
18
int(‘0xa’,16)
10
int(’10’,8)
8
原創文章,作者:FW4GZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129786.html