学python有快有一年之久了,刚学的时候喜欢在代码上加注释“”“注释的内容”“”,但是在很多时候IDEL都会提示有Syntax error,死活找不到哪里有错误,今天在第二次写pygame的小游戏的时候又遇到了这个问题,写完之后运行有语法错误,遂拿出以前敲过的代码拿来仔细的对比,代码完全一样,都是模仿树上的代码写的。最后一段代码一段代码的拷贝过来测试,有时又能正确的执行,测试多次之后发现了问题,就是这块的注释,前三个引号必须重新起一行,若是前三个引号跟在一段代码后面就会出现错误。
# -*- coding: cp936 -*-
import sys,pygame
from pygame.locals import *
from random import randrange
class Weight(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
#在画sprite是使用的图像和矩形
self.image = weight_image
self.rect = self.image.get_rect()'''
获取图片的大小位置
此处返回一个Rect实例(left,top.width,height)
'''
self.reset()
def reset(self):
'''
将秤砣移动到屏幕顶端的随机位置
'''
self.rect.top = -self.rect.height #刚好靠着边上
self.rect.centerx = randrange(screen_size[0])#在靠着顶部的随机位置
def update(self):
"""
更新秤砣,显示下一帧
"""
#往下移动1
self.rect.top += 1
if self.rect.top>=screen_size[1]:
self.reset()#如果到达最下方,再将它移动到最顶端
#初始化
pygame.init()
screen_size = 800,600
pygame.display.set_mode(screen_size,FULLSCREEN)#显示模式设置为全屏
pygame.mouse.set_visible(False)#隐藏鼠标
错误的提示如下:
将代码改为下面这种情况之后,只是一个小小的改动,编译顺利通过,程序可以执行
# -*- coding: cp936 -*-
import sys,pygame
from pygame.locals import *
from random import randrange
class Weight(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
#在画sprite是使用的图像和矩形
self.image = weight_image
self.rect = self.image.get_rect()
'''
获取图片的大小位置
此处返回一个Rect实例(left,top.width,height)
'''
self.reset()
def reset(self):
'''
将秤砣移动到屏幕顶端的随机位置
'''
self.rect.top = -self.rect.height #刚好靠着边上
self.rect.centerx = randrange(screen_size[0])#在靠着顶部的随机位置
def update(self):
"""
更新秤砣,显示下一帧
"""
#往下移动1
self.rect.top += 1
if self.rect.top>=screen_size[1]:
self.reset()#如果到达最下方,再将它移动到最顶端
#初始化
pygame.init()
screen_size = 800,600
pygame.display.set_mode(screen_size,FULLSCREEN)#显示模式设置为全屏
pygame.mouse.set_visible(False)#隐藏鼠标
还有最常见的错误就是indent的错误,学过python的朋友都知道python是严格遵守缩进的语言,缩进不对,肯定会出现错误,在网上还有朋友说tab和space不能混用,不过到现在我还没在windows 64/32位的IDEL上遇到过这种问题,以后遇到再来补充。如果的你的代码实在找不到错误,你也可以从这个方面考虑一下。