tala = int(input('Skrifaðu magn af pening-->'))
if tala >= 0:
fth = int(tala / 5000)
remains = tala % 5000
tth = int(remains / 2000)
remains = remains % 2000
th = int(remains / 1000)
remains = remains % 1000
fhr = int(remains / 500)
remains = remains % 500
hdr = int(remains / 100)
remains = remains % 100
fty = int(remains / 50)
remains = remains % 50
ten = int(remains / 10)
remains = remains % 10
fiv = int(remains / 5)
remains = remains % 5
one = int(remains / 1)
print(d[tala])
打印部分是 我不熟悉语法的问题的主要焦点,但计划是使用 dict 来避免使用大量 if 来告诉代码如果数字大于 5000 或大于2000 等。基本上我有这样的想法(无效的语法 ofc)
d = {}
##d[Value between 0 and 4] or d[value between 5 and 9] etc.
d[0-4] = ("That would be {0} Krónur.".format(one))
d[5-9] = ("That would be {1} Fimmkallar and {0} Krónur.".format(one,fiv))
d[10-49] = ("That would be {2} Tíkallar, {1} Fimmkallar and {0} Krónur.".format(one,fiv,ten))
d[50-99] = ("That would be {3} Fimmtíukallar, {2} Tíkallar, {1} Fimmkallar and {0} Krónur.".format(one,fiv,ten,fty))
如果您想知道这段代码在做什么,如果我说输入一个高于 5000 的值
它会将其拆分(有点像 ATM)到 5000 张钞票、2000 张钞票、1000 张钞票、500 张钞票、100 张硬币等的多少倍。
这是一个解决 % 符号使用的学校项目(它是为 C# 制作的,但我正在通过在 Python 中完成我的 C# 作业来学习 Python)
主要问题是:如果有一种方法可以使该字典样式起作用,我很想知道如何。 次要问题是:如果有更好的方法来做到这一点,我很想听听你的想法。如果我应该做它(或它的一部分),其他方式也不会伤害知道。
编辑:我找到了一个半功能解决方案,但它并不完全漂亮。然而,它比我的替代方案更具可读性,所以总比没有好,没有人有比这更好的主意吗?:
#Dictionary START
if tala < 5:
num = 0
elif tala < 10:
num = 1
elif tala < 50:
num = 2
elif tala < 100:
num = 3
d = {}
d[0] =("Það eru {0} Krónur.".format(one))
d[1] =("Það eru {1} Fimmkallar og {0} Krónur.".format(one,fiv))
...
#Dictionary END
print(d[num])