今天又是練習day,一連好幾天都是做練習題會不會很無聊啊,不過明天就不是了!但還沒進入爬蟲階段就是了,會重新回到基本觀念,講一個新的群集型態—字典。
大家小時候一定玩過這個終極密碼遊戲,主持人會讓你在1~100猜一個數字,假設正確數字是50,如果你猜70,主持人會改讓你在1~70猜一個,如果你猜20,主持人會再讓你在30~70猜一個,簡單來說就是主持人會幫你不斷縮小範圍直到被猜對為止。可以發現這個遊戲主要會分成三種情況,第一種是答對了就是遊戲結束,第二個是你猜小了,主持人就會幫你提高下限,另外一個當然就是你猜大了,上限就會被降低,所以在寫遊戲的時候,必須要準備四個變數:目前的上下限、正確答案以及猜的次數。好啦不要再廢話了,開始做題!
答案的部分我想讓電腦隨機生成,所以一開始必須要import random模組才可以使用裡面的函式~
import random
count, low, high = 0, 1, 100
ans = random.randint(low, high) # 在1~100內隨機生成正確答案
因為沒辦法預測使用者會要猜幾次,所以可以大膽地使用while True,只是一定要有中斷迴圈的機制(break),不然就會變成無限迴圈了。
while True:
print("請輸入", low, "~", high, "之間的數字: ")
guess = int(input()) # 使用者猜的數字
if guess < high and guess > low: # 數字要在範圍內
count = count + 1 # 次數+1
if guess > ans:
print("猜太大啦><")
high = guess # 上限變成使用者猜的數字
elif guess < ans:
print("猜小惹")
low = guess # 下限變成使用者猜的數字
else:
print("賓狗!!")
break # 結束這回合遊戲
else:
print("超出範圍了") # 顯示錯誤訊息
print("猜了", count, "次才答對")
費氏數列一個很特別的數列,它的特質是前兩項相加會等於第三項,像是1、1、2、3、5、8、13、...,可以用迴圈相加的方式一次次的算出每一個數字,另外在寫的時候,你可以在註解的地方寫好要做的事就不容易忘記。不過最有效率的寫法是用遞迴的方式做,但我只是想練習基本的while迴圈,不要鞭我吶..
i, n1, n2 = 0, 0, 1
while i < 10:
new = n1 + n2 # new = 3
print(new)
# want: n1, n2 = 2, 3
n1, n2 = n2, new
i = i + 1