minecraft_Eric 2023-02-04 14:29 采纳率: 50%
浏览 36
已结题

python运行结果不是想要的

我做了一个.py文件,代码如下

from mod import*
import os,shutil
yinhao=['"',"'"]
def main(self,line,file):
    if os.path.exists('./var'):
        pass
    else:
        os.makedirs('./var')
    if ':' in self:
        name,code=self.split(':',1)
        if name == '打印' or '输出':
            if '+' in code:
                str1=''
                for i in code.split('+'):
                    global yinhao
                    has_str=False
                    if i[0] == '(' and i[-1] == ')':
                        if i[1] != i[-2] and i[1] in yinhao and i[-2] in yinhao:
                            errors.main('001',line,'语法错误:引号样式不同。',file)
                        elif i[1] == i[-2] and i[1] in yinhao and i[-2] in yinhao:
                            str1+=i[2:]
                            str1=list(str1)
                            del str1[-1]
                            del str1[-2]
                            str1=''.join(str1)
                            has_str=True
                        else:
                            try:
                                a=i[1:]
                                a=list(a)
                                del a[-1]
                                a=''.join(a)
                                float(a)
                            except:
                                errors.main('001',line,'语法错误:字符串请加上引号。',file)
                            else:
                                if has_str == True:
                                    errors.main('003',line,'类型错误:打印内容类型混合。',file)
                                else:
                                    str1+=float(a)
                    elif i[0] == '[' and i[-1] == ']':
                        if ',' in i:
                            a=i[1:]
                            a=list(a)
                            del a[-1]
                            a=''.join(a)
                            a=','.split(a)
                            for j in a:
                                try:
                                    f=open('./var/'+file+'//'+j+'.txt','r',encoding='UTF-8')
                                except:
                                    f.close()
                                    errors.main('002',line,'数值错误:没有定义该变量。',file)
                                else:
                                    str1+=f.read()
                                    f.close()
                print(str1)



    if ':' not in self and '=' in self:
        var,value=self.split('=',1)
        os.makedirs('./var/'+file,exist_ok=True)
        f=open('./var/'+file+'//'+var+'.txt','w',encoding='UTF-8')
        f.write(value)
    elif self == '@_end_':
        shutil.rmtree('./var/'+file)

用别的文件调用后,输入输出结果如下:

img

可是这并不是我想要的结果,感觉莫名其妙,找了半天也不知道哪里错了,第一次输入我想让他打印字符串as和a(放在同一行),但他却给了我一个a和两个引号,请问这怎么才能解决?

  • 写回答

3条回答 默认 最新

  • minecraft_Eric 2023-02-04 20:24
    关注

    已解决,原因是23,24两行,既然前面已经删除str1的索引值-1的字符,则原来索引值为-2的字符就变成了-1,所以这两行可以改成:

    del str1[-1]
    del str1[-1]
    
    

    或:

    del str1[-2:]
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月12日
  • 已采纳回答 2月4日
  • 创建了问题 2月4日

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题