Python学习笔记 3

xiaoxiao2021-02-28  48

1. 学习笔记

1.1python list

lst = [1,2,3,4,'q','halo','wolrd','xxxx'] lst.append()#附加单元素,就算传递一个列表也会当作单个元素附加到列表后面 lst.extend()#多元素附加 lst.insert(index, object)#插入,可指定位置 lst.remove(value)#删除值 #可以使用 del 语句来删除列表的的元素 del lit[index]; lst.sort() #排序,注意如果列表中含有非数字元素则会出错 lst.count() #对列表中的某个元素进行计数 lst.index(value) #定位某个元素在列表中的位置 lst.pop()#可指定要删除的索引,默认删除最后一个元素 lst.reverse() #反转列表

将元组转化为列表:

aTuple = (123, 'xyz', 'zara', 'abc'); aList = list(aTuple)

列表的内置方法:

lst=[11,2,3,4,5,2,34,34,23,756] print(min(lst)) print(max(lst)) print(len(lst)) print(sum(lst)) print(sorted(lst)) print(reversed(lst)) print(zip(lst)), print(enumerate(lst))

1.2. 元组

Python的元组与列表类似,不同之处在于元组的元素不能修改。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

t = () t = (1,) //元组只有一个元素时,加",",t=(1),t是int类型; t = (1,2,(1,2),[1,2]) //可以包含任何类型的数据结构

元组的特性

不可以修改元素内容,t[0]=”lockey”,直接报错分别赋值,name,age = (“lockey”,10)索引切片重复连接

元组的方法 - t.count() //计算某个元素出现的次数 - t.index() //返回某个值的最小索引

元组可以使用下标索引来访问元组中的值,如下实例:

tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5, 6, 7 ); print "tup1[0]: ", tup1[0] #元组也支持切片 print "tup2[1:5]: ", tup2[1:5]

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:

tup1 = (12, 34.56); tup2 = ('abc', 'xyz'); # 以下修改元组元素操作是非法的。 # tup1[0] = 100; # 创建一个新的元组 tup3 = tup1 + tup2; print tup3;

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:

tup = ('physics', 'chemistry', 1997, 2000); print tup; del tup; print tup;

以上实例元组被删除后,输出变量会有异常信息,输出如下所示:

('physics', 'chemistry', 1997, 2000) After deleting tup : Traceback (most recent call last): File "test.py", line 9, in <module> print tup; NameError: name 'tup' is not defined

元组运算符 与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

元组内置函数 Python元组包含了以下内置函数

2. 编程练习

2.1. 提取一个字符串中的数字,大写字母,小写字母,所有字母转换为大写,所有字母转换为小写:

def getSPecial(arg): num = '';little = '';upper = '';alllower = '';allupper = '';others='' for i in arg: if i.isdigit(): num = num + i elif i.islower(): little = little + i elif i.isupper(): upper = upper + i else: others = others + i if i.isalpha(): alllower = alllower + i.lower() allupper = allupper + i.upper() print(""" all number is : {} all lower alpha is: {} all upper alpha is: {} all alpha to lower is: {} all alpha to upper is: {} other chars are: {} """.format(num, little, upper, alllower, allupper,others)) getSPecial('abcABDDDOOO12345654$#@%&*^')

运行结果:

2.2 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

输入描述: 每个测试输入包含2个字符串

输出描述: 输出删除后的字符串

示例1: 输入 They are students. aeiou 输出 Thy r stdnts.

def tickout(): target = raw_input('pelease input your words: ') tickout = raw_input('please input your tickout: ') out = '' for alpha in target: if (alpha not in tickout): out = out + alpha print(out)

2.3 输入两个整数 n 和 m,从数列1,2,3…….n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来

def plusTo(): n = input('Please input max number of list: ') m = input('Please input the result of number addtion: ') def recur(lst,arg): sumlst = sum(lst) for j in range(arg,int(n)+1): if sumlst+j == int(m): #对于现有组合,如果组合中元素相加结果等于给定结果则数组组合中元素 out = '' for item in lst: if out == '': out = str(item) else: out = out + ' ' + str(item) print(out,j) elif sumlst+j < int(m): #对现有组合中的数值如果相加结果小于给定结果,则继续往组合中添加元素,要加入的元素大小为j+1到int(n),个数为1到int(n) outlst = lst outlst.append(j) recur(outlst,j+1) outlst.pop() else: pass ntoNumber = int(n) mtoNumber = int(m) for i in range(1,ntoNumber+1): #递增组合中的第一个值 lst = [] lst.append(i) recur(lst,i+1) if mtoNumber in range(1,ntoNumber+1): #判断如果结果在序列中包含直接输出 print(m) plusTo()

2.4 用户在输入身份证的过程中经常会输入错误,为了方便用户正确输入需要在输入过程中对用户的输入按照 6+8+4 的格式进行分组,实现一个方法接收输入过程中的身份证号,返回分组后的字符

输入描述: 输入数据有多行,每一行是一个输入过程中的身份证号

输出描述: 分组后的字符串

def idTest(): lst=['5021','502104198803','5021041988033084','502104198803308324','5021041988033083242'] for item in lst: itemLen = len(item) if itemLen <= 6: print(item) elif itemLen >6 and itemLen <=14: print(item[0:6],item[6:]) elif itemLen >14 and itemLen <=18: print(item[0:6],item[6:14],item[14:]) else: print('ID number ilegal!')

2.5 给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。 如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))

输入描述: 输入包括一个整数n,(3 ≤ n < 1000)

输出描述: 输出对数

示例1 :

输入: 10 输出: 2 #!/usr/bin/env python #coding:utf-8 ''' file:primeAdd.py date:8/29/17 2:15 PM author:lockey email:lockey@123.com desc: ''' from math import sqrt def is_prime(n): # 定义函数判断一个数字是否是质数 for i in range(2, int(sqrt(n)) + 1): if n % i == 0: return False return True counts = 0 def plusTo(): n = input('Please input max number of list: ') def recur(arg): global counts for j in range(arg,int(n)+1): #递增每队数值中的第二个数字,如果这对数值相加结果等于给定值并且两个数都是质数时记一次 if arg+j == int(n) and is_prime(j) == True: counts = counts + 1 else: pass ntoNumber = int(n) for i in range(2,ntoNumber+1): #递增每队数值中的第一个数字 if is_prime(i) == True and i >= 3: lst = [] lst.append(i) recur(i) print(counts)

2.6 小易喜欢的单词具有以下特性:

1.单词每个字母都是大写字母 2.单词没有连续相等的字母 3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。 给你一个单词,你要回答小易是否会喜欢这个单词。

输入描述: 输入为一个字符串,都由大写字母组成,长度小于100

输出描述: 如果小易喜欢输出”Likes”,不喜欢输出”Dislikes”

示例1 :

输入 AAA 输出 Dislikes def wordsJudge(): upperStr = raw_input('Please input your string:') if upperStr.isupper():#判断是否大写 upperStrLen=len(upperStr);flag = False;i=0 while i < upperStrLen: if i< upperStrLen-1 and upperStr[i] == upperStr[i+1]: print 'Dislikes';return for item1 in upperStr: if upperStr.count(item1) >= 2: inner = upperStr[i+1:] for item2 in inner: if inner.count(item2) >= 2: innerx = inner.index(item2)+1+i indexx1 = upperStr.index(item1) rfindy = upperStr.rfind(item2) rfindx = upperStr.find(item1, indexx1 + 1) if rfindx > indexx1 and rfindx < rfindy and rfindx != innerx: print innerx,item2 print 'Dislikes';return else: flag = True i = i + 1 if flag == True: print 'Likes' else: print 'Dislikes'

转载请注明原文地址: https://www.6miu.com/read-1100290.html

最新回复(0)