Python 错误:应为整数参数,得到浮点值

Python 错误:应为整数参数,得到浮点值,python,integer,arguments,Python,Integer,Arguments,我刚刚试着从YouTube上复制一些游戏代码。运行代码后,会出现以下错误: 需要整数参数,得到浮点值 据我所知,问题在于w.addch(食物[0],食物[1],curses.ACS\u PI)行。怎么办 import random import curses s = curses.initscr() curses.curs_set(0) sh, sw = s.getmaxyx() w = curses.newwin(sh, sw, 0 , 0) w.keypad(1) w.timeout(10

我刚刚试着从YouTube上复制一些游戏代码。运行代码后,会出现以下错误:

需要整数参数,得到浮点值

据我所知,问题在于
w.addch(食物[0],食物[1],curses.ACS\u PI)
行。怎么办

import random
import curses

s = curses.initscr()
curses.curs_set(0)
sh, sw = s.getmaxyx()
w = curses.newwin(sh, sw, 0 , 0)
w.keypad(1)
w.timeout(100)

snk_x = sw/4
snk_y = sh/2
snake = [
    [snk_y, snk_x],
    [snk_y, snk_x - 1],
    [snk_y, snk_x - 2]
]

food = [sh/2,sw/2]
w.addch(food[0], food[1], curses.ACS_PI)

使用地板分区
/
代替普通分区
/
。在Python3中,后者总是导致浮点


w.addch
需要整数。

如果它是旧代码,那么它在Python2上就可以工作了

Python 2中的整数除法生成另一个整数

在Python3中,它生成一个浮点

您需要将除法的结果转换为整数(如果需要的话)


问题可能是需要整数参数,但得到了float。严肃地说,如果将一个数字除以2,则得到一个浮点(在Python3中——在Python2中,如果操作数都是整数,则返回一个整数).使用整数除法
5//2
ceil
/
floor
函数,从
math
module@abdusco
ceil
floor
返回
浮动
。不,它不会:
print(type(ceil(3/2))
按它应该的方式打印int。如果任何答案解决了您的问题,这是一个很好的做法,投票给他们,并接受最好的一个。后者还可以为您提供少量的代表奖金:)
snk_x = int(sw / 4)
snk_y = int(sh / 2)
food = [int(sh / 2), int(sw / 2)]