第一題:使用while循環輸入 1 2 3 4 5 6 8 9 10
# 使用while循環輸入 1 2 3 4 5 6 8 9 10
count = 0
while (True) :
count = count + 1
#判斷當count等于7的時候,返回循環最初,不執行下面的打印等語句
if count == 7:
continue
print (count)
#判斷當count等于10的時候,跳出循環。
if count == 10:
break
思路是設置一個初始值count,然后開始循環,自增1;
加if判斷語句,當count為7時使用continue跳過打印7;
當count為10時,使用break中斷和跳出循環。
敲的時候出了很多規范性的錯,
比如沒有使用英文的冒號,
沒有對應縮進區塊,
== 錯敲成了=,這兩者的區別,
前者是比較值,后者是直接賦值。
更優雅的寫法應該是while的同時將其中滿足跳出循環的條件也給上,節省代碼行數,也比較優雅易懂。
例如以下:
#計數初始為0
count = 0
#當count小于10時,進行循環,反之則是中止循環,不需要用到break
while ( count < 10 ) :
count = count + 1
#當count為7時使用continue跳過打印7;
if count == 7:
continue
print (count)
對比兩例可看出,有效代碼行數從8行節省到6行,關鍵是易讀性提高了。
第二題:求1-100的所有數的和
# 求1-100的所有數的和
# 求和,故除設置初始計數的count變量外,還應設置多一個sum和的變量
count = 0
sum = 0
# 注意,設置滿足的條件我最初設的是小于101,結果得數把101也算進去了,
# 排查后發現是count自增1,到count為99的時候再加1就是100了,條件設為小于100才是剛剛好。
while (count < 100):
#計數器自增1
count = count + 1
#和數和計數器相加
sum = sum + count
#循環中止的時候我們輸出結果,注意字符串只能和字符串拼接,所以sum要用str轉義
print (‘1-100的所有數之和為:‘+str(sum))
第三題 輸出 1-100 內的所有奇數
odd = 1
while (odd < 101):
print (odd)
#奇數的特質之一是從1開始,自身加2后的數同樣也是奇數
odd = odd + 2
如果換另一種思路,從奇數的另一個特質,被2除后都余1來輸出的話會怎么樣呢?
odd = 0
while (odd < 100):
odd = odd + 1
#取余來進行判斷,余數為1則輸出打印,不用對余數為0的情況再進行判斷。
if (odd % 2 == 1) :
print (odd)
注意,上面敲代碼的時候我縮進的時候混合使用了tab鍵和spaces鍵以致報錯。
所以python在對縮進規范這里要求挺嚴的,嗯,要優雅,不要慌亂。
第四題:輸出1-100內的所有偶數
# 輸出 1-100 內的所有偶數
even = 0
while (even < 100):
even = even + 1
#對even進行取余運算,等于0的則打印輸出even
if even % 2 == 0:
print (even)
這題與第三題是同類型的,不多作敘述。
第五題:求1-2+3-4+5 ... 99的所有數的和
# 求1-2+3-4+5 ... 99的所有數的和
# 計數器初始為0,和也初始為0
count = 0
sum = 0
while (count < 99):
count = count + 1
#當count是偶數時(取余為0)就被和相減
if count % 2 == 0:
sum = sum - count
#加上continue來控制它不再執行下面的語句,又周而復始進行下一次循環
continue
#反之,奇數時直接相加
sum = sum + count
#別忘了將得出的sum結果輸出給用戶,str轉義成字符串與提示拼接。
print (‘1-2+3-4+5...99的所有數的和為:‘+str(sum))
第六題:模擬用戶登錄(三次機會重試)
# 用戶登錄(三次機會重試)
# 這里題意比較含糊,實際上現在還是基礎階段,
# 老師這題的意思是大致讓你模擬出人機交互及認證三次
# 故定義用戶名和密碼變量如下:
username = ‘tiele‘
password = ‘ABCabc123‘
#認證計數器初始為3
count = 3
#開始三次認證循環
while (count > 0):
#開始人機交互,分別輸入用戶名和密碼
name = input ("請輸入用戶名:")
#需要給個pass讓用戶進行輸入交互
pass
passwd = input ("請輸入密碼:")
if username == name and password == passwd :
print ("你已成功登錄")
#成功登錄后當然要break跳出循環
break
else:
#輸錯機會減1并給出提示
count = count - 1
print ("用戶名或密碼錯誤,你還有"+str(count)+"次機會進行驗證。")
最初我做這題的時候是用了機會初始為0,增加到3則中止循環的方式,后來對照了一下同學的,感覺的確使用初始機會為3,然后能逐次-1并提示的思路人性化一點。
后來發覺有別的同學用的是我最初的0增到3的思路,直接提示登錄失敗,到3次時提示超過三次登錄失敗,請稍后重試,也是很符合常見的情境。
所以是感覺都可以。
至此,day1的作業就全部完成了。
2018-3-17
end