python练习题(四)
题目:
根据一个字符串返回一个ip数组,按照ip最后一位排序, 字符串:
str = 'ss192.0.0.12?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.5'
用了一个笨方法,先取一个ip,然后去掉 前后的非汉字,再去循环取,代码如下:
str = 'ss192.0.0.12?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.5'
str1 = '.' def getIp(str):
'''
返回 字符串中第一个ip以及最后的位置
:param str:
:return: ip、下一个位置
'''
# 获取第一个点的下标
num1 = int(str.index(str1)) #取三位,少于三位的取全部
if num1 >=3:
ip1 = str[num1-3:num1]
else:
ip1 = str[0:num1] #判断第一位数字出现的位置,并获取ip第一数字的下标
if len(ip1)==3:
if ip1[1:2].isdigit():
if ip1[:1].isdigit():
i1 = num1 - 3
else:
i1 = num1 - 2
else:
i1 = num1 - 1
elif len(ip1)==2:
if ip1[:1].isdigit():
i1 = num1 - 2
else:
i1 = num1 - 1
else:
i1 = num1-1 #获取第二、三个点的下标
num2 = int(str.index(str1,num1+1))
num3 = int(str.index(str1, num2 + 1)) ip4 = str[num3+1:num3+4]
# 判断最后一位数字出现的位置,并获取ip第一数字的下标
if ip4[1:2].isdigit():
if ip4[2:].isdigit():
i4 = num3+3
else:
i4 = num3 + 2
else:
i4 = num3 + 1 ip = str[i1:i4+1]
i = i4+1 return ip,i def getAllIp(str):
'''
返回所有ip
:param str:
:return: 返回 str中出现的ip
'''
i = 0
ip = []
while str.count(str1)>=3:
res = getIp(str)
ip.append(res[0])
i = res[1]
str = str[i:] return ip def strLast(str):
'''
根据ip最后一个数字排序
:param str:
:return:
'''
return str[-1:] l1 = getAllIp(str)
l2 = sorted(l1,key=strLast)
print l1
print l2
python练习题(四)的更多相关文章
- Python练习题 001:4个数字求不重复的3位数
听说做练习是掌握一门编程语言的最佳途径,那就争取先做满100道题吧. ----------------------------------------------------------------- ...
- Python练习题 028:求3*3矩阵对角线数字之和
[Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...
- Python练习题 027:对10个数字进行排序
[Python练习题 027] 对10个数字进行排序 --------------------------------------------- 这题没什么好说的,用 str.split(' ') 获 ...
- Python练习题 026:求100以内的素数
[Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...
- Python练习题 025:判断回文数
[Python练习题 025] 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. ---------------------------------------- ...
- Python练习题 024:求位数及逆序打印
[Python练习题 024] 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. ---------------------------------------------- ...
- Python练习题 004:判断某日期是该年的第几天
[Python练习题 004]输入某年某月某日,判断这一天是这一年的第几天? ---------------------------------------------- 这题竟然写了 28 行代码! ...
- 简学Python第四章__装饰器、迭代器、列表生成式
Python第四章__装饰器.迭代器 欢迎加入Linux_Python学习群 群号:478616847 目录: 列表生成式 生成器 迭代器 单层装饰器(无参) 多层装饰器(有参) 冒泡算法 代码开发 ...
- Python 基础 四 面向对象杂谈
Python 基础 四 面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...
- 初学Python(四)——set
初学Python(四)——set 初学Python,主要整理一些学习到的知识点,这次是set. # -*- coding:utf-8 -*- #先来看数组和set的差别 d=[1,1,2,3,4,5] ...
随机推荐
- NancyFx And ReactiveX
http://reactivex.io/ https://github.com/dotnet/reactive http://nancyfx.org/ NancyFX Nancy快速上手 (使用Nan ...
- B+树比B树更适合实际应用中操作系统的文件索引和数据库索引
B+树比B树更适合实际应用中操作系统的文件索引和数据库索引 为什么选择B+树作为数据库索引结构? 背景 首先,来谈谈B树.为什么要使用B树?我们需要明白以下两个事实: [事实1]不同容量的存储器, ...
- Python之路【第二十二篇】:轮播图片CSS
轮播代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- redis源码分析(六)--cluster集群同步
Redis集群消息 作为支持集群模式的缓存系统,Redis集群中的各个节点需要定期地进行通信,以维持各个节点关于其它节点信息的实时性与一致性.如前一篇文章介绍的,Redis在专用的端口监听集群其它节点 ...
- js 数组传统方法
js 数组传统方法 push() 功能:向数组的末尾添加一个或多个元素 var arr = [4]; arr.push(1,2,3); // [4,1,2,3] 返回: 会返回新数组的长度length ...
- Sonatype安装
https://www.cnblogs.com/wotoufahaiduo/p/11223834.html Sonatype Nexus Repository Manage admin ccf0cab ...
- 常用方法装windows
1.通过制作启动盘来进行安装 (1)简单的启动盘制作工具 通过百度”启动盘“,会发现有很多制作启动盘的工具. 这些工具操作都比较简单,易于上手,功能强大,不仅能装系统,而且还能维修. 具体使用方法,官 ...
- ABAP开发环境语法高亮的那些事儿
关于SAP ABAP开发环境,Jerry之前写过几篇公众号文章: 那些年我用过的SAP IDE 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧 使用Visual Studio Code ...
- Hybris订单价格的折扣维护
backoffice里创建一个新订单,维护一个行项目,添加一个产品: 在行项目的SubTotal界面,维护Base Price,在Discount values字段里,输入折扣信息:discount: ...
- Linux应用与端口
lsof -i:port --- 得到对应端口的应用pid PS -ef|grep pid --- 根据pid得到对应应用