python-查漏补缺

由于从未系统学过python的相关知识,故今天将之前遗漏的部分内容,稍作补充

1.函数部分

1.字符串处理

去末尾空格 s.rstrip()
去头空格   s.lstrip()
去首尾空格 s.strip()
首字母大写 s.title()

2.乘方计算 用**表示

3**2 9
4**3 64

2.列表

name=['jian','xu','hao','miao','bin','zhen']
print(name[5])
print(name[-1])
name.append('ma')#末尾添加
name.insert(0,'na')#任意位置添加
del name[0]#删除第一个元素
a=name.pop(0)#弹出第一个元素,注意区分栈中的pop
name.remove('ma')#删除值为ma的元素(只删除第一个)
name.sort()#永久排序正序
name.sort(reverse=True)#倒序
sorted(name)#临时排序,注意区别
name.reverse()#反转列表
len(name)#长度
#遍历列表
for na in name:
   print(na)   

类似vector的概念,但不同的是可以支持负数访问,即name[-1],表示倒数第一个元素
range函数

for i in range(1,5)#i从1到4
numbers=list(range(1,5))#创建数字列表 numbers=[1,2,3,4]
numbers=list(range(2,11,2))#创建数字列表,步长为2numbers=[2,4,6,8,10]
a=min/max(numbers)
a=sum(numbers)

列表解析

squares=[value**2 for value in range(1,11)]
squares=[1,4,9...100]#建立平方列表

切片读取列表元素

name[a:b]读取a到b,a为起始下标,b为终止下标,均可省略

列表复制

name1=name[:]#这里必须使用切片,只有这样才会复制内容,否则只是引用关联

while 循环删除列表中的元素

pets=['cat','dog','cow','cat','dog']
while 'cat'in pets:
    pets.remove('cat')
print(pets)
`` `

 ## 3.元组  
 与列表不同,元组是不可修改的一组元素
 且定义用()

```python
numbers=(20,32)#元组的定义

4.逻辑判断

#and作用同&&
if a<8 and a>3
#or作用同||
if a>8 or a<3
#检验特定值是否存在于列表中
if '...' in name
if '...' not in name
#区别于c中的else if,python 使用elif
if condition1:
	do1
elif condition2:
	do2
...
else:
   do n

5.字典

作用于map与class的结合近似,即键值对的形式

#简单定义与调用
people1={}#建立空字典
people1={'name':'ma','age':'18','sex':'male'}
print(people1['name'])
print(people1['sex'])
#添加
people1['hobby']='sda'
#删除
del people1['hobby']
#遍历一所有键值对
for key,value in people1.items():#key,value可以是任意变量名
    print("key : "+key)
    print("value : "+value)
#只遍历键
for key in people1.keys():
#也可不显式调用keys方法
for key in people1:
#顺序遍历
for key in sorted(people1.keys()):
#只遍历值
for value in people1.values():
为了避免重复,可用set去重
for value in set(people1.values()):for value in set(people1.values()):
#列表中存储字典
people[people1,people2,people3]
#字典中存储列表
people1={'name':'ma',
          'hobby':['basketball','reading','run']
        }
#在字典中存储字典
players={
        'A':{'name':'ma',
             'age':'18'
             },
         'B':{'name':'jack',
             'age':'19'
             }

        }
for player,play_info in players.items():
    print("player:"+player)
    print(play_info['name']+" "+play_info['age'])

6.用户输入

#简单语法
message=input("please input: ")#input参数可空白
print(message)

需要注意的是input()输入的是字符串型变量,如果用于数值类的操作,需对其进行强制类型转化

a=input()
a=int(a)

7.函数

定义格式:def 函数名(参数1,参数2、、、):
几点重要不同
1.关键字实参,在传递给函数的名称-值对。直接指出各个实参对应的形参

def desribes(name,age):
    print(name)
    print(age)

desribes('as','18')#普通调用
desribes(name='asa',age='19')#关键字调用   

几种等效的函数调用

def desribes(name='as',age='0'):
    print(name)

desribes('ma')
desribes(name='ma')
desribes('na','2')
desribes(name='na',age='2')
desribes(age='2',name='na')

传递列表

def desribes(names):
    for name in names :
      print(name)

names=['jack','john','kitty','julie']
desribes(names)
desribes(names[:])

这里列表有两种形式,但区别在于,第一种可以在函数中修改列表内容,传递的是原件,第二种即切片表示法,传递的是副本,不能修改原列表
传递任意数量的形参
用*来建立一个列表,传过来的参数就储存在列表中

