我正在制作一个代码,用于显示G.P的4个初始数字。使用此代码:
def progG(a1,q):
return float(a1), float(a1*q), float(a1*q**2), float(a1*q**3)
def main():
a1 = input("Informe o valor inicial de sua Progressão Geométrica: ")
q = input("Informe a razão de sua Progressão Geométrica: ")
print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %.f ." %(a1,q,(progG(a1,q)))
if __name__ == "__main__":
main()
当我把它放在Shell上运行时,它会让我遇到两个问题,但后来出现了这个错误:
Traceback (most recent call last):
File "C:\Users\Suzana Maria\Downloads\aula6_ex8.py", line 25, in <module>
main()
File "C:\Users\Suzana Maria\Downloads\aula6_ex8.py", line 23, in main
print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %.f ." %(a1,q,(progG(a1,q)))
TypeError: float argument required, not tuple
答案 0 :(得分:2)
问题是你的函数progG(a1,q)返回一个元组 - 四个值 - 不是浮点数,但你试图将它作为单个浮点数打印出来。
你可以尝试:
geometric_string = ", ".join(["%.f" % x for x in progG(a1, q)])
print"Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são:", geometric_string
答案 1 :(得分:1)
我不会说葡萄牙语(或者这是西班牙语?)但我尽力删除你的错误:
def progG(a1,q):
return float(a1), float(a1*q), float(a1*q**2), float(a1*q**3)
def main():
a1 = input("Informe o valor inicial de sua Progressão Geométrica: ")
q = input("Informe a razão de sua Progressão Geométrica: ")
print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: ." %(a1,q), (progG(a1,q))
if __name__ == "__main__":
main()
答案 2 :(得分:1)
问题是%.f
需要一个浮动,但是你给它四个浮点数,包含在一个元组中。
您可以使用%s
代替%.f
来解决此问题,因为%s
会占用任何内容:
print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %s ." %(a1,q,(progG(a1,q)))
输出类似于:
Os 4 primeiros elementos de uma P.G. de valor inicial 2 e razão 3 são: (2.0, 6.0, 18.0, 54.0) .
请注意,您无法控制元组中数字的格式化方式,也无法控制元组本身的格式。所以你得到的是2.0
而不是2
,并且围绕整个事情得到括号,依此类推。
如果你想要更多控制,你需要分两步格式化:首先为元组构建一个字符串,然后使用该字符串代替元组进行最终格式化。完全控制也意味着你必须做更多的工作,但它并不太糟糕:
g = ", ".join("%.f" % x for x in progG(a1, q))
print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %s ." %(a1,q,g)
现在:
Os 4 primeiros elementos de uma P.G. de valor inicial 2 e razão 3 são: 2, 6, 18, 54 .
这里的第一个技巧是在字符串上使用join
方法,它接受一系列字符串并将它们连接起来。例如,":".join([1, 2, 3, 4])
会为您提供字符串1:2:3:4
。第二个技巧是使用理解将元组的每个成员映射到不同的东西 - 在这种情况下,将每个float x
映射到字符串"%.f" % x
。