Python学习笔记-04

31.无限循环:

sum = 0
while True:
   sum = sum + 1
   print(sum)

输出:

1

2

3

4

.....

该例子会无限输出数字,每次加1,因为始终都满足条件,所以无限循环,在使用无限循环时,需要在特定的地方使用跳出循环的语句,来结束循环,不然程序无法停止

该方法可以用在需要无限循环,但是到达某种条件后就停止的地方

 

32.break语句

break语句主要用于结束循环

例子:游戏中,主角找到金币,则金币加1,当找到5金币时,就提示主角生命值加1,并且清空金币总数

sum = 0
while True:
   sum = sum + 1
   print("还有", sum, "个金币")
if sum >= 4:
break
print("生命值加1")
sum = 0
print("还有", sum, "个金币")

输出:

还有 1 个金币

还有 2 个金币

还有 3 个金币

还有 4 个金币

生命值加1

还有 0 个金币

 

33.continue语句

continue语句一般是用于跳出本次循环,执行下次循环。

例子:输出100以内的偶数

n = 0
while n < 101:
   n = n + 1
   if n % 2 == 1:
continue
   print(n, end=" ")

输出:

2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100

 

34.字典类型

字典数据类型是通过键-值对的形式进行数据存储的类型

d = {key1 : value1, key2 : value2 }

字典数据查询

fruits = {"apple": "1kg", "orange": "4kg", "banana": "3kg"}
print("需要买苹果", fruits["apple"])

输出:

需要买苹果 1kg

当需要查询的键不在字典中时会报错

fruits = {"apple": "1kg", "orange": "4kg", "banana": "3kg"}
print("需要买梨子", fruits["pear"])

报错:

KeyError: 'pear'

字典数据修改

fruits = {"apple": "1kg", "orange": "4kg", "banana": "3kg"}

fruits["apple"] = "10kg"

print("需要买苹果", fruits["apple"])

输出:

需要买苹果 10kg

字典数据删除:pop(key)

fruits = {"apple": "1kg", "orange": "4kg", "banana": "3kg"}

print(fruits)

fruits.pop("banana")

print(fruits)

输出:

{'apple': '1kg', 'orange': '4kg', 'banana': '3kg'}

{'apple': '1kg', 'orange': '4kg'}

字典中的键是不能重复的,如果重复,后一个键对应的值是该键的值,前一个键对应的值则相当于不存在

fruits = {"apple": "1kg", "orange": "4kg", "banana": "3kg", "orange": "7kg"}

print(fruits)

输出:

{'apple': '1kg', 'orange': '7kg', 'banana': '3kg'}

并且键是不能改变的,不能使用列表作为键

 

35.set类型

set类型是一组键(key)的集合,需要输入一个列表

s = set([1, 2, 4, 3])

print(s)

输出:

{1, 2, 3, 4}

set存的是键,因此set内是不重复的

s = set([1, 2, 4, 3, 2, 4])

print(s)

输出:

{1, 2, 3, 4}

set的添加键操作

s = set([1, 2, 4, 3])

s.add(7)

print(s)

输出:

{1, 2, 3, 4, 7}

set的删除操作

s = set([1, 2, 4, 3])

s.remove(2)

print(s)

输出:

{1, 3, 4}

两个set之间还可以进行数学上的交集,并集操作

s1 = set([1, 2, 4])

s2 = set([2, 4, 3])

print("交集", s1 & s2)

print("并集", s1 | s2)

输出:

交集 {2, 4}

并集 {1, 2, 3, 4}

 

36.内置函数

Built-in Functions

abs()  获取绝对值  

delattr()  删除对象的属性  

hash()  哈希值  

memoryview()  根据传入的参数创建一个新的内存查看对象  

set()  根据传入的参数创建一个新的集合  

all()  判断迭代器中的元素是否都为真,(都为真返回True,否则返回false)  

dict()  创建数据字典  

help()  返回对象的帮助文档  

min()  返回给定元素里最小值  

setattr()  设置对象的属性值  

any() 判断可迭代对象的元素是否有为True值的元素   

dir()  不带参数时返回当前范围内的变量,方法和定义的类型列表,带参数时返回参数的属性,方法列表  

hex()  将十进制数转化成为十六进制数  

next()  返回一个可迭代数据结构(如列表)中的下一项  

slice()  切片功能  

ascii()  调用对象的__repr__()方法(__repr__()方法传入一个对象,将该对象用字符串显示),获得该方法的返回值  

divmod()  分别取商和余数  

id()  返回对象的内存地址  

object()  获取一个新的,无特性(geatureless)对象  

sorted()  排序  

bin()  将十进制数转化成为二进制数  

enumerate()  根据可迭代对象创建枚举对象  

input()  获取用户输入内容 

oct()  将十进制数转化成为八进制数  

staticmethod()  静态方法  

bool()  判断一个对象是真还是假  

eval()  将字符串str当成有效的表达式来求值并返回计算结果  

int()  将一个字符串或数值转换为一个普通整数  

open()  打开文件  

str()  将字符类型/数值类型等转换为字符串类型  

breakpoint()  被调用时,让执行切换到调试器  

