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 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号