iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
AI & Data

30天帶你從零基礎到Python爬蟲系列 第 13

[Day13] 迴圈小試身手 - 終極密碼 & 費氏數列

  • 分享至 

  • xImage
  •  

今天又是練習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

上一篇
[Day12] 迴圈小試身手 - 輸入密碼 & 紙折幾次會比101高
下一篇
[Day14] 像字典一樣查資料 - dictionary
系列文
30天帶你從零基礎到Python爬蟲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言