当前位置: 首页 > news >正文

大学 Python 程序设计实验报告:判断变量名是否合法

编写程序,输入一个变量名,判断变量名是否符合标识符的定义?

标识符要求:标识符可以由字母,数字或者下划线组成;

并且只能以字母或者下划线开头。

运行效果参考如下:

请输入一个变量名:_123

123 是一个合法的变量名

请输入一个变量名:1sfa

1sfa 不是一个合法的变量名

程序源代码:使用正则表达式

import re
def is_valid(name):# 检查变量名是否以字母或下划线开头if not name[0].isalpha() and not name.startswith('_'):return False# 检查变量名是否包含数字或其他非法字符pattern = re.compile(r'[a-zA-Z_][a-zA-Z0-9_]*')if not pattern.match(name):return Falsereturn True
name = input("请输入一个变量名: ")
if is_valid(name):print(f"{name} 是一个合法的变量名")
else:print(f"{name} 不是一个合法的变量名")

以上程序代码没有考虑关键字,关键字不能作为变量名。

程序源代码:keyword 模块

import keyword
def is_valid(name):if name.isidentifier() and not keyword.iskeyword(name):return Truereturn False
name = input("请输入一个变量名: ")
if is_valid(name):print(f"{name} 是一个合法的变量名")
else:print(f"{name} 不是一个合法的变量名")

isidentifier() 方法:

检查字符串是否是有效标识符。

如果字符串仅包含字母数字字母(a-z)和(0-9)或下划线(_),则该字符串被视为有效标识符。有效的标识符不能以数字开头或包含任何空格。

keyword.iskeyword():

检查字符串是否是关键字。

相关文章:

  • XSKY 智能存储,助力“数据要素 X”先进制造
  • openGauss Index-advisor_索引推荐
  • docker 的八大技术架构(图解)
  • 【Web前端】CSS基本语法规范和引入方式常见选择器用法常见元素属性
  • Android 观察者模式
  • 【KMeans聚类概述】
  • HTTPS握手解析
  • 智慧公厕的技术融合策略
  • Ubuntu Desktop Server - user 用户与 root 用户切换
  • Spring:面试八股
  • c语言编译和链接
  • 二分图
  • web CSS笔记1
  • lua 获取指定路径下的所有文件夹
  • 批量删除 rabbitmq中随机队列
  • ECS应用管理最佳实践
  • Java的Interrupt与线程中断
  • JS题目及答案整理
  • Promise初体验
  • Redis中的lru算法实现
  • SpiderData 2019年2月23日 DApp数据排行榜
  • spring cloud gateway 源码解析(4)跨域问题处理
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • use Google search engine
  • 关于extract.autodesk.io的一些说明
  • 回顾2016
  • 基于HAProxy的高性能缓存服务器nuster
  • 开源地图数据可视化库——mapnik
  • 类orAPI - 收藏集 - 掘金
  • 深度解析利用ES6进行Promise封装总结
  • zabbix3.2监控linux磁盘IO
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #Z2294. 打印树的直径
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (9)目标检测_SSD的原理
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (层次遍历)104. 二叉树的最大深度
  • (七)理解angular中的module和injector,即依赖注入
  • .bat批处理(一):@echo off
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .Net多线程总结
  • .net和php怎么连接,php和apache之间如何连接
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • []串口通信 零星笔记
  • [2016.7 test.5] T1
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [AIGC 大数据基础]hive浅谈
  • [Assignment] C++1
  • [C#]winform部署yolov5-onnx模型
  • [Contest20180313]灵大会议
  • [Flutter] extends、implements、mixin和 abstract、extension的使用介绍说明
  • [Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目
  • [leetcode] 61. 旋转链表
  • [luogu4162 SCOI2009] 最长距离(最短路)