用于记录自己写的,或学习期间看到的不错的,小程序,持续更新......
****************************************************************
【例001】计算:1-2+3-4..+199-200值
#encoding=utf-8
#计算 1-2+3-4..+199-200值
#1+3+5+7+...199
#-2-4-6...-200
sum1 = 0
sum2 = 0
for i in range(1,200,2): #计算1+3+5+7...199
sum1 +=i
print sum1
for i in range(-200,0,2): #计算-2+(-4)+(-6)...+(-200)
sum2 +=i
print sum2
print "The total of 1-2+3-4..+199-200 is: ", sum1+sum2
【例002】将两个文件中相同的部分,写到一个文件中
#encoding=utf-8
#Python 2.7.4
#Purpose: 将文件1.txt,2.txt中相同的内容放到3.txt中;
f1 = open("1.txt","r+")
f2 = open("2.txt","r+")
f3 = open("3.txt","w+")
all1 = f1.readlines() #先拿文件1中所有行取出
all2 = f2.readlines() #再拿文件2中所有行取出
f1.close()
f2.close()
for l1 in all1:
for l2 in all2:
if l1.strip()==l2.strip(): #比较行中内容是否一样
f3.write(l2)
else:
continue
else:
pass
print "#"*40
f3.close()
【例003】反向读取文件
假如要读取的test.txt文件内容如下:
Python
Perl
Java
Shell
实现代码:
file1 = file('test.txt','r')
list1 = [] #用一个空列表用于存放每行的内容
while True:
line = file1.readline()
list1.append(line.strip())
if len(line) == 0:
break
for l in list1[::-1]: #反向遍历,然后依次读取出来
print l
file1.close()
输出结果:
Shell
Java
Perl
Python
【例004】 往文件中所有添加指定的前缀
比如文中: print是一个函数
文本文件强制二进制编码
就变成了下面的
01.Python 3.0: #print是一个函数
02.Python 3.0: #文本文件强制二进制编码
#coding = gbk #中文编码
f_r = open('test.txt') #打开要处理文件
f_w = open('file.txt','w') #创建要添加文件
i = 0 #加前缀标志位
while True:
i += 1
line = f_r.readline()
if not line:
break
f_w.write('%02d'%(i) + '.Python 3.0: #' + line)#字符串格式化及拼接技巧
f_r.close() #关闭打开的文件句柄
f_w.close()
【例005】
#coding = gbk
'''''
下面code.txt文件中内容,将
01 CN Chinese
02 IN India
03 HK HongKang
04 JP Japan
05 DE Germany
06 US United States of America
要文件的内容,每一行文件,写到一个文件,且文件名前面两个字段,如
文件名为:01_CN_Chinese.txt
文中内容:01 CN Chinese
知识要点:
1. ''.join 和 split函数
2. 字符的联合
3. with语句,open文件
4. 遍历数组
5. 切片操作
'''
postfix = '.txt' #设置后缀
with open('test.txt') as myfile: #with语句打开文件为myfile
while True: #while循环拿文件读出来
lines = myfile.readlines() #拿所有的行一次性读取到列表中
if not lines: break #没有则中断
for line in lines: #遍历列表
file_out = str('_'.join(line.split()[:])) + postfix #得到01_CN_Chinese.txt文件名
open(file_out,'w').write(line) #write(line),将没行的文件写入新文件中
【例006】
#coding = gbk
'''''
#最终实现下面的过程
foos = [1.0, 2.0, 3.0, 4.0, 5.0]
bars = [100, 200, 300, 400, 500]
1.0 [200, 300, 400, 500]
2.0 [100, 300, 400, 500]
3.0 [100, 200, 400, 500]
4.0 [100, 200, 300, 500]
5.0 [100, 200, 300, 400]
#知识点
1. map函数的理解
2. 关键是切片函数的应用
'''
foos = [1.0, 2.0, 3.0, 4.0, 5.0]
bars = [100, 200, 300, 400, 500]
def func(foo):
index = foos.index(foo) #foo在foos中的索引,拿她取出来
print foo,bars[:][0:index] + bars[:][index+1:]
#该索引同样在bars中相同位置,在切片的时候拿它取出,并拼接这个切片
#大功告成!
print map(func,foos)
【例007】求 6! + 5! + 4! + 3! + 2! + 1!
def factorial(n):
return reduce(lambda x,y: x* y, range(1,n+1))#求6!
print reduce(lambda x,y: x + y, [factorial(i) for i in range(1,6)]) #求6! + 5! + 4! + 3! + 2! + 1!
【例008】 根据输入打印文件
import sys
helpinfo= '''''\
This program prints files to the standard output.
Any number of files can be specified.
Options include:
--[version|VERSION|V|v]: Prints the version number
--[help |HELP |H|h]: Display the help
'''
def readfile(filename):
try:
f = open(filename)
while True:
line = f.readline()
if not line:
break
print line,
except:
print 'some error here'
if len(sys.argv) print 'No action is needed!'
sys.exit()
if sys.argv[1].startswith('--'):
option = sys.argv[1][2:]
if option in ['version','v','V','VERSION']:
print 'Version 1.0'
elif option in ['h','H','help','HELP']:
print helpinfo
else:
print 'Unknown option.'
sys.exit()
else:
for filename in sys.argv[1:]:
readfile(filename)
【例009】函数中args的用法
def powersum(power,*args):
'''''Print each argument's power'''
total = 0
for item in args:
total += pow(item,power)
return total
print powersum(2,3,4) # (3**2) + (4**2)
print powersum(2,10) # 10**2
print powersum(2) # 0**2
【例010】匿名函数作为返回值
def repeater(n):
print n
return lambda s: s*n
twice = repeater(2)
print twice('Hello')
print twice(5)
【例011】备份程序
#!/usr/bin/env python
import os,time
source = ['/home/test/C','/home/test/shell'] #源文件目录
target_dir = '/home/test/python' #目标文件目录
today = target_dir + time.strftime('%Y%m%d') #
now = time.strftime('%H%M%S')
if not os.path.exists(today): #判断目录是否存在
os.mkdir(today) #不存在的话则新建
print 'Successfully created directory', today
target = today + os.sep + now + '.zip' #target文件格式
zip_cmd = "zip -qr '%s' %s" % (target, ' '.join(source)) #-q:安静模式 -r递归模式
#等价于 zip -qr /home/test/python20141202/142151.zip /home/test/C /home/test/shell
if os.system(zip_cmd) == 0: #判断命令是否成功执行,成功执行,返回0
print 'Successful back to:', target
else: #失败的话,打印信息
print 'Backup FAILED.'
加comment的版本
#!/usr/bin/env python
import os,time
source = ['/home/test/C','/home/test/shell']
target_dir = '/home/test/python'
today = target_dir + time.strftime('%Y%m%d')
now = time.strftime('%H%M%S')
comment = raw_input('Enter comments here-->') #要输入的comment
if len(comment) == 0: #如果没有comment
target = today + os.sep + now + '.zip' #按照上面的操作执行
else:
target = today + os.sep + now + '_' + comment.replace(' ','_') + '.zip'
#如果有comment,
if not os.path.exists(today):
os.mkdir(today)
print 'The backup directory created!', today
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))
if os.system(zip_command) == 0:
print 'Scuccessful backup to', target
else:
print 'The backup FAILED'
输出结果 :
# python backup_ver4.py
Enter comments here-->add new example
The backup directory created! /home/test/python20141202
Scuccessful backup to /home/test/python20141202/145130_add_new_example.zip
【例012】将二进制数转为10进制数
def func(B):
I = 0
while B:
I = I * 2 + (ord(B[0])-ord('0'))
B = B[1:]
return I
b = raw_input('Enter binary here:')
print func(b)
【例013】将列表中排除重复项并将重复的项找出
def find_duplicate(lst):
tmp = [] #临时变量,存放排除后的列表
for item in lst:
if not item in tmp: #将不在tmp变量找出
tmp.append(item)
else:
print 'The duplicate item is:', item
print 'After remove the duplicate item:',
return tmp
if __name__=='__main__':
test = input("Enter List here:") #input技巧
print find_duplicate(test)
>>>
Enter List here:[2,1,4,2]
The duplicate item is: 2
After remove the duplicate item: [2, 1, 4]
【例014】用Python中列表中append(),pop()函数实现简单的堆栈方法:后进先出
l = []
l.append(1)
l.append(2)
l.append(3)
print l
print l.pop()
print l.pop()
print l.pop()
【例015】对列表中的单词按首字母排序
>>> words = ['apple','bat','bar','book','atom']
>>> tmp = {} #建个空字典
>>> for word in words:
letter = word[0] #作为字典中的键
if letter not in tmp: #判断首字母是否存在于字典
tmp[letter] = [word] #注意要添加[],很关键
else:
tmp[letter].append(word) #如果键已经存在,值列表添加
>>> tmp
{'a': ['apple', 'atom'], 'b': ['bat', 'bar', 'book']}
【例016】对文件进行整理(除空格、TAB键、除#!&?等键),假如文本文件全为人名,并让首字母大写
john black
Jerry!
&alice
TOm#
south carolina###
mr smith?
代码及输出结果如下:
import re
def clean(strings):
result = []
for value in strings:
value = value.strip()
value = re.sub('[#!&?]','',value)
value = value.title()
result.append(value)
return result
with open('data.txt','a+') as myfile:
lines = myfile.readlines()
for line in clean(lines):
print line
>>>
John Black
Jerry
Alice
Tom
South Carolina
Mr Smith
【例017】用while循环来判断某个数是否是质数
y = input('Enter a integer Here:')
x = y / 2
while x > 1:
if y % x == 0:
print y, 'has factor', x
break
x -= 1
else:
print y, 'is prime'
【例018】用while实现搜索某个字符串的功能
names = ['Tom','Alice','Wendy','Jerry','Bob','Smith']
while names:
if names[0] == 'Jerry':
print 'Hi,', names[0]
break
names = names[1:]
else:
print 'Not Found!'
【例019】对嵌套的序列进行处理
>>> T = ((1,2),(3,4),(5,6))
>>> for (a,b) in T:
... print a+100, b+200
...
101 202
103 204
105 206
【例020】用for循环实现查找
source = ['sting',(3,4),100,0.1,[1,2]]
tests = [(3,4),3.14]
for t in tests: #先是遍历小循环
for s in source: #再遍历外层循环
if s == t:
print t, 'Found it! '
break
else: #else语句的位置非常关键,
print t, 'Not Found!'
等价于下面这种方式
source = ['sting',(3,4),100,0.1,[1,2]]
tests = [(3,4),100,3.14]
for t in tests:
if t in source:
print t, 'Found it.'
else:
print t, 'Not found.'
【例021】用for循环来收集两个序列中相同的部分
seq1 = 'spam'
seq2 = 'suck'
res = []
for s1 in seq1:
if s1 in seq2:
res.append(s1)
print res
【例022】隔个取出字符串
S = 'abcdefghijklmn'
for i in range(0,len(S),2):
print S[i],
#或者
print S[::2]
【例023】两个列表,列表中每个元素加100,然后与L1中对应元素相乘,形成列表,再对列表求和
L1 = [1,2,3,4]
L2 = [5,6,7,8] #L2每个元素加一百,105,106,107
#(5+100)*1 + (6+100)*2 + (100+7)*3 + (100+8)*4
# 合计: 1070
L3 = [x+100 for x in L2]
L4 = []
for (x,y) in zip(L1,L3):
L4.append(x*y)
print sum(L4)
#或者用下面精简方式,只是刚看到有点头痛!
print sum([x*y for x,y in [T for T in zip(L1,[x+100 for x in L2])]])
【例024】对列表进行,合并,去重,取交集等操作
def func(seq1, seq2=None, opra=None):
res = []
if opra == '-':
for item1 in seq1:
if item1 not in seq2:
res.append(item1)
elif opra == '&':
for item1 in seq1:
if item1 in seq2:
res.append(item1)
elif opra == '|':
tmp = seq1[:]
for item1 in seq2:
if item1 not in seq1:
tmp.append(item1)
return tmp
elif opra == '^':
for i in seq1:
if i not in seq2:
res.append(i)
for i in seq2:
if i not in seq1:
res.append(i)
return res
else:
print 'Need list as input!'
return res
L1 = [1,2,3,4]
L2 = [3,4,5,6]
print '[L1 - L2]:',func(L1,L2,'-')
print '[L1 & L2]:',func(L1,L2,'&')
print '[L1 | L2]:',func(L1,L2,'|')
print '[L1 ^ L2]:',func(L1,L2,'^')
def list_remove(seq):
res = []
for i in seq:
if i not in res:
res.append(i)
return res
L1 = [3,1,2,3,8]
print list_remove(L1)
def find_duplicate(seq):
res = []
for i in range(len(seq)):
if seq.count(seq[i]) >= 2:
print 'Found %s'% seq[i], 'The index is:', i
res.append(seq[i])
return res
L1 = [3,1,2,3,8]
print find_duplicate(L1)
结果如下:
>>>
[L1 - L2]: [1, 2]
[L1 & L2]: [3, 4]
[L1 | L2]: [1, 2, 3, 4, 5, 6]
[L1 ^ L2]: [1, 2, 5, 6]
[3, 1, 2, 8]
Found 3 The index is: 0
Found 3 The index is: 3
[3, 3]
【例025】通过函数改变全局变量的三种方式
var = 99
def local():
var = 0
def glob1():
global var
var += 1
def glob2():
var = 0
import Learn
Learn.var += 1
def glob3():
var = 0
import sys
glob = sys.modules['Learn']
glob.var += 1
def test():
print var
local();glob1();glob2();glob3()
print var
【例026】求range(10)中每个元素的立方
def func():
res = []
for i in range(10):
res.append(lambda x, i=i: i ** x) #i=i这是关键,否则i默认记忆最后一个值:9
return res
>>> res = func()
>>> for i in range(10):
res[i](3)
0
1
8
27
64
125
216
343
512
729
【例027】求最小值
def min1(*args):
mini = args[0]
for arg in args[1:]:
if arg mini = arg
return mini
def min2(first,*rest):
mini = first
for arg in rest:
if arg mini = arg
return mini
def min3(*args):
res = list(args)
res.sort()
return res[0]
print min1('c','a','b')
print min2(3,1,4)
print min3(1,'a',78,'c')
def func(test, *args):
res = args[0]
for arg in args[1:]:
if test(arg, res):
res = arg
return res
def lessthan(x, y): return x def morethan(x, y): return x > y
print func(lessthan, 4,3,1,2,9)
print func(morethan, 4,3,1,2,9)
【例028】求多个集合的交集及合集
def intersect(*args):
res = []
for x in args[0]:
for other in args[1:]:
if x not in other:
break
else:
res.append(x)
return set(res) #去除重复的部分
print intersect('SPAM','SCAM','SLAM')
def union(*args):
res = []
for seq in args:
for item in seq:
if not item in res:
res.append(item)
return res
print union('SA','SB','SC')
def intersect(*args):
res = []
for x in args[0]:
for other in args[1:]:
if x not in other:
break
else:
res.append(x)
#为了交互['S','S','A','A','M','M']
tmp = []
[tmp.append(i) for i in res if i not in tmp]
return tmp
print intersect('SCAM','SPAM','SLAM')
【例029】字典的拷贝及添加
def copyDict(old):
new = {}
for key in old:
new[key] = old[key]
return new
def addDict(d1,d2):
new = {}
for key in d1.keys():
new[key] = d1[key]
for key in d2:
new[key] = d2[key]
return new
【例030】求质数
def isPrime(y):
if y print y, 'not prime'
else:
x = y // 2
while x>1:
if y % x == 0:
print y, 'has factor', x
break
x -= 1
else:
print y, 'is prime!'
【例031】比较多个值的大小
def min_max(func,*args):
res = args[0]
for arg in args[1:]:
if func(arg,res):
res = arg
return res
def min_func(x,y): return x def max_func(x,y): return x > y
if __name__=='__main__':
print "The min value is:", min_max(min_func,4,3,2,1,7,6,9)
print "The max value is:", min_max(max_func,4,3,2,1,7,6,9)
# 输出结果:
>>>
The min value is: 1
The max value is: 9
【例032】写一个小函数实现内置函数dir的功能
#Filename: mydir.py
tag = 1
def listing(module):
if tag:
print '-'*30
print 'name:', module.__name__,'file:', module.__file__
print '-'*30
count = 0
for attr in module.__dict__.keys():
if attr[0:2] == '__':
print '%02d) %s' % (count, attr)
else:
print getattr(module,attr)
count = count + 1
if tag:
print '-'*30
print module.__name__, 'has %d names.' % count
print '-'*30
if __name__=='__main__':
import mydir
listing(mydir)
【例033】求分数平均值
'''''Filename: grades.txt 求该文件中第二列的平均值
Jerry 78
Alice 45
Wendy 96
Tom 56
Bob 85
'''
temp = []
for line in open('grades.txt'):
a = line.strip().split()
if a:
temp.append(a[1])
#['78', '45', '96', '56', '85']
total = 0
for i in temp:
total += int(i)
print 'The total grade is:', total, 'The average is:', total/len(tmp)
【例034】一个实际类的例子
class GenericDisplay:
def gatherAttrs(self):
attrs = '\n'
for key in self.__dict__:
attrs += '\t%s=%s\n' % (key, self.__dict__[key])
return attrs
def __str__(self):
return '' % (self.__class__.__name__, self.gatherAttrs())
class Person(GenericDisplay):
def __init__(self, name, age):
self.name = name
self.age = age
def lastName(self):
return self.name.split()[-1]
def birthDay(self):
self.age += 1
class Employee(Person):
def __init__(self, name, age, job=None, pay=0):
Person.__init__(self, name, age)
self.job = job
self.pay = pay
def birthDay(self):
self.age += 2
def giveRaise(self, percent):
self.pay *= (1.0 + percent)
if __name__ == '__main__':
bob = Person('Bob Smith', 40)
print bob
print bob.lastName()
bob.birthDay()
print bob
sue = Employee('Sue Jones', 44, job='dev', pay=100000)
print sue
print sue.lastName
sue.birthDay()
sue.giveRaise(.10)
print sue
【例035】根据给定的年月日以数字方式打印出日期(February 27th, 2015)
# coding = UTF-8
#根据给定的年月日以数字形式打印出日期
months = [
'January' ,
'February',
'March' ,
'April' ,
'May' ,
'June' ,
'July' ,
'August' ,
'September',
'October' ,
'November' ,
'December'
]
#以1~31的数字作为结尾的列表
endings = ['st','nd','rd'] + 17 * ['th'] + \
['st','nd','rd'] + 07 * ['th'] + \
['st']
year = raw_input('Year: ')
month = raw_input('Month(1-12): ')
day = raw_input('Day(1-31): ')
month_number = int(month)
day_number = int(day)
#月份和天数减1来获得正确的索引
month_name = months[month_number - 1]
ordinal = day + endings[day_number - 1]
print month_name + ' ' + ordinal + ', ' + year
#输出结果
>>>
Year: 2015
Month(1-12): 2
Day(1-31): 27
February 27th, 2015
【例036】在居中的盒子里打印一条语句
sentence = raw_input("Sentence: ")
screen_width = 80
text_width = len(sentence)
box_width = text_width + 6
left_margin = (screen_width - box_width) // 2
print ' '*left_margin + '+' + '-'*(box_width-4) + '+'
print ' '*left_margin + '| ' + ' '*(text_width) +' |'
print ' '*left_margin + '| ' + sentence +' |'
print ' '*left_margin + '| ' + ' '*(text_width) +' |'
print ' '*left_margin + '+' + '-'*(box_width-4) + '+'
#输出结果
>>>
Sentence: Welcome To Beijing!
+---------------------+
| |
| Welcome To Beijing! |
| |
+---------------------+
【例037】简单小数据库验证
database = [
['Bob', '1234'],
['Tom', '2345'],
['Foo', '1478']
]
usr = raw_input('Enter username: ')
pwd = raw_input('Enter password: ')
if [usr, pwd] in database:
print 'Access Granted!'
else:
print 'Access Deny!'
【例038】使用给定的宽度打印格式化后的价格列表
width = input('Please enter width: ')
price_width = 10
item_width = width - price_width
header_format = '%-*s%*s'
format = '%-*s%*.2f'
print '=' * width
print header_format % (item_width, 'Item', price_width, 'Price')
print '-' * width
print format % (item_width, 'Apples', price_width, 0.4)
print format % (item_width, 'Sweets', price_width, 0.5)
print format % (item_width, 'Pepper', price_width, 12.94)
print format % (item_width, 'Tender', price_width, 42)
print '-' * width
输出格式:
>>>
Please enter width: 30
==============================
Item Price
------------------------------
Apples 0.40
Sweets 0.50
Pepper 12.94
Tender 42.00
------------------------------
【例039】遍历两个对应列表
names = ['Alice', 'Bob' , 'Cherry', 'David']
numbers = ['0000' , '1111', '2222' , '3333' ]
for index,name in enumerate(names):
print '%-7s=> %s' % (name, numbers[index])
#输出结果
>>>
Alice => 0000
Bob => 1111
Cherry => 2222
David => 3333
当然也可以采用如下通常的做法:
names = ['Alice','Bob', 'John', 'Fred']
ages = [27, 23, 31, 29]
for i in range(len(ages)):
print names[i],' is ', ages[i], ' years old!'
#输出结果:
>>>
Alice is 27 years old!
Bob is 23 years old!
John is 31 years old!
Fred is 29 years old!
【例040】对存储在小字典中数据进行查询
peoples = {
'Alice':{
'phone' : '0948',
'address' : 'aaaa'
},
'Wendy':{
'phone' : '4562',
'address' : 'bbbb'
},
'David':{
'phone' : '4562',
'address' : 'bbbb'
}
}
#字典使用人名作为键。每个人用另外一个字典来表示,其键'phone'和'addr'分别表示他们的电话号码和地址
labels = {
'phone' : 'phone number',
'address' : 'address'
}
#针对电话号码和地址使用描述性标签,会在打印输出时用到。
key = ''
name = raw_input('Name: ')
if name in peoples:
request = raw_input('Enter (p) or (a): ')
if request == 'p':
key = 'phone'
elif request == 'a':
key = 'address'
else:
print 'Please input p(phone) an a(address)!'
print "%s's %s is %s" % (name, labels[key],peoples[name][key])
else:
print 'Not Found!'
或者使用字典的get()方法,更好些。完整代码如下:
#字典使用人名作为键。每个人用另外一个字典来表示,其键'phone'和'addr'分别表示他们的电话号码和地址
peoples = {
'Alice':{
'phone' : '0948',
'address' : 'aaaa'
},
'Wendy':{
'phone' : '4562',
'address' : 'bbbb'
},
'David':{
'phone' : '4562',
'address' : 'bbbb'
}
}
#针对电话号码和地址使用描述性标签,会在打印输出时用到。
labels = {
'phone' : 'phone number',
'addr' : 'address'
}
name = raw_input('Name: ')
#查找电话号码还是地址?
request = raw_input('Phone number (p) or address (a)? ')
#查找正确的键
key = request #如果请求即不是p也不是a
if request == 'p': key = 'phone'
if request == 'a': key = 'addr'
#使用get()函数提供默认值
person = peoples.get(name,{})
label = labels.get(key, key)
result = person.get(key, 'not available')
print "%s's %s is %s." % (name, label, result)
【例041】字典格式化字符串例子
template='''''
%(title)s
'''
data = {'title':'My Home Page','text':'Welcome to my home page!'}
print template % data
#输出结果:
>>>
My Home Page
【例042】需找100以内的最大平方数
from math import sqrt
#从100开始往下找,找到即停止,最大为: 81
for n in range(99, 0, -1):
root = sqrt(n)
if root == int(root):
print n
break
【例043】用while/True, break控制输入
while True: #一直进行下去,除非break
word = raw_input('Please Enter a word: ')
if not word: break #输入为空的话,中断循环
print 'The word was: ' + word
【例044】将两个列表中首字母相同的提取出来
#将两个列表中首字母相同的罗列在一起
girls = ['alice', 'bernice', 'clarice']
boys = ['chris', 'arnold', 'bob']
#列表推导:
print [b+'+'+g for b in boys for g in girls if b[0] == g[0]]
#输出结果:
>>>
['chris+clarice', 'arnold+alice', 'bob+bernice']
【例045】斐波那契数列求指定数字的列表
def fibs(x):
fibs = [0, 1] # 初始值
for i in range(x):
# fibs[-2]+fibs[-1]:最新一个值是前面两个值之和
# 并用append方法将其添加在后面
fibs.append(fibs[-2]+fibs[-1])
print fibs
if __name__=='__main__':
num = input('How many Fibonacci numbers do you want? ')
fibs(num)
或者用普通方法实现:
>>> def fib(max):
n, a, b = 0, 0, 1
tmp_list = []
while n tmp_list.append(a)
a, b = b, a+b
n += 1
return tmp_list
>>> fib(8)
[0, 1, 1, 2, 3, 5, 8, 13]
【例046】写一个自定义列表类,让它支持尽可能多的支持操作符号
class MyList:
def __init__(self, start):
self.wrapped = [] # Make sure it's a list here
for x in start:
self.wrapped.append(x)
def __add__(self, other):
return MyList(self.wrapped + other)
def __mul__(self, time):
return MyList(self.wrapped * time)
def __getitem__(self, offset):
return self.wrapped[offset]
def __len__(self):
return len(self.wrapped)
def __getslice__(self, low, high):
return MyList(self.wrapped[low:high])
def append(self, node):
self.wrapped.append(node)
def __getattr__(self, name): # Other members: sort/reverse/etc
return getattr(self.wrapped, name)
def __repr__(self):
return repr(self.wrapped)
if __name__ == '__main__':
x = MyList('spam')
print x
print x

PyCharm是一款功能强大的Python集成开发环境,提供了丰富的功能和工具来帮助开发者提高效率。其中,PyInstaller是一个常用的工具,可以将Python代码打包为可执行文件(EXE格式),方便在没有Python环境的机器上运行。在本篇文章中,我们将介绍如何在PyCharm中使用PyInstaller将Python代码打包为EXE格式,并提供具体的

PyCharm社区版支持的插件足够吗?需要具体代码示例随着Python语言在软件开发领域的应用越来越广泛,PyCharm作为一款专业的Python集成开发环境(IDE),备受开发者青睐。PyCharm分为专业版和社区版两个版本,其中社区版是免费提供的,但其插件支持相对专业版有所限制。那么问题来了,PyCharm社区版支持的插件足够吗?本文将通过具体的代码示例

我们来了解一下吧:Geany是一个小巧的使用GTK+2开发的跨平台的开源集成开发环境,以GPL许可证分发源代码,是免费的自由软件。当前版本:1.31。该软件小巧、启动迅速,界面简洁,功能简单。它支持基本的语法高亮、代码自动完成、调用提示、插件扩展。支持文件类型:C,CPP,Java,Python,PHP,HTML,DocBook,Perl,LateX和Bash脚本。对于写多种语言的程序员来说,拥有Geany可以说是非常的方便了。知道了这么多,是不是迫不及待想要去尝试一下呢?下面让我们开始进行下载

python元编程是一种强大的技术,它允许你对Python语言本身进行操作,赋予你编程超能力。元编程可以通过使用元类和装饰器来实现。元类是一种特殊的类,它负责创建其他类。装饰器是一种函数,它可以修改另一个函数的行为。元编程的一个常见用途是创建自定义的类。例如,你可以创建一个元类,它可以生成具有特定属性和方法的类。元编程还可以用于修改类的方法行为。例如,你可以创建一个装饰器,它可以对函数的输入和输出进行验证。元编程是一项强大的技术,它可以让你做很多有趣和有用的事情。如果你想成为一名更强大的Pyth

在Python中,我们有一个预定义的函数rstrip()来删除右侧的字符。这意味着它将删除字符串右侧的空格。让我们举一个例子来理解如何从字符串的左侧修剪。在给定的字符串“WIRELESS”中移除右侧字符串LESS并将结果值得到为“WIRE”。在给定的字符串“kingdom”中,删除右侧的字符串dom,得到结果值为“king”。语法以下示例中使用的语法为−isspace()这是Python中预定义的方法,用于允许字符中的空白、换行符或空格。rstrip("parameterasastri

数据的图形表示提供了对数据复杂子结构的增强理解,帮助我们轻松解释隐藏的模式和趋势。想象一下,如果我们可以通过编程绘制类似的关系,那将是多么方便?Python提供了一个丰富的模块,专门用于执行此类操作,它被称为“turtle”。“turtle”模块是Python内置的库,允许我们在“turtle图形屏幕”上绘制图形。在本文中,我们将使用这个turtle模块创建一个条形图。理解Turtle模块Theturtlemoduleusesavirtualturtleobjecttocreategraphic

字典被称为集合数据类型。它们以键值对的形式存储数据。它们是有序的且可变的,即它们遵循特定的顺序并被索引。我们可以更改键的值,因此它是可操纵的或可更改的。字典不支持数据重复。每个键可以有多个与其关联的值,但单个值不能有多个键。我们可以使用字典来执行许多操作。整个机制取决于存储的值。在本文中,我们将讨论可用于从字典中删除“空值”的技术。在开始主要操作之前,我们必须对字典中的值处理有一个深入的了解。让我们快速浏览一下本文的概述。本文分为两部分-第1st部分将重点介绍“空值”的概念及其意义。在第2nd部

在使用Python处理字符串时,经常需要验证一个字符串是否只包含数字和字母,或者是否包含其他特殊字符。字符串验证在各种场景中都非常重要,比如输入验证、数据处理和过滤。在本文中,我们将探讨一个Python程序,用于测试给定的字符串是否仅包含字母数字字符。我们将讨论有效字符串的标准,提供有效和无效字符串的示例,并介绍使用内置字符串方法解决此问题的高效方法。理解问题在我们开始解决问题之前,让我们先定义一个只包含数字和字母的有效字符串的标准-字符串不应包含任何空格或特殊字符。字符串应由字母数字字符(a-


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

SublimeText3 English version
Recommended: Win version, supports code prompts!

Dreamweaver Mac version
Visual web development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools