size = int(input("Enter an odd number width: "))
for row in range(1, (size+1)/2, 1):
for character in range(1, size):
print("*"*character)
为什么它一直告诉我"浮动对象不能被解释为整数"?我知道它是因为(大小+ 1)/ 2,但我认为它不应该有所作为?
它应该创建一个看起来像这样的三角形:
*
***
*****
*******
*********
***********
*************
(行是宽度+ 1/2,输入的数字是星号的最大行,每行的增量也增加2(即1,3,5,7,9,13)。 / p>
答案 0 :(得分:0)
因为float对象不能解释为整数。使用整数除法:
(size + 1) // 2
否则它将导致浮点数(在Python 3上)
答案 1 :(得分:0)
因为(size+1)/2
理论上可以有一个小数部分,所以Python总是从它返回一个浮点数。 range
不接受浮点数,因为没有通用方式将其转换为整数而不会丢失信息。这些步骤都没有特殊情况下特定输入不会触发这些问题。
你不关心这些事情,因为你认为size
甚至是无效的输入。但是Python并不知道你不关心潜在的数据丢失,除非你告诉它 - 你可以这样做:
(size + 1) // 2
这将删除数字的小数部分,并仅提供整数部分(即向无穷大舍入)。