题目:

根据一个字符串返回一个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练习题(四)的更多相关文章

  1. Python练习题 001:4个数字求不重复的3位数

    听说做练习是掌握一门编程语言的最佳途径,那就争取先做满100道题吧. ----------------------------------------------------------------- ...

  2. Python练习题 028:求3*3矩阵对角线数字之和

    [Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...

  3. Python练习题 027:对10个数字进行排序

    [Python练习题 027] 对10个数字进行排序 --------------------------------------------- 这题没什么好说的,用 str.split(' ') 获 ...

  4. Python练习题 026:求100以内的素数

    [Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...

  5. Python练习题 025:判断回文数

    [Python练习题 025] 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. ---------------------------------------- ...

  6. Python练习题 024:求位数及逆序打印

    [Python练习题 024] 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. ---------------------------------------------- ...

  7. Python练习题 004:判断某日期是该年的第几天

    [Python练习题 004]输入某年某月某日,判断这一天是这一年的第几天? ---------------------------------------------- 这题竟然写了 28 行代码! ...

  8. 简学Python第四章__装饰器、迭代器、列表生成式

    Python第四章__装饰器.迭代器 欢迎加入Linux_Python学习群  群号:478616847 目录: 列表生成式 生成器 迭代器 单层装饰器(无参) 多层装饰器(有参) 冒泡算法 代码开发 ...

  9. Python 基础 四 面向对象杂谈

    Python 基础  四  面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...

  10. 初学Python(四)——set

    初学Python(四)——set 初学Python,主要整理一些学习到的知识点,这次是set. # -*- coding:utf-8 -*- #先来看数组和set的差别 d=[1,1,2,3,4,5] ...

随机推荐

  1. jQuery正则校验

    jQuery正则校验 银行卡号 //验证银行卡号,bankno为银行卡号function luhnCheck(){ var bankno = $.trim($("#bankNoInp&quo ...

  2. windows下的计算时间间隔 -- GetTickCount()

    用法: #include "windows.h" DWORD lastTime =0;DWORD currentTime = 0;DWORD spendTime = 0; last ...

  3. 【LOJ511】[LibreOJ NOI Round #1]验题(动态DP)

    我这道题写了整!整!三!天! 我要一定要写这篇博客来表达我复!杂!的!心!情! 题目 LOJ511 官方题解(这个题解似乎不是很详细,我膜 std 才看懂的) 调这道题验证了我校某人的一句话:调题是一 ...

  4. [译] QUIC Wire Layout Specification - Frame Types and Formats | QUIC协议标准中文翻译(4) 帧类型和格式

    欢迎访问我的个人网站获取更好的阅读排版体验: [译] QUIC Wire Layout Specification - Frame Types and Formats | QUIC协议标准中文翻译(4 ...

  5. 2. Spark GraphX解析

    2.1 存储模式 2.1.1 图存储模式 巨型图的存储总体上有边分割和点分割两种存储方式 1)边分割(Edge-Cut):每个顶点都存储一次,但有的边会被打断分到两台机器上.这样做的好处是节省存储空间 ...

  6. (八)pdf的构成之文件体(page属性)

    资源(Resources) 类型:字典 属性: Font :一个字典,内部是该资源包含的各个字体的名称(字体名称F开头) ProcSet :该资源中使用图画还是文字,可选 /PDF /Text /Im ...

  7. Oracle各种连接函数总结

    1.前言 Oracle可用连接函数会介绍以下几个 Oracle列转行函数 Listagg() strcat() wmsys.wm_concat() 2.Oracle列转行函数 Listagg() 2. ...

  8. .NET Core随笔把数据库数据查出来转JSON并输出

    直接创建WEB项目即可: public class Startup { //startup.cs是站点启动时具体做了哪些事情,主要是开启了一个mvc服务. public Startup(IConfig ...

  9. Cascader 级联选择器hover选择效果

    官网例子 <div class="block"> <span class="demonstration">hover 触发子菜单< ...

  10. 如何让 height:100%; 起作用---父级元素必须设定高度

    参考: http://www.webhek.com/post/css-100-percent-height.html https://www.cnblogs.com/kunmomo/p/1060066 ...