亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 f“” 字符串而不是 .format() 打印二進制數?

如何使用 f“” 字符串而不是 .format() 打印二進制數?

收到一只叮咚 2021-06-30 14:35:20
要將一些數字打印為二進制格式,我們只需使用該.format()方法,如下所示:# Binaryfor i in range(5+1):    print("{0:>2} in binary is {0:>08b}".format(i))0 in binary is 000000001 in binary is 000000012 in binary is 000000103 in binary is 000000114 in binary is 000001005 in binary is 00000101類似的是以其他格式(十六進制和八進制)打印,只需要將后面的大括號替換為我們想要打印的數字。但是有沒有辦法使用新f""字符串來替換.format()命令?我知道這可能看起來微不足道,但我在嘗試新功能時遇到了這個問題,除了f""使代碼更短且更具可讀性之外。for i in range(5+1):    print(f'{0:>2} in binary is {0:>08b}')# This prints out just 0s
查看完整描述

2 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

這是我的看法:

在舊.format()的 0 表示傳遞給格式函數的第一個元素。"{0:>2} in binary is {0:>08b}".format(i). 0 被使用兩次來訪問第一個變量兩次。另一種寫法是:"{:>2} in binary is {:>08b}".format(i,i)省略索引。

在新f''格式中,我們改為傳遞變量/表達式。


查看完整回答
反對 回復 2021-07-21
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

你的 f-string 應該有表達式而不是索引:

f'{i:>2} in binary is {i:>08b}'

0原始格式字符串中的任何地方都應替換為實際的第一個參數:在本例中為i.

警告

f 字符串中的表達式被計算兩次,但是format當您通過索引訪問它時,參數 to只被計算一次。這對于更復雜的表達式很重要。例如:

"{0:>2} in binary is {0:>08b}".format(i + 10)

這里添加i + 10只發生一次。另一方面

f"{i+10:>2} in binary is {i+10:>08b}"

加法兩次,因為它等價于

"{:>2} in binary is {:>08b}".format(i + 10, i + 10)

或者

"{0:>2} in binary is {1:>08b}".format(i + 10, i + 10)

解決方法是預先計算多次出現在 f 字符串中的表達式的結果:

j = i + 10
f"{j:>2} in binary is {j:>08b}"

現在j被評估了多次,但這只是一個簡單的參考。


查看完整回答
反對 回復 2021-07-21
  • 2 回答
  • 0 關注
  • 277 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號