Я продолжаю получать сообщение об ошибке: TypeError: ожидается целочисленный аргумент, получил float в Python 3.6.5

1

Я использую Python версии 3.6.5, загруженный с Python.org. Во время программирования я продолжаю получать ошибку TypeError: integer argument expected, got float. Я использую Python версии 3.6.5, выиграть 32 бит. Вот еще мой полный код (над которым нужно работать еще):

import pygame

pygame.init()

black = (0,0,0)
white = (255,255,255)
red = (255,0,0)
blue = (0,0,255)
sky_blue = (0,150,225)
green = (0,255,0)

displayWidth = 800

displayHeight = 600
#Final :- pygame.display.set_mode((1365, 1050))
gameDisplay = pygame.display.set_mode((displayWidth,displayHeight))
pygame.display.set_caption('Super Mario')
clock = pygame.time.Clock()

crashed = False

timeOut = False

Quit = False

#50,75
marioStanding = pygame.image.load('Super_Mario_Standing.jpg')
marioStanding = pygame.transform.scale(marioStanding, (displayWidth/40,displayHeight/8))

def Stand(x,y):
    gameDisplay.blit(marioStanding,(x,y))

x = (displayWidth * 0.45)
y = (displayHeight * 0.8)

while not crashed and not timeOut and not Quit:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            Quit = True

    print (event)

    gameDisplay.fill(sky_blue)
    Stand(x,y)

    pygame.display.update()
    clock.tick(24)

pygame.quit()
quit()

Я не получал никаких ошибок, прежде чем удалять высоту и ширину как 50,75 и заменять ее displayWidth/40, displayHeight/8, поэтому я предполагаю, что это имеет какое-то отношение к этому. Вот полная ошибка:

Traceback (most recent call last):
  File "C:\Users\Dell\Desktop\Super_Mario_Python3.6\Billionth_Pygame_Test.py", line 28, in <module>
    marioStanding = pygame.transform.scale(marioStanding, (displayWidth/40,displayHeight/8))
TypeError: integer argument expected, got float
  • 0
    Добро пожаловать в стек переполнения. Ваш пример может быть сокращен примерно до 4 строк кода. Это делает вопрос более понятным и повышает вероятность хорошего ответа. Посмотрите, как создать минимальный воспроизводимый пример .
Теги:
python-3.x

1 ответ

4
Лучший ответ

Добро пожаловать в python 3 с плавающей запятой. Вот:

pygame.transform.scale(marioStanding, (displayWidth/40,displayHeight/8))

ваши деления, даже если они сделаны между целыми числами, создают кортеж элементов float.

>>> 200/40
5.0

Используйте целочисленное деление, чтобы сохранить их как целые (это не относится к python 2), поэтому функция scale принимает их как аргументы.

>>> 200//40
5

как это:

pygame.transform.scale(marioStanding, (displayWidth//40,displayHeight//8))

Примечание: он также работает в python 2.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню