iT邦幫忙

2

[自學Python紀錄] HackerRank 新手30天挑戰-Day05

Hi there! 我是嘟嘟~受到前輩啟發,想說可以紀錄一下自己練習的過程,小女子為程式超超菜鳥,此系列非教學文,僅為個人解題筆記,可能有錯誤或未補充詳盡之處,歡迎前輩們不吝指教!也歡迎正在自學的夥伴一起討論學習~


Day 5: Loops

輸入格式

一個整數n
限制: 2 ≦ n ≦ 20

輸出格式

印出前10個倍數(multiples),每個倍數n*i(1 ≦ i ≦ 10)都要印在新的一行,且必須印出n x i = result的格式

輸入樣本

2

輸出樣本

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20

  
首先從1~10重複印出,可以使用for迴圈;字串可以用+連結在一起,變數記得轉成字串。

我的解答1

n = int(input())
for i in range(1,11):  #range(1,11)代表數字1~10
    print(str(n) + ' x ' + str(i) + ' = ' + str(n*i)) #注意空格

輸入6

結果為

6 x 1 = 6
6 x 2 = 12
6 x 3 = 18
6 x 4 = 24
6 x 5 = 30
6 x 6 = 36
6 x 7 = 42
6 x 8 = 48
6 x 9 = 54
6 x 10 = 60

  


如果要在字串裡放入變數,可以使用字串格式化達到讓字串裡的變數隨著迴圈不斷改變的效果,在Python里總共有四種方式可以實現。

  1. 舊式字串格式化(%)
  2. 新式字串格式化(format())
  3. 字串插值(Formatted String Literal)->Python3.6之後
  4. 樣板字串(Template String)

我的解答2(%)

n = int(input())
for i in range(1,11):
    print('%d x %d = %d' % (n,i,n*i)) 
    #%d代表印出為十進位整數,並替換為後面%()元組內對應順序的變數

我的解答3(format())

n = int(input())
for i in range(1,11):
    print('{} x {} = {}'.format(n,i,n*i))
    #大括號{}會替換為後面元組內對應順序的變數,也可以使用名稱去指定順序

format和舊式格式化相差無幾,但主要是捨去%讓字串格式化使用上可以更加正常、規律,可讀性也相對提升。

我的解答4(f-string)

n = int(input())
for i in range(1,11):
    print(f'{n} x {i} = {n*i}')
    #f後面的字串內,放入大括號{}代表要替換的變數

新的字串插值語法相當強大的點是,可以在{}裡面嵌入任何 Python 的運算式,一般來說比較推薦這個方法。

我的解答5(Template String)

from string import Template #從內建模組string導入Template

n = int(input())
for i in range(1,11):
    t = Template('$n x $i = $c')
    print(t.substitute(n=n,i=n,c=n*i)) #名稱指定要替換的變數

樣板字串較能可以避免一些資訊安全上的問題,例如惡意使用者輸入變數來轉換成字串格式化,利用敏感性資料(例如:密碼、token、金鑰等)取出機密資料的時候。
  


補充:


尚未有邦友留言

立即登入留言