#2.14列表解析
squared = [x ** 2 for x in range(4)]
for i in squared:
print(i)
sqdEvens = [x ** 2 for x in range(4) if not x % 2] #这里的%用的很巧,求余数刚好可以当作布尔数
for i in sqdEvens:
print(i)
#2.15 文件和内建函数open()、file()
handle = open(file_name, access_mode ='r')# r 读取 w 写入 a 添加 + 读写 b 二进制访问 不提供access_mode 时默认为r,
readlines()
close()
filename = input('dfs')
fobj = open(filename, 'r')
for eachLine in fobj:
print(eachLine),#逗号抑制换行符,(但我这里显示的是,出现了很多(None,))
fobj.close()#这句不好使。。。
fobj = open('hah.txt', 'r')
for eachLine in fobj:
eachLine = eachLine.strip('\n')#这样才真正抑制了换行符。。。
print(eachLine)
## 2.16 try except 错误和异常
try:
fobj = open('hah.txt', 'r')
for eachLine in fobj:
eachLine = eachLine.strip('\n')#这样才真正抑制了换行符。。。
print(eachLine)
fobj.close()#这句不好使。。。
except IOError as e:#这里的as是3.x版本的
print('file open error:'),e
##2.17 函数
def addMe2Me(x):
'apply+ operation to argument'
return(x+x)
def foo(d=True):#参数默认值 ,也可以是其他值
'determine if in debug mode with default argument'
if d:
print('in debug mode')
print('done')
##2.18 类
class fooclass(object):
"""my very first class: fooClass"""
version = 0.1
def _init_(self, nm = 'john'):
"""constructor"""
self.name = nm
print('created',nm)
def showname(self):
"""haha"""
print('your name is:',self.name)
print('my name is',self._class_._name_)
def showver(self):
"""fsjfl"""
print(self.version)
def addMe2Me(self,x):
"""sfsjf"""
return x+x
fool = fooclass()
foo2 = fooClass('jane')#没好使!!!
##2.19 模块
import sys
sys.stdout.write('sfdsfl\n')
sys.platform
sys.version #显示AMD这不是处理器的品牌,是架构。
##2.20 实用函数
dir()#显示对象的属性
help()#交互式帮助
#int()将对象转换成整数
#len()返回对象的长度
#open(filename,mode)打开文件,mode 有r w a
##廖雪峰的python教程
#python代码运行助手 有点意思。。
print('sfds','sdfds','sdfs')#遇到逗号会输出一个空格
#python使用缩进来组织代码块,按照约定俗成的习惯,坚持使用4个空格来进行缩进
#可以把文档编辑器的tab设置成4个空格
#'''...'''这个格式没弄懂
'abc'.encode('ascii')
b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'.decode('utf-8')
len(b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0') #字符串所占的字节数
#在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8对str和bytes进行转换。
#!/usr/bin/env python3
# -*- coding: utf-8 -*
'dsfs%s' % 'world'
#格式化:%s 字符串 %d 整数 %f 浮点数 %x 十六进制整数
#list可以用[-i]索引倒数第i个元素
classmates=['s','sdf','sfs']
classmates.append('ac')
classmates.insert(2, 'dsfs')
classmates.pop()
classmates.pop(0)
c = [23342,'sfs',classmates]
#tuple
t = (12,23)
t = (1,)
c[2][0]
#条件判断: 冒号 elif 判断条件简写(非零非空为真,否则为假) 注意缩进
x = input()
x = int(x)
if x:
print(x)
#循环
for i in [33,'dsfsf',2432]:
print(i)
for i in range(3,10,2):
print(i)
n = 0
s = 0
while n < 11:
s = s + n
n += 1
print(n,s)
#dict 用空间换取时间的方法。key必须是不可变对象,字符串、整数都是不可变的,可以当作key;list可变,不能作为key。
d = { 'sf':87, 4:'e3r'}
d[4]
5 in d
d.get(5)
d.get(4)
d.get(5,-1)
d.pop(4)
d[6]=7
# set 编写时用([]),输出时用{},
s = set ([34,34,2])
s.add('s')
s.add('sfds')
s.remove(2)
s1 = set([34,3,'wer'])
s & s1
s and s1
s1 and s
s | s1
#不变对象
a = 'abc'
b = a.replace('a','A')
print(a,b)
x = (1,2) #tuple可以加入dict 或set
d[x]= 78
s.add(x)
y = (1,[2,3],2) #带有list的tuple 不可以加入dict或set
d[y]=77
s.add(y)
#数据类型转换
int('123')
int('a')#错误
int(12,2)
float('23,2')
str(12,3)
bool(22)#返回True
bool('')#返回False
n1 = 255
n2 = 1000
print('%s\n%s' % (hex(n1),hex(n2)))
from testabs import myabs
def nop():
pass
def my_abs(x):
if not isinstance(x,(int, float)):
raise TypeError('sdfs')#并没有想教程里一样起作用
if x >= 0:
return x
else:
return -x
import math
def move(x,y,step,angle = 0):
nx = x +step*math.cos(angle)
ny = y -step*math.sin(angle)
return nx,ny
r = move(2,3,6)#输出是一个tuple
#位置参数
def enroll(name, gender, age = 6, city = 'harbin'):
print('name:',name)
print('gender:',gender)
print('age:',age)
print('city:',city)
enroll('hah','F')
enroll('sarah',"F",city = 'chognqing')
#[]不是不变对象,None才是。
#可变参数:允许传入任意个参数,这些可变参数在函数调用时自动组装成一个tuple
def calc(numbers):
sum = 0
for i in numbers:
sum = sum + i**2
print(sum)
def calc(*numbers):
sum = 0
for i in numbers:
sum = sum + i**2
print(sum)
cc = (1,2,3)
calc(*cc)
#关键字参数
def person(name,**kk):
print('name:',name)
print('other:',kk)
person('jacky',lover='huihui')
extra = {'lover':'huihui','home':'bql'}
person('jacky',**extra)
def person2(name,*,city):
print(name,city)
person2('jacky',city = 'bql')
person2('jacky',age = 22)
#组合参数:必选参数、默认参数、可变参数/命名关键字参数、关键字参数,按照顺序
def f1(a,b=3,*c,**kk):
print('a=',a,'b=',b,'c=',c,'kk=',kk)
f1(1,2,'bc',2,ahah=23)
def f2(a,b=3,*,c,**kk):
print('a=',a,'b=',b,'c=',c,'kk=',kk)
f2(1,2,c=33,kj=23)
#神奇的tuple和dict调用函数
a1 = (1,2,'bc',23,22)
a2 = {'dsfj':'dsfjs','dsf':3343}
f1(*a1,**a2)
b1 = (1,2)
b2 = {'c' : 23, 'sf': 'fdsf'}
f2(*b1,**b2)
##递归
def fact(n):
if n == 1:
return 1
return n * fact(n-1)
fact(33)
递归练习题 汉诺塔没搞明白!
#尾递归
def fact2(n):
return fact_iter(n,1)
def fact_iter(num,product):
if num == 1:
return product
return fact_iter(num-1,num * product)
def peach(n):#孙悟空吃桃问题
if n==1:
return 4
return 2*(peach(n-1)+1)
def steps(n):#爬楼梯
if n==1:
return 1
if n==2:
return 2
return steps(n-1)+steps(n-2)
#切片
L = ['a','b','c','d','e','f','g']
#L[a:b] 从第a个开始,到第b个结束,包括a,不包括b
L[:3]#与L[0:3]相同
L[-2:]
L[:-2]
L[1:3]
L[1:2]
L[-2:-1]
L[-2:-0]#没有这种写法!
L[:]
L[::2]
L[1::2]
(0,1,2,3,4)[:3]#tuple
'abcdefg'[-3:]#字符串也是list
squared = [x ** 2 for x in range(4)]
for i in squared:
print(i)
sqdEvens = [x ** 2 for x in range(4) if not x % 2] #这里的%用的很巧,求余数刚好可以当作布尔数
for i in sqdEvens:
print(i)
#2.15 文件和内建函数open()、file()
handle = open(file_name, access_mode ='r')# r 读取 w 写入 a 添加 + 读写 b 二进制访问 不提供access_mode 时默认为r,
readlines()
close()
filename = input('dfs')
fobj = open(filename, 'r')
for eachLine in fobj:
print(eachLine),#逗号抑制换行符,(但我这里显示的是,出现了很多(None,))
fobj.close()#这句不好使。。。
fobj = open('hah.txt', 'r')
for eachLine in fobj:
eachLine = eachLine.strip('\n')#这样才真正抑制了换行符。。。
print(eachLine)
## 2.16 try except 错误和异常
try:
fobj = open('hah.txt', 'r')
for eachLine in fobj:
eachLine = eachLine.strip('\n')#这样才真正抑制了换行符。。。
print(eachLine)
fobj.close()#这句不好使。。。
except IOError as e:#这里的as是3.x版本的
print('file open error:'),e
##2.17 函数
def addMe2Me(x):
'apply+ operation to argument'
return(x+x)
def foo(d=True):#参数默认值 ,也可以是其他值
'determine if in debug mode with default argument'
if d:
print('in debug mode')
print('done')
##2.18 类
class fooclass(object):
"""my very first class: fooClass"""
version = 0.1
def _init_(self, nm = 'john'):
"""constructor"""
self.name = nm
print('created',nm)
def showname(self):
"""haha"""
print('your name is:',self.name)
print('my name is',self._class_._name_)
def showver(self):
"""fsjfl"""
print(self.version)
def addMe2Me(self,x):
"""sfsjf"""
return x+x
fool = fooclass()
foo2 = fooClass('jane')#没好使!!!
##2.19 模块
import sys
sys.stdout.write('sfdsfl\n')
sys.platform
sys.version #显示AMD这不是处理器的品牌,是架构。
##2.20 实用函数
dir()#显示对象的属性
help()#交互式帮助
#int()将对象转换成整数
#len()返回对象的长度
#open(filename,mode)打开文件,mode 有r w a
##廖雪峰的python教程
#python代码运行助手 有点意思。。
print('sfds','sdfds','sdfs')#遇到逗号会输出一个空格
#python使用缩进来组织代码块,按照约定俗成的习惯,坚持使用4个空格来进行缩进
#可以把文档编辑器的tab设置成4个空格
#'''...'''这个格式没弄懂
'abc'.encode('ascii')
b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'.decode('utf-8')
len(b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0') #字符串所占的字节数
#在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8对str和bytes进行转换。
#!/usr/bin/env python3
# -*- coding: utf-8 -*
'dsfs%s' % 'world'
#格式化:%s 字符串 %d 整数 %f 浮点数 %x 十六进制整数
#list可以用[-i]索引倒数第i个元素
classmates=['s','sdf','sfs']
classmates.append('ac')
classmates.insert(2, 'dsfs')
classmates.pop()
classmates.pop(0)
c = [23342,'sfs',classmates]
#tuple
t = (12,23)
t = (1,)
c[2][0]
#条件判断: 冒号 elif 判断条件简写(非零非空为真,否则为假) 注意缩进
x = input()
x = int(x)
if x:
print(x)
#循环
for i in [33,'dsfsf',2432]:
print(i)
for i in range(3,10,2):
print(i)
n = 0
s = 0
while n < 11:
s = s + n
n += 1
print(n,s)
#dict 用空间换取时间的方法。key必须是不可变对象,字符串、整数都是不可变的,可以当作key;list可变,不能作为key。
d = { 'sf':87, 4:'e3r'}
d[4]
5 in d
d.get(5)
d.get(4)
d.get(5,-1)
d.pop(4)
d[6]=7
# set 编写时用([]),输出时用{},
s = set ([34,34,2])
s.add('s')
s.add('sfds')
s.remove(2)
s1 = set([34,3,'wer'])
s & s1
s and s1
s1 and s
s | s1
#不变对象
a = 'abc'
b = a.replace('a','A')
print(a,b)
x = (1,2) #tuple可以加入dict 或set
d[x]= 78
s.add(x)
y = (1,[2,3],2) #带有list的tuple 不可以加入dict或set
d[y]=77
s.add(y)
#数据类型转换
int('123')
int('a')#错误
int(12,2)
float('23,2')
str(12,3)
bool(22)#返回True
bool('')#返回False
n1 = 255
n2 = 1000
print('%s\n%s' % (hex(n1),hex(n2)))
from testabs import myabs
def nop():
pass
def my_abs(x):
if not isinstance(x,(int, float)):
raise TypeError('sdfs')#并没有想教程里一样起作用
if x >= 0:
return x
else:
return -x
import math
def move(x,y,step,angle = 0):
nx = x +step*math.cos(angle)
ny = y -step*math.sin(angle)
return nx,ny
r = move(2,3,6)#输出是一个tuple
#位置参数
def enroll(name, gender, age = 6, city = 'harbin'):
print('name:',name)
print('gender:',gender)
print('age:',age)
print('city:',city)
enroll('hah','F')
enroll('sarah',"F",city = 'chognqing')
#[]不是不变对象,None才是。
#可变参数:允许传入任意个参数,这些可变参数在函数调用时自动组装成一个tuple
def calc(numbers):
sum = 0
for i in numbers:
sum = sum + i**2
print(sum)
def calc(*numbers):
sum = 0
for i in numbers:
sum = sum + i**2
print(sum)
cc = (1,2,3)
calc(*cc)
#关键字参数
def person(name,**kk):
print('name:',name)
print('other:',kk)
person('jacky',lover='huihui')
extra = {'lover':'huihui','home':'bql'}
person('jacky',**extra)
def person2(name,*,city):
print(name,city)
person2('jacky',city = 'bql')
person2('jacky',age = 22)
#组合参数:必选参数、默认参数、可变参数/命名关键字参数、关键字参数,按照顺序
def f1(a,b=3,*c,**kk):
print('a=',a,'b=',b,'c=',c,'kk=',kk)
f1(1,2,'bc',2,ahah=23)
def f2(a,b=3,*,c,**kk):
print('a=',a,'b=',b,'c=',c,'kk=',kk)
f2(1,2,c=33,kj=23)
#神奇的tuple和dict调用函数
a1 = (1,2,'bc',23,22)
a2 = {'dsfj':'dsfjs','dsf':3343}
f1(*a1,**a2)
b1 = (1,2)
b2 = {'c' : 23, 'sf': 'fdsf'}
f2(*b1,**b2)
##递归
def fact(n):
if n == 1:
return 1
return n * fact(n-1)
fact(33)
递归练习题 汉诺塔没搞明白!
#尾递归
def fact2(n):
return fact_iter(n,1)
def fact_iter(num,product):
if num == 1:
return product
return fact_iter(num-1,num * product)
def peach(n):#孙悟空吃桃问题
if n==1:
return 4
return 2*(peach(n-1)+1)
def steps(n):#爬楼梯
if n==1:
return 1
if n==2:
return 2
return steps(n-1)+steps(n-2)
#切片
L = ['a','b','c','d','e','f','g']
#L[a:b] 从第a个开始,到第b个结束,包括a,不包括b
L[:3]#与L[0:3]相同
L[-2:]
L[:-2]
L[1:3]
L[1:2]
L[-2:-1]
L[-2:-0]#没有这种写法!
L[:]
L[::2]
L[1::2]
(0,1,2,3,4)[:3]#tuple
'abcdefg'[-3:]#字符串也是list