景点网站怎么做,山东省建设厅的网站,wordpress 手动升级,凡科抽奖python从入门到实践
变量
messagehello world并不需要指出变量类型
方法
tittle()#以首字母大写的形式输出单词upper()#全部大写输出lower()#全部小写输出存储数据时经常使用lower#xff0c;因为无法确保数据是大写还是小写
rstrip()#输出删除字符串尾部多余…python从入门到实践
变量
messagehello world并不需要指出变量类型
方法
tittle()#以首字母大写的形式输出单词upper()#全部大写输出lower()#全部小写输出存储数据时经常使用lower因为无法确保数据是大写还是小写
rstrip()#输出删除字符串尾部多余的空格后的值
lstrip()#输出删除字符串头部多余的空格后的值
strip()#输出删除字符串两边多余的空格后的值从这里可以看出python对于数据和字符处理具有很多优势
range(1,5,2)#从一到四找一个随机数,步长为2value**2#value的平方字符串拼接
messagehello world
message2python
print(message.title() message2)直接通过加号的形式拼接
打印换行符和制表符
\t#制表符
\n#换行符他们都相当于字符串
强转
str(23)不强转会报错
注释
用#而不是//
列表
增加元素
类似于数组访问方式同数组
append()#在列表末尾添加一个元素
str.append(a)insert()#在数组特定位置插入元素
str.insert(0,‘a)按位置删除
del str[0]#删除第0个元素str.pop(0)#删除某个位置的元素并返回如果括号中不传参默认删除最后一个按值删除
str.remove(0)#删除值为0的元素排序
str.sort()#正序,sort不能直接在print中调用
str.sort(reverseTrue)#反序
sorted(str)#临时输出排序后的数组不改变原数组顺序反序
str.reverse()#将数组倒序改变数组长度
len(a)#返回值为a的长度a[-1]#永远链接最后一个元素除非a为空列表推导式
数学运算
min(列表名),max(),sum()列表格式操作
numberlist(range(1,5))
print(number)
#list()转换为列表列表解析
square[value**2 for value in range(1,10,2)]
print(square)切片
print(square[0:3])截取0到3的部分
print(square[-3:])只输出后三个元素
复制
new_squaresquare[:]#类似于克隆new_squaresquare#类似于指针元组
定义不可变的列表区别在于用元括号而非方括号
dimension(1,100)修改元组的唯一方式
dimension(1,100)
print(dimension)dimension(100,100)
print(dimension)重新定义元组
循环
for循环
magicians[alice,bob,dad]
for magician in magicians:print(magician)有C语言基础一秒看懂
while循环使用方法同上
while magician !alice:退出循环
break
continue用法同C语言
if条件
if d1:print(d)if d1 and d-10:print(d)if d1 or d-10:print(d)if 1 in dimension:#检查列表里面有没有某个元素print(d)if 1 not in dimension:#检查列表里面没有某个元素print(d)if 1 not in dimension:#三重条件判断print(d)
elif 100 in dimension:print(dimension)
else:print(1)有C语言基础一秒看懂
if birthday in pi:print(你的生日在圆周率里面)py的这种方式让人感觉非常口语化
字典
字典的作用在于索引形式上区别在于大括号
alien_0{color:green,point:5}
print(alien_0[color])字典的组成形式为一系列键值对键值对之间用 , 隔开键值对前为索引后为值通过 : 区分开.
键值对索引可以是任何形式的变量值也是
alien_0[x_position]100 #添加修改键值对
alien_0[y_position]10
print(alien_0)del alien_0[x_position] #删除键值对
print(alien_0)alien_0{1:green,point:5} #遍历键值对两种方法输出结果不一样
for point in alien_0.items():print(point)print(alien_0)for key in alien_0.keys()://提取键print(key)sorted(alien_0) #输出排序后的结果set() #输出集合后的结果字典嵌套
alien_0{1:green,point:5}
alien_1{1:green,point:5}
alien_2{1:green,point:5}alien[alien_0,alien_1,alien_2]
print(alien)pizza{1:asd,2:[1,2,3]
}
print(pizza)
print(pizza[2])输入
messageinput(hello)
print(message)结果是hello和输入的字符
input相当于兼顾了C语言中printf和scanf的功能
int(12) #将字符12强转为数字12函数
def greet():print(hello)
greet()先定义后使用高度依赖换行和缩进
传参
def greet(name):print(hello name)
greet(input())上面为函数传参的使用
两种传参方式
def greet(name):print(hello name)
greet(bob)def greet(name):print(hello name)
greet(namebob)默认值输入具体值以后会冲掉默认值
def greet(namebob):print(hello name)
greet()默认值和传参至少有一个也就是说必须函数里面每个变量都有值
返回值有C语言基础一秒看懂返回值类型任意
def greet(namebob):print(hello name)return yes
print(greet())传入多个参数
def greet(*name):print(name)return yes
print(greet(a,b))得到的name是一个元组
一个星号创建的是元组两个星号创建的是字典并且方式和建立有些不同
def greet(**name):print(name)
greet(asd123)导入包
导入函数
from g import greetgreet(alice)导入文件
import gg.greet(alice)别名
import g as goodgood.greet(alice)类
类是面向对象编程的具体形式类中具有属性和方法
类的基本声明
class Dog:def __init__(self,name,age): #self是必须的剩下两个表示属性self.namename #对属性分别需要声明self.ageage 类里面的函数被称为方法上面的_init__就是类里面的初始化方法受markdown语法限制这里写法可能不太正确
init的下划线是类里面的方法必须具备的作为一个标志区别类里面的方法和类外面的函数
实例化对象and访问对象类相当于一个模板可以根据一个类创建多个对象
my_dogDog(white,16)print(my_dog.name)默认属性
class Dog:def __init__(self,name):self.namenameself.age12my_dogDog(white)print(my_dog.age)默认属性不需要再init的参数里面体现在实例化的时候也不需要写出来但是可以直接调用获取这个值和修改
继承关系
class Dog:def __init__(self,name):self.namenameself.age12my_dogDog(white)
my_dog.age16
print(my_dog.age)class NBDog(Dog):def __init__(self,name):super().__init__(name)上述代码先定义了Dog这个类并且给定了初始化的方法接下来重新定义了NBDogNBDog是继承Dog类的子类所以在声明变量之前首先需要class NBDog(Dog)表示新的类是继承之前类的super()表示调用父类的方法父类也被称为超类所以调用父类的init的方法进行初始化。
定义子类的属性
class NBDog(Dog):def __init__(self,name):super().__init__(name)self.year10 #新定义的子类的属性
my_NBdogNBDog(black)
print(my_NBdog.year)重写父类方法
class Dog:def __init__(self,name):self.namenameself.age12def test(self):print(self.age)my_dogDog(white)
my_dog.age16
my_dog.test()class NBDog(Dog):def __init__(self,name):super().__init__(name)self.year10def test(self):print(fmy age is {self.age}) #这里要注意
my_NBdogNBDog(black)
my_NBdog.test()直接再写一个覆盖了就行
这段代码里面要注意最后一个print这里输出以后{}中间的内容是年龄具体的变量值f不会输出他的作用是将大括号中的内容视为变量值而不是都作为字符串输出
将类作为属性
class Ear:def __init__(self,length):self.lengthlengthclass Dog:def __init__(self, name):self.name nameself.age 12self.earEar(100);
my_dogDog(black)
print(my_dog.ear.length)如上Ear是dog的一部分结果是100
导入类包
from g import Car #导入方式my_carCar(tesla)
print(my_car.name)from g import Car前后顺序不能互换
导入多个类时在Car后面加逗号然后加入别的类
导入整个包调用类时用点访问
import gmy_carg.Car(tesla)
print(my_car.name)文件操作和异常
读取文件操作
with open(test.txt) as hello: #打开文件hello可以自定义变量名contentshello.read() #读取文件中的内容到contents中
print(contents) #打印出contents中的内容with的作用在于不需要手动关闭文件表示在代码块中使用
在读取文件后显示的实际上末尾会多出来一个空行因为文件读取到末尾会返回一个空字符串而打印出来显示的就是空行
如果不想要这个空行的话可以使用print(contents.rstrip())来删除字符串末尾多余的空格或者换行
py在文件查询的过程中默认是在与代码文件相同目录的文件夹进行查询如果需要对子文件进行查询需要找到其子文件夹
注意在相对路径中我们一般使用/这个斜杠因为\这个反斜杠会被认为是转义字符的标志如果非要用\这个斜杠的话那就需要用两个\斜杠表示对每两个\斜杠都转义为一个\斜杠
读取文件并逐行输出
filenametest.txt
with open(filename) as hello:for line in hello:print(line)读取文件内容并且存储到列表中
filenametest.txt
with open(filename) as hello:lineshello.readlines()
print(lines)写入文件
filenametest.txt
with open(filename,w) as hello:hello.write(hello)其中w表示写入模式可以替换为r读入模式r读写模式a附加模式如果忽略的话默认以只读模式打开
如果文件原本并不存在的话open函数将会自动创建一个以其命名的文件
如果用w打开的话文件内容会是新写入的内容之前的内容会被清空
如果想要附加的话要用a模式
异常
使用try和except组合来捕捉异常
try:print(5/0)
except:print(error)实际上不同的异常except后面应该接不同的异常但是对于初学者可以直接都不用加这样方便很多
如果不需要任何东西的话在except后接pass就行
杂项
分析文本
titlealice in bob
print(title.split())split方法表示根据空格分开文本并且生成一个列表
json文件
写入json文件
import jsonnumbers[1,3,5,9,4,11]
filenamenumbers.jsonwith open(filename,w) as f:json.dump(numbers,f)json.dump函数接受两个参数第一个是传入的内容第二个是文件名
读取json文件
import jsonfilenamenumbers.jsonwith open(filename) as f:numbersjson.load(f)
print(numbers)使用json.load函数来读取或存储json文件中的数据
重构
将一整个函数分成多个子功能并且在需要时调用子功能
测试
import unittest #导入单元测试的包
from name_function import get_formatted_name #导入要测试的函数class NamesTestCase(unittest.TestCase): #创建一个Test的类要继承unittest.TestCase表示单元测试def test_first_last_name(self):formatted_name get_formatted_name(janis, joplin) #后面是函数运行前面用来接受返回的结果self.assertEqual(formatted_name, Janis Joplin) #断言方法相当于一个比较比较前后是否相等
if __name__ __main__:unittest.main()这个测试是单元测试首先要导入单元测试的包然后创建一个表示Test的类接着定义一个方法在方法中比较得到的结果与预期是否相符
最后的if是判断特殊变量是不是main也就是说目前存放代码的文件是不是你要执行运行的文件如果是的话name的值就是main然后执行后面的测试
unnittest.main()函数每次都会先执行test_打头的函数所以在定义测试函数的时候要注意函数的命名
常见的断言方法
还有一个方法叫setup在Test类中被优先调用。在测试自己编写的类时方法setUp让测试方法编写起来更加容易可以在setUp()方法中创建一系列实例并设置其属性再在测试方法中直接使用这些实例。相比于在每个测试方法中都创建实例并设置属性这种方法要更加容易。