我想輸出如下所示的內容(每行 20 個專案,需要兩個變數,一個用于索引 i,另一個用于書名 bookname,在本例中為“Psalm”):
\hyperlink{Psalm1}{1} & \hyperlink{Psalm2}{2} & \hyperlink{Psalm3}{3} ...
使用 Python(簡化我的回圈,但足以顯示關鍵錯誤)我嘗試:
for indx in range(1, 150, 20):
line = r""" \\hline
\\hyperlink{{{bn}{i}}}{{{i}}} & \\hyperlink{{{bn}{i 1}}}{{{i 1}}} & \\hyperlink{{{bn}{i 2}}}{{{i 2}}} ...
""".format( i=indx, bn = bookname)
重新編碼以避免i 1關鍵錯誤的最佳方法是什么?
uj5u.com熱心網友回復:
嘗試使用f字串
for i in range(1, 150, 20):
print(f"\\hyperlinkPPsalm{i} & \\hyperlinkPsalm{i 1} & \\hyperlinkPsalm{i 2}")
uj5u.com熱心網友回復:
以下是\hyperlink{Psalm1}{1}使用不同方法生成字串 ( ) 的示例:
i = 1
# string concatenation
formatted = r"\hyperlink{Psalm" str(i) "}{" str(i) "}"
# old-style formatting
formatted = r"\hyperlink{Psalm%d}{%d}" % (i, i))
# str.format
formatted = r"\hyperlink{{Psalm{0}}}{{{0}}}".format(i)
# f-string
formatted = rf"\hyperlink{{Psalm{i}}}{{{i}}}"
對于這種特殊情況,我發現舊式格式更“干凈”,因為它不需要雙大括號。
要在每行中列印 20 個字串,您可以將生成器傳遞給str.join().
完整代碼:
stop = 150
step = 20
for i in range(1, stop 1, step):
print(
" & ".join(
r"\hyperlink{Psalm%d}{%d}" % (n, n)
for n in range(i, min(i step, stop 1))
)
)
或者你也可以使用“one-liner”:
stop = 150
step = 20
print(
"\n".join( # use " &\n".join(...) if you need trailing '&'
" & ".join(
r"\hyperlink{Psalm%d}{%d}" % (n, n)
for n in range(i, min(i step, stop 1))
)
for i in range(1, stop 1, step)
)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336437.html
上一篇:保持回圈直到正確的輸入
