Eurecka3 2022-07-10 10:49 采纳率: 33.3%
浏览 20
已结题

pythonfor循环的缩进错误

源程序:

#导入各项模块
import pygame
import sys
import easygui
import random
import pyautogui

#初始化各项模块
pygame.init()   

#定义函数
def tc1(x):
    tc = pyautogui.prompt(text=x,title="提示框-Small Game",default="")
    print(tc)
    while True:
        if tc == "确定" or tc == "是":
            pyautogui.alert(text='期待您的下次游玩', title='再见')
            sys.exit()
        elif tc == "不确定" or tc == "不退出":
            break
        elif tc == "":
            break
        else:
            pyautogui.alert(text="我不了解您的意思,请重新输入",title="提示框-Small Game")
            easygui.msgbox("我不了解您的意思,请重新输入")
            tc = pyautogui.prompt(text=x,title="提示框-Small Game",default="")
            print(tc)
def b(x,y):
    screen.blit(x,y)
    pygame.display.flip()

#导入各项素材
bz_1 = pygame.image.load("bz_1.png")     #5120*2880
bz_2 = pygame.image.load("bz_2.png")     #5120*2880
bz_3 = pygame.image.load("bz_3.png")     #5120*2880
bz_4 = pygame.image.load("bz_4.png")     #5120*2880
bz_5 = pygame.image.load("bz_5.png")     #5120*2880
bz_6 = pygame.image.load("bz_6.png")     #5120*2880
bz_7 = pygame.image.load("bz_7.png")     #5120*2880
bz_8 = pygame.image.load("bz_8.png")     #5120*2880
bz_9 = pygame.image.load("bz_9.png")     #5120*2880
bz_10 = pygame.image.load("bz_10.png")   #5120*2880
button = pygame.image.load("button.png") #170#70
button_csz = pygame.image.load("button_csz.png")  #267*111
x_1 = pygame.transform.scale(bz_1,(1800,980))

#用户GUI
while True:
    xz_1 = pyautogui.confirm(text='请选择',title='小游戏-Small Game',buttons=['游戏说明','开始游戏','关于我们','退出程序'])
    print(xz_1)
    if xz_1 == "开始游戏":
        screen = pygame.display.set_mode((1800,980))
        b(x_1,(0,0))
        b(button_csz,(100,100))
        pygame.display.set_caption("游戏选择")
        while True:
            pygame.init()
            for event in pygame.event.get(): 
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()
                elif event.type == pygame.MOUSEBUTTONDOWN:
                    x1 = event.pos[0]
                    y1 = event.pos[1]
                    if 100 <= x1 <= 367 and 100 <= y1 <= 211:
                        pygame.quit()
                        k = easygui.enterbox("是否开始游玩《猜数字》?")
                        print(k)
                        if k == "是" or k =="开始":
                            x = int(easygui.enterbox("请输入一个整数作为起始值"))
                            print(x)
                            y = int(easygui.enterbox("请输入一个整数作为结束值"))
                            print(y)
                            while True:
                                if x > y:
                                    easygui.msgbox("起始值不能大于结束值")
                                    x = int(easygui.enterbox("请输入一个整数作为起始值"))
                                    print(x)
                                    y = int(easygui.enterbox("请输入一个整数作为结束值"))
                                    print(y)
                                elif x == y:
                                    easygui.msgbox("起始值不能等于结束值")
                                    x = int(easygui.enterbox("请输入一个整数作为起始值"))
                                    print(x)
                                    y = int(easygui.enterbox("请输入一个整数作为结束值"))
                                    print(y)
                                elif x < 0:
                                    easygui.msgbox("起始值不能为负数")
                                    x = int(easygui.enterbox("请输入一个整数作为起始值"))
                                    print(x)
                                    y = int(easygui.enterbox("请输入一个整数作为结束值"))
                                    print(y)
                                elif y < 0:
                                    easygui.msgbox("结束值不能为负数")
                                    x = int(easygui.enterbox("请输入一个整数作为起始值"))
                                    print(x)
                                    y = int(easygui.enterbox("请输入一个整数作为结束值"))
                                    print(y)
                                else:
                                    break
                                break
                            else:
                                break
                        elif k == "否" or k == "不开始":
                            tc1("您确定要退出《猜数字》吗?")
                            break
                        elif k == None:
                            pass
                        else:
                            easygui.msgbox("我不了解您的意思,请重新输入")
                            k = easygui.enterbox("是否开始游玩《猜数字》?")
                            print(k)
                    else:
                        pass
                    pass
                elif event.type == pygame.KEYDOWN:
                    if event.key == K_ESCAPE:
                        sys.exit()
            break
        elif xz_1 == "游戏说明":
            ts_2 = pyautogui.alert(text="正在加班开发中......",title="警告",button="好的")
            print(ts_2)
        elif xz_1 == "关于我们":
            ts_3 = pyautogui.alert(text="正在加班开发中......",title="警告",button="好的")
            print(ts_3)
        elif xz_1 == "退出程序":
            tc1("您确定要退出程序吗?")
        elif xz_1 == None:
            sys.exit()
