我正在嘗試生成羅馬數字的字典值,但我真的被困在設計我的 for 回圈中。在我的問題中,您有一個稱為值的輸入。對于輸入中的每個不同字母,它對應一個羅馬數字。在下面的示例中,A=1,B=5,C=10,D=50,E=100,F=500,G=1000 等。因此,輸入的字母就像羅馬數字一樣,I, V,X,L,C,D。我想創建一個函式,您可以在其中輸入任意長度的字串,每個不同的字母對應一個羅馬數字,該羅馬數字被放入字典
values='ABCDEFGHI'
dict={}
for i,letter in enumerate(values):
if i%2==1:
dict[letter]=5*10**(i)
else:
dict[letter]=1*10**i
print(dict)
我想出了一個模式,但不知道如何在 for 回圈中實作它: 這個鏈接顯示了一個包含我找到的模式的表格
我遇到了問題,因為在每次特定迭代中,您都需要從功率中減去越來越多的內容,而我不知道那是什么樣的。
uj5u.com熱心網友回復:
我實際上想出了這個解決方案,它也很有效,哈哈!謝謝mjsqu為您提供替代解決方案,這就是我所做的
def dictcreator(value):
dict={}
n=0
for i,letter in enumerate(reversed(value)):
if i%2==1:
dict[letter]=5*10**(i-n)
else:
dict[letter]=1*10**(i-n)
n=n 1
return dict
uj5u.com熱心網友回復:
感謝評論者,我認為沒有必要在功率中使用減法,只需注意功率增加得更慢,速度是 i 的一半,所以這有效:
romans={}
for i,letter in enumerate(values):
power=int(0.5*(i))
print(f"{i=}")
print(f"{power=}")
if i%2==1:
romans[letter]=5*10**(power)
else:
romans[letter]=1*10**(power)
>>> romans
{'A': 1, 'B': 5, 'C': 10, 'D': 50, 'E': 100, 'F': 500, 'G': 1000, 'H': 5000, 'I': 10000}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516925.html
標籤:Python循环
上一篇:將Id從視圖決議到控制器
