大家早安,今天一樣是練習Day,要來練習兩個簡單的題目,分別是:確認座標位置和商數取到小數後10位,那就廢話不多說直接開始吧!
先宣告三個變數,分別是迴圈的初始變數以及座標xy軸,再將指令放進去。
i, x, y = 0, 0, 0
instructions = "UDLRUUUR"
接下來就要開始跑迴圈了,看看執行完這一串指令最終的座標會落在哪。U是向上,也就是Y軸要+1、D是向下,Y-1、R是往右,X+1、L是往左,X-1。
while i < len(instructions):
if instructions[i] == "U":
y = y + 1
elif instructions[i] == "D":
y = y - 1
elif instructions[i] == "R":
x = x + 1
elif instructions[i] == "L":
x = x - 1
i = i + 1
print(x, y)
最後L條件的部分其實也可以寫else,畢竟是最後一種情況,但我想說全部列出來可能可讀性會好一些,另外你自己也可以試試用for迴圈寫這題!
這題或許你會想說明明就有相對應的函式可以馬上做到,但!這只是要拿來練習之前講到過的,不是真的想求小數位數啦~
一開始一樣先設定三個變數,一個是初始變數,剩下兩個就是除數和被除數,另外再設定一個digit,給它的值就是我要取的小數位數,ans的部分先把它寫好整數的0.,記得要包在字串裡面,待會每一個位數都會以字串的形式一個一個加進去。
i, a, b = 0, 2, 7
digit = 10
ans = "0."
那因為除法已經到小數的部分,被除數的地方要補0,既然是補0也就是10,所以迴圈一開始就先把被除數a10,第二步就是取商數了,運算子//就是直接取商數,再來第三步就是要算出餘數,如果要取餘數就是用運算子%,這樣就可以進入下一輪再*10再取商,總共跑十次就ok啦。
while i < digit:
a10 = a * 10
ans = ans + str(a10 // b)
a = a10 % b
i = i + 1
print(ans)