目錄
一、問題描述(尋找解決方法的同學直接看“標題二”)?
二、解決辦法
一、問題描述(尋找解決方法的同學直接看“標題二”)?
? ? ? ?在學習Python過程中遇到一個這樣的問題,也算是一個小BUG吧。題目大意是這樣的:創建列表,要求其中包含數字1-1000000(一百萬),并輸出所有數字。同時,使用min(),max(),sum()函數對這個列表進行處理。看到這個題目的時候,覺得這也太簡單了吧,直接range()和list()函數嵌套,該輸出輸出,該計算計算不就解決了嘛!但事實并非如此:
#made by Jeffery
#date 2020.10.16
numbers=list(range(1,1000001))
for number in numbers:print(number)
此情此景,我就想說一句“神奇!”,怎么會這樣呢?隨后我從以下幾個方面分析問題?:
1、是不是range()函數生成數字的范圍有限度,不能超過1百萬?
2、是不是list()函數轉換數字范圍的時候有范圍限制?
3、是不是什么東西不夠,不能存下這100萬個數字?
············
二、解決辦法
隨后,我在網上查閱了相關資料,起初發現大家編碼方式和我的不盡相同,但是似乎沒有遇到和我一樣的問題,所以我大膽猜測估計是什么東西存不下這么多數字才導致這個BUG產生的。經過我5min的調查后發現,是Pycharm軟件的控制臺周期緩沖區大小默認是1024KB,存不下這么多數(64位Python,數字“0”占用內存24個字節,數字“1”占用內存28個字節)如圖所示:
?所以,我們人為將“1024”改為“10240”,這樣就可以順利將所有展示,如圖所示:
而“標題一”中所提到的問題解決代碼如下:
#made by Jeffery
#10.17
numbers=list(range(1,1000001)) #創建一個包含數字1-1000000的列表
print(min(numbers))# 輸出列表中的最小值
print(max(numbers))#輸出列表中的最大值
print(sum(numbers))#對列表中的數字求和
結果如下: