001例:判断回文串:(字符串)

判断回文串:
1. 只考虑字母或者数字字符: 删除非字母或数字
2. 忽略字母的大小写: 统一转成大写或者小写

#encoding=utf-8 # python2需要
#string = 'A man, a plan, a canal: Panama.'
string = raw_input(">>: ")
#string = input(">>: ")

# 1.  只考虑字母或者数字字符: 删除非字母或数字
string1 = ''
for item in string:
	if item.isalnum():
		string1 += item
#print("删除非字母或数字:", string1) 

# 2.  忽略字母的大小写: 统一转成大写或者小写
string2 = string1.lower()
#print("统一转成大写或者小写:"+string2)

# 3. 判断回文
print(string2 == string2[::-1])

002例:打印以**结尾的文件

python 不可见字符匹配 python不包含某字符串_python 不可见字符匹配


结果:

python 不可见字符匹配 python不包含某字符串_python 不可见字符匹配_02

003例:编写一个检查 Python 有效标识符的小脚本,名字是 idcheck.py(字符串)

要求:Python 标识符必须以字母或下划线开头
1). 只检查长度大于等于 2 的标识符
2). 以字母或者下划线开始
3). 后面要跟字母,下划线或者或数字

# 导入string模块
import string
while True:
	#name = raw_input("请输入标识符: ")
	name = input("请输入标识符: ")

	if name == 'exit':
		print("欢迎下次使用表示符检测器....")
		exit(0)   # 退出程序, 0代表的是正常退出	
	# 1). 只检查长度大于等于 2 的标识
	if len(name) >= 2:
		# pass  # 占位符
		# 2). 以字母或者下划线开始
		if name[0] == '_' or  name[0] in string.ascii_letters:
			# pass  # 占位符
			# 3). 后面要跟字母,下划线或者或数字, hello@hhhh
			for item in name[1:]:
				if not (item == '_' or item in string.ascii_letters+string.digits):
					print('Error: 后面没有跟字母,下划线或者数字')
					break  # 跳出循环
			else:   # 当正常遍历字符串结束,要执行的内容
				print('OK: 正确的变量名')
			
		else:
			print('Error: 没有以字母或者下划线开始')
	else:
		print('Error: 长度小于2')

结果:

python 不可见字符匹配 python不包含某字符串_4G_03


python 不可见字符匹配 python不包含某字符串_python 不可见字符匹配_04

004例:用户输入字符串"hello xiao mi", 返回字符串信息"mi-xiao-hello"(字符串分割)

string = input(">> ")
print('-'.join(string.split()[::-1]))

string = "hello xiao mi"
# 1). 以空格为分隔符分割字符串
items = string.split(' ')

# 2). 对列表的所有元素通过切片的方式进行反转
items = items[::-1]

# 3). 通过join方法以'-'为连接符进行拼接
result = '-'.join(items)
print(result)

结果:

python 不可见字符匹配 python不包含某字符串_管理系统_05

005例:编写一个函数来验证输入的字符串是否是有效的 IPv4 ?

1). IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。
比如,172.16.253.1;
2). IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的

#ip = '172.25.254.100'
ip = input('IP: ')
# 1). 判断是否为IPv4?是否为4段?
items = ip.split('.')		# ['172', '25', '254', '100']
if len(items) == 4:
	# 2).  IPv4 地址由十进制数, 其范围为 0 - 255
	for item in items:	# item = '172', '25', '254', '100'
		#  IPv4 地址内的数不会以 0 开头。   (item.startswith('0') and len(item)!=1)
		# '08'  '0'
		if not(0 <= int(item) <= 255)  or  (item.startswith('0') and len(item)!=1):
			print('Error')
			break
		
	else:
		print('OK')
else:
	print('Error')

结果;

python 不可见字符匹配 python不包含某字符串_云主机_06

006例:机器人能否返回原点

moves = input(">> ")
print(moves.count('L') == moves.count('R') and moves.count('U') == moves.count('D'))

结果:

python 不可见字符匹配 python不包含某字符串_云主机_07

007例:项目-云主机管理系统(命名元组)

项目背景: 腾讯云服务器 CVM(Cloud Virtual Machine)是腾讯云提供的可扩展的计算服务。
使用 CVM 避免了使用传统服务器时需要预估资源用量及前期投入,帮助您在短时间内快速启动任意
数量的云服务器并即时部署应用程序。腾讯云 CVM 支持用户自定义一切资源:CPU、内存、硬盘、
网络、安全等等,并可以在需求发生变化时轻松地调整它们。

需求:
******************************************
***************云主机管理系统 ****************
******************************************
1). 添加云主机
2). 删除云主机
3). 修改云主机
4). 查看云主机
0). 退出系统
******************************************

云主机的属性信息:
id: 递增,主机id
IPv4: 主机IP
disk: 主机硬盘大小
memory: 主机内存大小
name: 主机别名

from collections import namedtuple

# 云主机管理系统菜单栏提示
from prettytable import PrettyTable