#猜数字程序
if k == "是" or k =="开始":
    xt = random.randint(x,y)
    x1 = str(x)
    y1 = str(y)
    hd = pyautogui.prompt(text="请输入"+x1+"-"+y1+"的整数",title="提示框-Small Game",default="请输入你的答案")
    if hd == "请输入你的答案":
         hd = pyautogui.prompt(text="请输入"+x1+"-"+y1+"的整数",title="提示框-Small Game",default="请输入你的答案")
    elif hd == xt:
        pyautogui.alert("恭喜,猜对了!", title="结果")
    elif hd > xt:
        pyautogui.alert("您的数字过大,请重新输入。", title="结果")
        hd = int(input("请输入"+x1+"-"+y1+"的整数"))
    elif hd < xt:
        pyautogui.alert("您的数字过小,请重新输入。", title="结果")
        hd = int(input("请输入"+x1+"-"+y1+"的整数"))
    elif hd < x:
        pyautogui.alert("请不要超出范围,请重新输入。", title="结果")
        hd = int(input("请输入"+x1+"-"+y1+"的整数"))
    elif hd > y:
        pyautogui.alert("请不要超出范围,请重新输入。", title="结果")
        hd = int(input("请输入"+x1+"-"+y1+"的整数"))
                
            
'''sjs = random.randint(x,y)
hd = int(input("请输入1-5的随机整数"))

while True:
    if hd == sjs:
        print("恭喜,答对了")
        hd2 = input("是否再玩一遍")
        if hd2 == "是":
            sjs = random.randint(x,y)
            hd = int(input("请输入1-5的随机整数"))
        elif hd2 == "否":
            break
    else:
        if hd > sjs:
            print("")
        print("你答错了")
        hd = int(input("请输入1-5的随机整数"))'''


问题相关代码

while True:
    xz_1 = pyautogui.confirm(text='请选择',title='小游戏-Small Game',buttons=['游戏说明','开始游戏','关于我们','退出程序'])
    print(xz_1)
    if xz_1 == "开始游戏":
        screen = pygame.display.set_mode((1800,980))
        b(x_1,(0,0))
        b(button_csz,(100,100))
        pygame.display.set_caption("游戏选择")
        while True:
            pygame.init()
            for event in pygame.event.get(): 
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()
                elif event.type == pygame.MOUSEBUTTONDOWN:
                    x1 = event.pos[0]
                    y1 = event.pos[1]
                    if 100 <= x1 <= 367 and 100 <= y1 <= 211:
                        pygame.quit()
                        k = easygui.enterbox("是否开始游玩《猜数字》?")
                        print(k)
                        if k == "是" or k =="开始":
                            x = int(easygui.enterbox("请输入一个整数作为起始值"))
                            print(x)
                            y = int(easygui.enterbox("请输入一个整数作为结束值"))
                            print(y)
                            while True:
                                if x > y:
                                    easygui.msgbox("起始值不能大于结束值")
                                    x = int(easygui.enterbox("请输入一个整数作为起始值"))
                                    print(x)
                                    y = int(easygui.enterbox("请输入一个整数作为结束值"))
                                    print(y)
                                elif x == y:
                                    easygui.msgbox("起始值不能等于结束值")
                                    x = int(easygui.enterbox("请输入一个整数作为起始值"))
                                    print(x)
                                    y = int(easygui.enterbox("请输入一个整数作为结束值"))
                                    print(y)
                                elif x < 0:
                                    easygui.msgbox("起始值不能为负数")
                                    x = int(easygui.enterbox("请输入一个整数作为起始值"))
                                    print(x)
                                    y = int(easygui.enterbox("请输入一个整数作为结束值"))
                                    print(y)
                                elif y < 0:
                                    easygui.msgbox("结束值不能为负数")
                                    x = int(easygui.enterbox("请输入一个整数作为起始值"))
                                    print(x)
                                    y = int(easygui.enterbox("请输入一个整数作为结束值"))
                                    print(y)
                                else:
                                    break
                                break
                            else:
                                break
                        elif k == "否" or k == "不开始":
                            tc1("您确定要退出《猜数字》吗?")
                            break
                        elif k == None:
                            pass
                        else:
                            easygui.msgbox("我不了解您的意思,请重新输入")
                            k = easygui.enterbox("是否开始游玩《猜数字》?")
                            print(k)
                    else:
                        pass
                    pass
                elif event.type == pygame.KEYDOWN:
                    if event.key == K_ESCAPE:
                        sys.exit()
            break
        elif xz_1 == "游戏说明":
            ts_2 = pyautogui.alert(text="正在加班开发中......",title="警告",button="好的")
            print(ts_2)
        elif xz_1 == "关于我们":
            ts_3 = pyautogui.alert(text="正在加班开发中......",title="警告",button="好的")
            print(ts_3)
        elif xz_1 == "退出程序":
            tc1("您确定要退出程序吗?")
        elif xz_1 == None:
            sys.exit()
运行结果及报错内容
Traceback (most recent call last):
  File "G:\树人\BL.py", line 120
    elif xz_1 == "游戏说明":
       ^
SyntaxError: invalid syntax

img


大概内容就是缩进错误

  • 写回答

1条回答 默认 最新

  • 快乐小土狗 2022-07-10 11:07
    关注

    除了索引elif的缩进外,看下120行的break,看下这里你是想跳出的是哪一个循环,原本的位置的是内层for循环执行完之后直接跳出while循环,那while循环就没有必有了。
    elif应该对应的是if xz_1 == "开始游戏":

    elif xz_1 == "游戏说明":
                ts_2 = pyautogui.alert(text="正在加班开发中......",title="警告",button="好的")
                print(ts_2)
            elif xz_1 == "关于我们":
                ts_3 = pyautogui.alert(text="正在加班开发中......",title="警告",button="好的")
                print(ts_3)
            elif xz_1 == "退出程序":
                tc1("您确定要退出程序吗?")
            elif xz_1 == None:
                sys.exit()
    
    

    这一段缩进全部往前一段

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月18日
  • 已采纳回答 7月10日
  • 创建了问题 7月10日

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