题目:

根据一个字符串返回一个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. 对于之前已经push的项目增加.gitignore配置文件不起作用的处理

    .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的. 解决方法就是先把本地缓存删除(改变成未track状态),然后再提交 ...

  2. HTML5自定义select标签样式的方法

    HTML5自定义select标签样式的方法 -webkit-appearance: none; 这个东西可以隐藏箭头 不过手机端就直接 设置透明度为0就行了(如果这种做法比前面个要麻烦点 毕竟还要对他 ...

  3. java中的内存分配问题

    class A{ int i; int j; } clsaa demo{ public static void main(String[] args){ A aa = new A(); A aa; / ...

  4. SQL Server ---- 创建好的表修改不了字段

    注意这个  是  sqlserver  2008  R2 当修改字段后出现来这个错误 解决方法 1.点击工具   选择选项 2.选择 designers     把阻止更改点掉就行了 建议,改好之后最 ...

  5. AVR单片机教程——EasyElectronics Library v1.3手册

    bit.h delay.h pin.h wave.h pwm.h tone.h adc.h button.h switch.h rotary.h pot.h ldr.h led.h rgbw.h se ...

  6. 不一样的go语言-玩转语法之一

      这段时间为俗事所累,疲以应付,落下了不少想法,错过了更新的日子.这个专题开始之际,已经准备了不下十几个主题,而在写作的过程中,又有新想法与主题涌现出来.未来预计想写写的内容主要包括: 玩转语法系列 ...

  7. Android 系统架构 和 各个版本代号介绍

    一.Android 系统架构: 1. linux内核层Android 基于Linux内核,为Android设备的各种硬件提供底层驱动 比如: 显示驱动.音频.照相机.蓝牙.Wi-Fi驱动,电源管理等 ...

  8. aop 打印请求信息

    项目中使用 AOP 打印请求信息,打印响应信息.package com.example.aspect; import com.alibaba.fastjson.JSON;import com.goog ...

  9. 阿里巴巴 Java 开发手册 (十二)安全规约

    1. [强制]隶属于用户个人的页面或者功能必须进行权限控制校验. 说明:防止没有做水平权限校验就可随意访问.修改.删除别人的数据,比如查看他人的私信 内容.修改他人的订单. 2. [强制]用户敏感数据 ...

  10. C#设计模式之11:命令模式

    C#设计模式之11:命令模式 命令模式 命令模式用来解决一些复杂业务逻辑的时候会很有用,比如,你的一个方法中到处充斥着if else 这种结构的时候,用命令模式来解决这种问题就会让事情变得简单很多. ...