prompt = """
    ******************************************
    ***************云主机管理系统 ***************  
    ******************************************     
            1). 添加云主机
            2). 删除云主机
            3). 修改云主机
            4). 查看云主机
            0). 退出系统
            
    用户请选择操作:         
    ******************************************



# 1). 选择那种数据类型存储云主机信息? str, tuple, list, 选择列表
hosts_db = []   # 存储所有主机信息的数据库列表
id = 0          # 云主机的id号, 是依次递增的
# 通过命名元组定义主机需要存储的信息
Host = namedtuple('Host', ['id', 'IPv4', 'disk', 'memory', 'name'])

# 2). 死循环,接收用户选择
while True:
    choice = input(prompt)
    # 如果用户选择为1, 则添加云主机
    if choice == '1':
        print("添加云主机".center(40, '*'))
        id += 1     # id递增
        IPv4 = input('主机IP(eg:172.25.254.197)>> ')
        disk = input('主机硬盘大小(eg: 500G)>> ')
        memory = input('主机内存大小(eg: 4G)>> ')
        name = input('主机别名(eg: 数据库服务器)>> ')
        # 将主机信息实例化为Host对象, 并添加到主机信息的数据库列表中
        hosts_db.append(Host(id=id, IPv4=IPv4, disk=disk, memory=memory, name=name))
        # 显示添加成功的信息
        print("添加主机%s成功" %(name))
    elif choice == '2':
        print("删除云主机".center(40, '*'))
        delete_id = int(input('要删除主机的id(eg:1)>> '))
        for host in hosts_db:
            if host.id == delete_id:
                hosts_db.remove(host)
                print("删除id=%s的云主机成功" %(delete_id))
                break
        else:
            print("没有找到id=%s的云主机,删除失败" %(delete_id))
    elif choice == '3':
        # 如果我们的目标是定义一个高效的数据结构,而且将来会修改各种实例属性,那么使用 namedtuple 并不是最佳选择
        # 修改云主机暂时不处理
        pass
    elif choice == '4':
        print("查看云主机".center(40, '*'))
        # 创建表并指定表头信息和格式
        hosts_table = PrettyTable(field_names=['Id', "IPv4", 'Disk', 'Memory', 'Name'])
        # # 遍历主机信息
        for host in hosts_db:
            # 按行添加数据
            hosts_table.add_row(host)
        # 打印表格
        print(hosts_table)
    elif choice == '0':
        exit(0)
    else:
        print("请输入正确的选项")

结果:

/home/kiosk/anaconda3/base/bin/python /home/kiosk/mycode/day04_code/项目-云主机管理系统.py

    ******************************************
    ***************云主机管理系统 ****************
    ******************************************
            1). 添加云主机
            2). 删除云主机
            3). 修改云主机
            4). 查看云主机
            0). 退出系统
    ******************************************
1
*****************添加云主机******************
主机IP(eg:172.25.254.197)>> 172.25.254.37
主机磁盘大小(eg:500G)>>500G
主机内存大小(eg: 4G)>> 4G
主机别名(eg: 数据库服务器)>> MyWeb
添加主机MyWeb成功

    ******************************************
    ***************云主机管理系统 ****************
    ******************************************
            1). 添加云主机
            2). 删除云主机
            3). 修改云主机
            4). 查看云主机
            0). 退出系统
    ******************************************
4
*****************查看云主机******************
+----+---------------+------+--------+-------+
| Id |      IPv4     | Disk | Memory |  Name |
+----+---------------+------+--------+-------+
| 1  | 172.25.254.37 | 500G |   4G   | MyWeb |
+----+---------------+------+--------+-------+

    ******************************************
    ***************云主机管理系统 ****************
    ******************************************
            1). 添加云主机
            2). 删除云主机
            3). 修改云主机
            4). 查看云主机
            0). 退出系统
    ******************************************
1
*****************添加云主机******************
主机IP(eg:172.25.254.197)>> 1.1.1.1
主机磁盘大小(eg:500G)>>5g
主机内存大小(eg: 4G)>> 4g
主机别名(eg: 数据库服务器)>> daliu
添加主机daliu成功

    ******************************************
    ***************云主机管理系统 ****************
    ******************************************
            1). 添加云主机
            2). 删除云主机
            3). 修改云主机
            4). 查看云主机
            0). 退出系统
    ******************************************
4
*****************查看云主机******************
+----+---------------+------+--------+-------+
| Id |      IPv4     | Disk | Memory |  Name |
+----+---------------+------+--------+-------+
| 1  | 172.25.254.37 | 500G |   4G   | MyWeb |
| 2  |    1.1.1.1    |  5g  |   4g   | daliu |
+----+---------------+------+--------+-------+

    ******************************************
    ***************云主机管理系统 ****************
    ******************************************
            1). 添加云主机
            2). 删除云主机
            3). 修改云主机
            4). 查看云主机
            0). 退出系统
    ******************************************
2
*****************删除云主机******************
要删除的主机id(eg:1)>>2
删除id=2的云主机

    ******************************************
    ***************云主机管理系统 ****************
    ******************************************
            1). 添加云主机
            2). 删除云主机
            3). 修改云主机
            4). 查看云主机
            0). 退出系统
    ******************************************
4
*****************查看云主机******************
+----+---------------+------+--------+-------+
| Id |      IPv4     | Disk | Memory |  Name |
+----+---------------+------+--------+-------+
| 1  | 172.25.254.37 | 500G |   4G   | MyWeb |
+----+---------------+------+--------+-------+

    ******************************************
    ***************云主机管理系统 ****************
    ******************************************
            1). 添加云主机
            2). 删除云主机
            3). 修改云主机
            4). 查看云主机
            0). 退出系统
    ******************************************

008例:

python 不可见字符匹配 python不包含某字符串_云主机_08

s = input()
if len(s)>0:
    ls = list(s.split())
    print(len(ls[-1]))
else:
    print(0)