第二天、第四天学习python

#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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值