Python學習筆記——重點掌握int, float, str, bool四種數據類型

必須掌握的知識:
int表示整形;
float表示浮點型;
str表示字符串;
bool是布爾類型,有ture跟false兩個值;

附加知識:
s爲字符串,s.isdigit(),判定所有的字符串都是數字,爲真則返回ture,否則返回false;
isinstance, 內置函數,她有2個參數,第一個是帶確定類型的數據,第二個是指定一個數據類型,該BIF會根據兩個參數返回一個布爾類型的值,例如下圖:
在這裏插入圖片描述

動手題目來啦~~
寫一個程序,判斷給定年份是否爲閏年。(注意:請使用已學過的 BIF 進行靈活運用)

編程思路:
1、判定用戶輸入的是數字而不是字母,不然程序會崩潰,我也會崩潰的~~
2、閏年的計算方法是:
a. 普通年能被4整除且不能被100整除的爲閏年;(如2004年就是閏年,1901年不是閏年)
b.世紀年能被400整除的是閏年(如2000年是閏年,1900年不是閏年)

以下是實現代碼:

temp = input("請輸入一個年份:")
while not temp.isdigit(): #需要先判定用戶輸入的是個數字而不是字母
    temp = input("抱歉,您的輸入有誤,請輸入一個整數:")

year = int(temp) #將輸入的數字轉換爲整數
#if isinstance(year/400,int): 不能用這個語句實現,因爲python裏面的減法運算默認都是浮點型
if year/400 == int(year/400): #在python裏面浮點型跟整形的數字是可以同時進行對比運算的,這又是個坑~
    print(temp + "是閏年!")
else:
    if (year/4 == int(year/4)) and (year/100 != int(year/100)):
        print(temp + "是閏年!")
    else:
        print(temp + "不是閏年!")

關於代碼裏面的2行語句,有必要拎出來單獨說一下:
1、if isinstance(year/400,int):
這個語句本身就是個bug,因爲python裏面的減法默認都是浮點型,所以isinstance(year/400,int)返回的值永遠都是false,這是個坑啊~~,不信看下實際運行圖:
在這裏插入圖片描述
索性把加減乘除的所有可能全部試了一下,得到一下結果:
在這裏插入圖片描述
除了除法,其他運算只要數字不是浮點型,都是整形輸出!!!

2、if year/
400 == int(year/400):
在python裏面浮點型跟整形的數字是可以同時進行對比運算的,編程之初根本沒有想到這一點,所以纔有了isinstance的錯誤用法,又踩了一個坑啊~~
在這裏插入圖片描述

總結:
小白學習python,即使寫不出代碼,轉而做代碼搬運工的時候,遇到有疑問的語句還是要儘量釋疑,看能不能用自己想到的語句代替;
如果運行出現錯誤,多問爲什麼,多試幾次沒準就找到頭緒了,當然,也不要死磕~~~
雖然前期學習的進度會很慢很慢,但起碼是一步一個腳印嘛(這個算是自我安慰,學編程時沒少被家裏的老程序猿鄙視腦袋瓜子遲鈍~)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章