def Students(*names):
    for name in names :
      print(name)

Students('sd','ds','dsf'...)
如果需要将位置实参与任意数量实参结合使用,则要把任意实参放在最后
即 
def Students(number,*names):
Students(12,'ma'...)

任意数量的关键字实参:有时候在不知道传递给函数的是什么信息时,可以将函数编写为能够存储任意数量的键值对的形式

def Students(first,last,**student_info):
     profile={}
     profile['first']=first
     profile['last']=last
     for key,value in student_info.items():
         profile[key]=value
     print(profile)

Students('sd','ds',Location='Tai',sex='male')

将函数存储在模块中,以及模块的调用

#ppp.py模块
def Students(first,last,**student_info):
     profile={}
     profile['first']=first
     profile['last']=last
     for key,value in student_info.items():
         profile[key]=value
     print(profile)
#ptest.py 调用
1.
import ppp
ppp.Students('ms','ss',Location='sd')
2.为 ppp重命名
import ppp as p
p.Students('ms','ss',Location='sd')
3.调用函数
from ppp import Students
Students('ms','ss',Location='sd')
4.
from ppp import Students as S
S('ms','ss',Location='sdS')
5.使用*导入所有函数,而非模块全部内容,避免冲突
from ppp import *
Students('ms','ss',Location='sdS')

注意:编写函数最好使用描述性名称,尽量使用小写字母以及下划线
给实参指定默认值时,等号两边要避免空格

8.类

基本形式

class Dog():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def back(self):
        print(self.name+" : wang"+)
    def rool(self):
        print(self.name.title()+" rolled over")

其中__init__相当于c中的构造函数
实例化

my_dog=Dog('bb', 2)
my_dog.back()

其他方法和变量的调用与c++一致,不再说明
继承 ***

class Animal():
    def __init__(self,name,age):
        self.name=name
        self.age=age


class Food():
    def __init__(self,food):
        self.food=food
    def printfood(self):
        return self.food


class Dog(Animal):
    def __init__(self,name,age):
        super().__init__(name,age)#super()是一个特殊的函数,用以将子类与父类(也称超类)关联起来
        self.sound='wang'#添加新属性
        self.food=Food('bone')#将实例类用作属性
    def back(self):
        print(self.name+" : "+self.sound)
    def rool(self):
        print(self.name.title()+" rolled over")
    def eat(self):
        print(self.name+" eats "+self.food.printfood())
my_dog=Dog('bb', 2)
my_dog.eat()

类的导入
同函数模块部分一样,类的导入有多种形式,下面以Car/Electriccar/Battery三类给出几种方法给出几种方法

1.导入单个类 from car import Car
2.在一个含多个模块的类中导入类
from car import Electriccar(Car的子类)
3.导入整个模块
import car

补充-类的编码风格
1.类名采用驼峰命名法——类名中每个单词首字母大写,不适用下划线,实例名和模块名均使用小写,使用下划线
2.每个类后,最好包含一个文档字符串以解释类的作用
3.使用空行组织代码,类中方法用一个空行,模块中类的分隔则用两个空行

9.文件异常操作

使用with方法读取文件,有效避免了因close的错误使用造成的麻烦

with open('D:/pyfile/test.txt') as file:#返回一个句柄
    data=file.read()
    print(data)

逐行读取

with open('D:/pyfile/test.txt') as file:
    for line in file:
        print(line)

结果行间之间会出现两个空行,这是因为读取的文件时,每行的末尾会出现一个换行符,而print语句也会输出一个换行符
若取出这些空行,可用前面的line.rstrip()以清楚右面的空格,左面的空格可用strip
创建一个包含文件各行内容的列表

with open('D:/pyfile/test.txt') as file:
    lines = file.readlines()

文件的几种打开方式

open('D:/pyfile/test.txt''r')#读取,默认
open('D:/pyfile/test.txt''w')#写入
open('D:/pyfile/test.txt''a')#附加 即将内容附加到末尾,而不覆盖原内容 

异常处理
以a/b为例

a=input("please input a")
a=int(a)
b=input("please input b")
b=int(b)
try:
    c=a/b
except Exception as err:#异常处理
    print(err)
else:#try成功后执行操作
    print(c)

存储数据:json 模块
存储与读取
dump与load函数
dump将内容序列化,并写入打开的文件中。

import json
numbers=[2,3,4,7,9]
filename='numbers.json'
with open(filename, 'w') as file:#存储数字列表
    json.dump(numbers,file)
with open(filename, 'r') as file:#读取数字列表
    numbers2=json.load(file)
print(numbers2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值