2301_80371031 2023-12-04 17:03 采纳率: 0%
浏览 6

股票代码合法性判断(语言-python)

img


提示invalid token错误,怎么改啊。我感觉不止这一个错误但是平时上课没认真听……

  • 写回答

4条回答 默认 最新

  • 梦幻精灵_cq 2023-12-04 18:00
    关注
    • 您第15line和17line都是同样的语法错误,python中数值型对象是不可以有前导0的。如:

      img


    您的b本应该是字符串str对象,python中的str对象,都是要包裹在一对引号中的(单、双、三引号都可以。)不同的引号可以实现相互包裹,也就是引号嵌套,内层的引号对,是字符串的一部分,最外层那一对引号才是“python关键字”,不是字符串中内容。


    • 可以从股票代码六位字符分析:从股票代码分类表可知,首位只可以是6、0、3,第二位只可以是0、8,第三位可以为0、1、2、3、8;后三位可以是任意数字字符。据此可以将前三位和后三位分开判断。

      代码运行效果截屏图片

      img


      img

    python代码

    
    def isDm(s):
        ''' 判定股票代码合法性 '''
        dmDict = {'601': '沪市A股', 
                  '602': '沪市A股', 
                  '603': '沪市A股', 
                  '000': '深市A股', 
                     '688': '科创板',
                     '002': '中小板',
                     '300': '创业板'} # 股票分类字典。
        a, b = dm[:3], dm[3:] # 分割代码字符串为前后三位。
        #print(a, b) #代码调试用语句。
        
        
        for i in b: # 先判定后三位。
            
            if not i.isdigit(): # 后三位如有非数字字符,直接返回“NO”。
                return '2NO'
    
        for i in zip(a, [list('603'), list('08'), list('01238')]): # 再判定前三位。
            
            if i[0] not in i[-1]: # 如果前三位不是应有数字字符,返回“NO”。
                #print(i) #代码调试用语句。
                return '1NO'
    
        return dmDict.get(a) # 如果输入股票代码合法,返回其分类。
    
    
    if __name__ == '__main__':
        dm = input('\n输入:\n').strip()
        print(f"\n输出:\n{isDm(dm)}")
    
    

    • 正则通配判定,代码更简洁

      img


      img

    python代码

    
    def isDm_re(dm):
        ''' 用正则通配判定 '''
        from re import findall # 加载re.findall方法。
        reExp = r'[036][08][01238]\d{3}'
        
        if ''.join(findall(reExp, dm)) != dm:
            return 'NO'
        else:
            return dmDict.get(dm[:3])
    
    
    if __name__ == '__main__':
        dm = input('\n输入:\n').strip()
        dmDict = {'601': '沪市A股', 
                  '602': '沪市A股', 
                  '603': '沪市A股', 
                  '000': '深市A股', 
                     '688': '科创板',
                     '002': '中小板',
                     '300': '创业板'} # 股票分类字典。
        print(f"\n输出:\n{isDm(dm)}\n正则通配判定:{isDm_re(dm)}")
    
    

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月4日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表