案例要求
土財主巴依老爺叫阿凡提幫他干活,每個月給他200元。阿凡提想了想,提議說:“第一天給我1毛錢,第二天給我2毛錢,第三天給我4毛錢,以後每天是前一天的2倍,一個月給30天。”財主一聽,當即答應。不到半個月,巴依財主大呼上當,叫苦不迭,最終欠下阿凡提一大筆錢。試計算一下阿凡提一個月可以拿多少錢。
功能要求
編寫一個控制台應用程序,計算阿凡提每天應得到多少錢。
程序分析
第一天1毛錢,第二天2毛錢,第三天4毛錢,以後每天是前一天的2倍,使用可以的除天數和錢數的對應關系:
每天應得的錢 = 0.1 × 2(天數 -1)
要得出一個月30天每天應得到的錢,需要重復計算30次。
實例代碼
for day in range(1, 31):
money = 0.1 * 2 ** (day - 1)
print(day, money)
運行結果
知識說明
程序中的range表達的是在一定范圍內的意思,其語法格式如下:
range([start,] end [,step])
start:范圍的起點,是循環開始的地方。可省略不寫,若省略,則默認值為0。例如:range(5)等價於range(0, 5)。
end:范圍的終點,是循環結束的地方。不可省略,終點不包含end的值。例如:range(0, 5)的值為[0, 1, 2, 3, 4]。
step:范圍的步長,可以省略,若省略,則默認步長為1。例如,range(0, 5, 3)的值為[0, 3]。
功能要求
編寫一個控制台應用程序,計算阿凡提計一個月應得到的錢。
要累計計算一個月30天的總金額,就需要連續累加從第1天到第30天金額之和。
實例代碼
total = 0
for day in range(1, 31):
money = 0.1 * 2 ** (day - 1)
total += money
print("總金額:", total)
運行結果
知識說明
注意:
創建一個新變量total代表金額之和。
total += money:等價於total = total + money
功能要求
假設巴依財主的財產總共只有800萬元,當支付給阿凡提的錢超過800萬元時循環結束。輸出在第幾天的時候支付給阿凡提的錢超過800萬元。
實例代碼
total = 0
for day in range(1, 31):
money = 0.1 * 2 ** (day - 1)
total += money
if total >= 8000000:
print("經歷天數:", day, "總金額:", total)
break
運行結果
知識說明
控制循環,Python提供了break和continue兩個方法
break:經常和if條件判斷搭配使用,用於處理滿足某種條件時結束循環的情況。如果嵌套了多層循環,只結束最近的一層循環。
功能要求
編寫一個控制台應用程序,輸出0~4之間除2之外的整數。
實例代碼
for i in range(5):
if i == 2:
continue
print("i的值為:", i)
運行結果
知識說明
continue:也常與if條件判斷搭配使用,用於處理滿足某種條件的情況下,忽略循環體後面的代碼,直接進入下一輪循環。如果嵌套了多層循環,則只忽略最近的一層循環體後面的代碼。