花词 2023-11-02 10:47 采纳率: 100%
浏览 5
已结题

学号信息系统,这个……

user_id = input().strip()

判断这个字符串的长度是否符合要求

if len(user_id) >= 6:
xueli = "本科" if user_id[0] == '4' else '专科'
in_time = '20' + user_id[1:3]
class_id = user_id[3:6]
text = f'{xueli},入学年份:{in_time},班级:{class_id}班'
print(text)
else:
print('学号输入错误')

img

  • 写回答

2条回答 默认 最新

  • 梦幻精灵_cq 2023-11-02 11:59
    关注
    • 通过对您截图代码ocr提取并整理,输出能达预期

      img


      但代码不符题目要求且有缺陷,比如学号超过8位,应该报错。所以代码结构和“算法”,都还需要调整。
      建议下次提问,记得把代码放代码片中,方便答主们cv到本地调试。😄😄😄

    ocr截图代码并整理

    user_id = input().strip() #判断这个字符串的长度是否符合要求。
    
    if len(user_id) >= 6:
        xueli = '本科'if user_id[0] == '4' else '专科'
        in_time = '20' + user_id[1:3]
        class_id = user_id[3:6]
        text = f"{xueli},入学年份: {in_time} 班级:{class_id}班"
        print(text)
    else:
        print('学号输入错误')
    
    

    拆分学号函数

    img

    
    def idSplit(stuId):
        level = stuId[0]
        level = '本科' if level == '4' else '专科'
        year = stuId[1:3]
        classNum = stuId[3:6]
    
        return f"{level},入学年份:20{year},班级:{classNum}班"
    
    
    • 学号判定函数

      img

    python代码

    
    def isId(stuId):
        b1 = stuId[0] in list('34')
        b2 = 0 < int(stuId[1:3]) <= 23
        #b2 = in range(100)
        b3 = int(stuId[3:6]) in range(1, 1000)
        b4 = int(stuId[6:]) in range(1, 100)
        
        if b1&b2&b3&b4:
            return True
        else:
            print(f"\n{' 学号输入错误!':~^33}")
    
    
    • 用re模块,代码判定学号更简洁

    python代码

    
    def isId(stuId):
        from re import findall
        countId = len(''.join(findall(r'[34][0-2][0-3]\d{2}[1-9]\d[1-9]', stuId))) # 首位只能是3或4,年份不可大于23,班级不可以是000,学号不可以是00。
        if countId == 8:
            return True
        else:
            print(f"\n{' 学号输入错误!':~^33}")
    
    

    调用函数代码

    
    if __name__ == '__main__':
        stuId = input(f'\n请输入八位学号(如41903621):\n{"":>16}_').strip() #判断这个字符串的长度是否符合要求。
        stuId = '41903621' if not stuId else stuId
        if isId(stuId):
            print(f'\n输出:\n{"":>5}', idSplit(stuId))
    
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。
  • ¥20 在easyX库下编写C语言扑克游戏跑的快,能实现简单的人机对战
  • ¥15 svpwm波形异常求解答
  • ¥15 STM32——硬件IIC从机通信代码实现
  • ¥15 微生物组数据分析--微生物代谢物
  • ¥30 求一跃动小子保卫主公Java算法实现
  • ¥15 地图软件开发技术答疑(api, 地点获取,外观样式)