Python For循环获取错误,表示(奇数-奇数)/2是浮点
我正在尝试用奇数个星号(例如1,3,5)制作一个金字塔的函数 我认为这一结果将是:Python For循环获取错误,表示(奇数-奇数)/2是浮点,python,function,for-loop,Python,Function,For Loop,我正在尝试用奇数个星号(例如1,3,5)制作一个金字塔的函数 我认为这一结果将是: * *** ***** 相反,我得到一个错误,说 我不明白为什么5-1被认为是浮动的 我不明白为什么5-1被认为是浮动的 5-1不是浮点数,但(5-1)/2是浮点数。原因很简单:/除法运算符总是返回浮点,即使结果的小数部分是0 有关更多信息,请参阅 错误来自范围函数,该函数需要一个整数 我不明白为什么5-1被认为是浮动的 5-1不是浮点数,但(5-1)/2是浮点数。原因很简单:/除法运算符总是返回浮点,即使结
*
***
*****
相反,我得到一个错误,说
我不明白为什么5-1被认为是浮动的
我不明白为什么5-1被认为是浮动的
5-1
不是浮点数,但(5-1)/2
是浮点数。原因很简单:/
除法运算符总是返回浮点,即使结果的小数部分是0
有关更多信息,请参阅
错误来自范围函数,该函数需要一个整数
我不明白为什么5-1被认为是浮动的
5-1
不是浮点数,但(5-1)/2
是浮点数。原因很简单:/
除法运算符总是返回浮点,即使结果的小数部分是0
有关更多信息,请参阅
错误来自range
函数,该函数需要一个整数。range
不能进行浮点运算。像这样试试
def drawPyramid(base):
#makes variable for amount of asterisks that have to be drawn
starcounter = 1
for i in range(starcounter, base):
#calculates number of spaces needed and prints them
for i in range((base - starcounter + 1) // 2):
print(' ', end='')
#prints current amount of asterisks
for i in range(starcounter):
print('*', end='')
print('\n')
#increases amount of stars
starcounter += 2
drawPyramid(4)
范围
不能接受浮动。像这样试试
def drawPyramid(base):
#makes variable for amount of asterisks that have to be drawn
starcounter = 1
for i in range(starcounter, base):
#calculates number of spaces needed and prints them
for i in range((base - starcounter + 1) // 2):
print(' ', end='')
#prints current amount of asterisks
for i in range(starcounter):
print('*', end='')
print('\n')
#increases amount of stars
starcounter += 2
drawPyramid(4)
只需使用/
(整数除法)而不是/
(浮点除法),因为范围
需要整数:
只需使用/
(整数除法)而不是/
(浮点除法),因为范围
需要整数:
使用整数除法(/
)代替浮点除法(/
):
范围内i的((基本-起始计数器)//2)
使用整数除法(/
)代替浮点除法(/
):
范围内i的((基本-起始计数器)//2)
谢谢!为什么第四排有7个星号?函数不是打印星号然后添加2吗?@noobprogrammer,因为第一个循环以1开始,以5结束,这意味着它运行了4次。尝试使用drawPyramid(4)
以获得预期的输出。我尝试了,但这弄乱了空格-第一列只有1个空格,第二列没有空格。在第二个循环中再添加1个值:`for I in range((base-starcounter+1)//2)``我如何使其完全符合参数?我现在必须让它与输入一起工作。我尝试了drawPyramid(baseInput-1)
,因为drawPyramid(4)的基长为5(因此输入5会使基长为5的金字塔),但当我使baseInput=3时,基长仅为1。如果这很难理解,很抱歉。谢谢!为什么第四排有7个星号?函数不是打印星号然后添加2吗?@noobprogrammer,因为第一个循环以1开始,以5结束,这意味着它运行了4次。尝试使用drawPyramid(4)
以获得预期的输出。我尝试了,但这弄乱了空格-第一列只有1个空格,第二列没有空格。在第二个循环中再添加1个值:`for I in range((base-starcounter+1)//2)``我如何使其完全符合参数?我现在必须让它与输入一起工作。我尝试了drawPyramid(baseInput-1)
,因为drawPyramid(4)的基长为5(因此输入5会使基长为5的金字塔),但当我使baseInput=3时,基长仅为1。很抱歉,这很难理解。
*
***
*****
for i in range((base - starcounter) // 2):