10.用户输入和循环
input()函数,接受用户输入,
name=input("input your name")
print(name)
while循环:
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
message = ""
while message != 'quit':
message = input(prompt)
print(message)
删除列表中所有的特定的值:
c=['a','b','b','c']
while 'b' in c:
c.remove('b')
print(c)
11.函数
使用def定义函数。
关键字实参 是传递给函数的名称—值对。你直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆(不会得到名为Hamster的harry这样的结果)。
关键字实参让 你无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。
def describe_pet(animal_type, pet_name):
"""显示宠物的信息"""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(animal_type='hamster', pet_name='harry')
编写函数时,可以为形参设置默认值:
def describe_pet(animal_type, pet_name='dog'):
"""显示宠物的信息"""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(animal_type='hamster', pet_name='harry')
函数也可以处理列表中的值,若不想影响原有的列表,可以利用切片的方法,传递列表的副本。
fun(c[:])
若预先不知道函数的实参个数,可以利用如下形式:
def make(*poping):
print(poping)
make('aaa','bbb','ccc')
将函数存储到模块中:
(1)导入整个模块: 要让函数是可导的,需要先创建模块(以.py为结尾的文件),例如pizza,之后在相同目录下创建另一个文件,直接使用
import pizza
使用pizza.内部函数名,即可使用pizza模块内部的函数。
(2)导入特定的函数:
from module_name import function_name
(3)使用as方式指定别名
from module_name import function_name as fun_name
(4)导入模块中的所有函数:
from module_name import *
12.类
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
类中的函数称为方法,方法__init__() 是一个特殊的方法,每当你根 据Dog 类创建新实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。 我们将方法__init__() 定义成了包含三个形参:self 、name 和age 。在这个方法的定义中,形参self 必不可少,还必须位于其他形参的前面。为何必须在方法定义中包 含形参self 呢?因为Python调用这个__init__() 方法来创建Dog 实例时,将自动传入实参self 。每个与类相关联的方法调用都自动传递实参self ,它是一个指向实例本身 的引用,让实例能够访问类中的属性和方法。
以self 为前缀的变量都可供类中的所有方法使用,我们还可以通过类的任何实例来访问这些变量。self.name = name 获取存储在形 参name 中的值,并将其存储到变量name 中,然后该变量被关联到当前创建的实例。self.age = age 的作用与此类似。像这样可通过实例访问的变量称为属性。
init方法返回该类的信息
class Dog():
def __init__(self,name,age):
self.name=name
self.age=age
def sit(self):
print(self.name.title()+"is sitting")
mydog=Dog('zhangbing','6')
print(mydog.name)#访问属性
mydog.sit()#访问方法
继承
子类继承其父类所有的方法和属性,实例使用方法如下:
class ElectricCar(Car):#括号中填写父类名称
"""电动汽车的独特之处"""
def __init__(self, make, model, year):
"""初始化父类的属性"""
super().__init__(make, model, year)#super访问父类,并调用父类的init函数,获得信息
self.battery_size = 70 #子类单独的属性
重写父类的方法:可在子类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这 个父类方法,而只关注你在子类中定义的相应方法。
执行时只会使用子类中重写后的方法。
将实例当作类,类的一部分可以作为一个大类属性,例如下方电瓶车类中一个属性为另一个类电瓶:
class Battery():
"""一次模拟电动汽车电瓶的简单尝试"""
def __init__(self, battery_size=70):
"""初始化电瓶的属性"""
self.battery_size = battery_size
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a " + str(self.battery_size) + "-kWh battery.")
class ElectricCar(Car):
"""电动汽车的独特之处"""
def __init__(self, make, model, year):
""" 初始化父类的属性,再初始化电动汽车特有的属性"""
super().__init__(make, model, year)
self.battery = Battery()
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name()) my_tesla.battery.describe_battery()
导入类
from 文件名 import 类名a,类名b…
导入整个模块,
import 文件名
from xxx import xxx
可以通过该方法使用其它标准库的函数和类