使用for循环从星号中绘制一个三角形

时间:2014-03-25 03:56:39

标签: python geometry python-idle

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>

2 个答案:

答案 0 :(得分:0)

因为float对象不能解释为整数。使用整数除法:

(size + 1) // 2

否则它将导致浮点数(在Python 3上)

答案 1 :(得分:0)

因为(size+1)/2 理论上可以有一个小数部分,所以Python总是从它返回一个浮点数。 range不接受浮点数,因为没有通用方式将其转换为整数而不会丢失信息。这些步骤都没有特殊情况下特定输入不会触发这些问题。

你不关心这些事情,因为你认为size甚至是无效的输入。但是Python并不知道你不关心潜在的数据丢失,除非你告诉它 - 你可以这样做:

(size + 1) // 2

这将删除数字的小数部分,并仅提供整数部分(即向无穷大舍入)。