我的查询是编写一个函数,在给定的年数后,计算并计算具有给定初始余额和利率的银行账户的余额。假设每年的利息复杂化。
这是我到目前为止的代码,但我收到以下错误追溯
ShowDialog()
我不知道为什么。请帮忙。这是我的代码:
(most recent call last):
File "C:\Users\Brandon\Desktop\Assignment 5\Assignment 5 question 4.py", line 46, in <module>
Compount_Interest(B, I, N, T)
File "C:\Users\Brandon\Desktop\Assignment 5\Assignment 5 question 4.py", line 40, in Compount_Interest
print("The compound interest for %.InputT years is %.Cinterest" %Cinterest)
ValueError: unsupported format character 'I' (0x49) at index 28
答案 0 :(得分:0)
错误unsupported format character 'I'
表示您为字符串格式使用了错误的(未知的)转换类型。
通过使用插值运算符 %
(也称为字符串格式运算符),您可以访问预计也将是在设置运算符后命名。正如您在documentation中看到的那样,可以包含更多可选字符来完善运算符的行为/结果,但是最后一个(代表转换类型的字符)是必需的。
您的问题可以归结为以下代码,它将给出相同的错误:
>>> "%.InputT" % "foo"
ValueError: unsupported format character 'I' (0x49) at index 2
如您在此处看到的(索引2指向左侧字符串I
的引用),I
用作要使用的转换类型的标识符。这是因为.
被解释为最小字段宽度的可选 precision 。因此,下一个字符是 format字符。
如果要引用字符串,则可以简单地使用%s
(或其他导致特定转换类型的格式字符:int
与%d
以及float
与%f
)像这样:
>>> "%s got $%d, now he has $%f total." % ("Peter", 12, 12.55)
'Peter got $12, now he has $12.550000 total.'
但是您似乎想命名您的占位符。因此,您必须为此使用括号并通过字典对其进行引用:
>>> "%(name)s got $%(dollars)d" % {"name": "Maria", "dollars": 50}
'Maria got $50'
对于您的代码,还有另一个明显的问题。您在命名InputT
和Cinterest
,但只为InputT
提供了解决方案。我认为您想做这样的事情:
print("The compound interest for %(InputT)s years is %(Cinterest)s" % {
"InputT": InputT, "Cinterest": Cinterest})
# or without naming it explicitly
print("The compound interest for %s years is %s" % (InputT, Cinterest))
顺便说一句:您正在使用旧式字符串格式,方法是使用%
-运算符而不是new-style method .format()
,或者因为Python3.6甚至是f-strings,例如f"…"
。这可以使您的生活更加简单。