亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python/pygame 中的類型錯誤 - 浮點數而不是整數

python/pygame 中的類型錯誤 - 浮點數而不是整數

呼啦一陣風 2023-09-19 17:02:54
我在 python 和 pygame 中有一個小程序,但是當我運行它時,出現以下錯誤:pygame 1.9.6Hello from the pygame community. https://www.pygame.org/contribute.htmlTraceback (most recent call last):  File "main.py", line 31, in <module>    main()  File "main.py", line 25, in main    board.draw(WIN)  File "/home/ether/Desktop/checkersai/checker/board.py", line 42, in draw    piece.draw(win)  File "/home/ether/Desktop/checkersai/checker/piece.py", line 32, in draw    pygame.draw.circle(win, GREY, (self.x, self.y), radius + self.OUTLINE)TypeError: integer argument expected, got float這是錯誤所在的函數:def draw(self, win):        radius = SQUARE_SIZE//2 - self.PADDING        pygame.draw.circle(win, GREY, (self.x, self.y), radius + self.OUTLINE)        pygame.draw.circle(win, self.color, (self.x, self.y), radius)這些是我使用的變量:WIDTH, HEIGHT = 800,800ROWS, COLS = 8,8SQUARE_SIZE = WIDTH/COLS所以我不知道如何得到這個錯誤,也不知道我需要從哪里開始尋找錯誤。這是我的項目的完整代碼 https://pastebin.ubuntu.com/p/DHcRNT6948/
查看完整描述

1 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

即使您//在設置時使用了整數除法運算符()radius = SQUARE_SIZE//2 - self.PADDING,它也會返回一個浮點數;該運算符通常會返回一個 int,但如果您要除以一個 float,它仍然會返回一個 float。在你的例子中,你要除以一個浮點數,SQUARE_SIZE. 它是浮點數,因為SQUARE_SIZE = WIDTH/COLS使用常規除法運算符 ( /),它始終返回浮點數。

要解決您的問題,請執行以下操作:

SQUARE_SIZE = WIDTH//COLS  # SQUARE_SIZE is an int now

然而,數學上更準確的方法是使用浮點數,并僅在最后一刻舍入并轉換為 int:

radius = int(round((WIDTH/COLS) / 2.0 - self.PADDING))


查看完整回答
反對 回復 2023-09-19
  • 1 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號