exec()  执行字符串或complie方法编译过的字符串,没有返回值  

isinstance()  检查对象是否是类的对象,返回True或False  

ord()  查看某个ASCII对应的十进制数  

sum()  求和  

bytearray()  根据传入的参数创建一个新的字节数组  

filter()  过滤器,构造一个序列,等价于[ item for item in iterables if function(item)],在函数中设定过滤条件,逐一循环迭代器中的元素,将返回值为True时的元素留下,形成一个filter类型数据  

issubclass()  检查一个类是否是另一个类的子类。返回True或False  

pow()  幂函数  

super()  调用父类的方法  

bytes()  将一个字符串转换成字节类型  

float()  将一个字符串或整数转换为浮点数  

iter()  返回一个迭代对象  

print()  输出函数  

tuple()  元组构造函数  

callable()  判断对象是否可以被调用  

format()  格式化输出字符串  

len()  返回对象长度,参数可以是序列类型(字符串,元组或列表)或映射类型(如字典)  

property()  标示属性的装饰器  

type()  显示对象所属的类型  

chr()  查看十进制数对应的ASCII字符  

frozenset()  创建一个不可修改的集合  

list()  列表构造函数  

range()  根据需要生成一个指定范围的数字,可以提供你需要的控制来迭代指定的次数  

vars()  返回当前作用域内的局部变量和其值组成的字典,或者返回对象的属性列表  

classmethod()  用来指定一个方法为类的方法  

getattr()  获取对象的属性  

locals()  打印当前可用的局部变量的字典  

repr()  将任意值转换为字符串,供计时器读取的形式  

zip()  将对象逐一配对   

compile()  用来指定一个方法为类的方法  

globals()  返回一个描述当前全局变量的字典  

map()  对一个列表中所有元素,进行一个函数运算,返回一个map数据类型的值,可以再次进行列表化  

reversed()  反转,逆序对象  

__import__()   动态导入模块  

complex()  根据传入参数创建一个新的复数   

hasattr()  判断一个对象是否包含某种变量或方法  

max()  返回给定元素里最大值  

round() 四舍五入

具体可以参考:

https://docs.python.org/3/library/functions.html

https://www.cnblogs.com/xiao1/p/5856890.html

https://www.cnblogs.com/linux-chenyang/p/6473820.html

在使用时需要知道函数名称和函数所需要的参数

一般情况下,使用help(函数名)可以查看函数的相关信息

函数的调用方法

例子:

求一个数的绝对值

print(abs(-25))

输出:

25

函数名(参数)就可以使用函数,同时也可以给函数取另外的名字

jueduizhi = abs

print(jueduizhi(-25))

 

输出:

25

 

37.自定义函数

自己也可以定义函数

def 函数名(参数):

    函数体

例如,定义一个求圆的面积的函数

def area_of_circle(r):

    return 3.14 * r * r

print(area_of_circle(2))

输出:

12.56

多参数的函数

 

def rectangular_area(length, width):
return length * width
print(rectangular_area(2, 3))

输出:

6

多返回值的函数

计算圆的周长和面积

 

 

def circle(r):
   perimeter = 3.14 * 2 * r
   area = 3.14 * r * r
return perimeter, area
print(circle(3))

输出:

(18.84, 28.259999999999998)

由此可以看出,多返回值的函数,返回的多返回值是通过元组的方式进行返回的,实际上还是返回的一个值

可以使用两个变量来存储,分别进行输出

 

def circle(r):
   perimeter = 3.14 * 2 * r
   area = 3.14 * r * r
return perimeter, area


perimeter1, area1 = circle(3)
print(perimeter1)
print(area1)

输出:

18.84

28.259999999999998

 

 

38.空函数

 

def 函数名(参数):

    pass

如果这个函数内代码暂时不会写,可以先让其他主体代码执行起来,这里的代码后续补上

pass语句还可以用在循环for,while,判断if语句中,实现占位的功能

 

39.没有返回值的函数

def circle(r):

    perimeter = 3.14 * 2 * r

    area = 3.14 * r * r

    print(perimeter, area)

 

ret = circle(3)

print(ret)

输出:

 

18.84 28.259999999999998

None

由此可以看出,虽然在函数中,没有写return,但是Python默认返回一个None



39.函数中,对于传入的参数进行检查

使用内置函数:isinstance()函数

 

 

def area_of_circle(r):
if not isinstance(r, (int, float)):
raise TypeError('bad operand type')
else:
return 3.14 * r * r


print(area_of_circle("2"))

报错:

TypeError: bad operand type

 

 

40.默认参数

def square(a = 2):

    print(a * a)

square()

输出:

4

不需要提供参数就可以执行

在多传参的函数中,应用尤为多

 

def involution(a, n = 2):
   s = 1
   while n > 0:
       n = n - 1
       s = s * a
return s
print(involution(2))
print(involution(2, 4))

输出:

 

4

16

这个函数默认是计算一个数的平方,也可以计算一个数的多次方,计算多少次方可以不传参数,默认为2,也可以传一个参数

posted @ 2019-01-24 10:12  cnblogsnightmare  阅读(156)  评论(0)    收藏  举报