Python学习日记-2020-12-24
Python学习日记
1. continue和break区别—补充:
break:用于跳出循环,不会再指定之后的语句,如for后面的else,此时所在的循环体已经结束。
continue:提前结束本次循环,之后的语句提前进入下一循环,所在的循环体没有结束。
for n in range(100,1,-1):
if n%2==0:
continue #此处的continue只是结束本次的循环,又回到上一级的for循环,如输入4时
for i in range(3,int(n**0.5)+1,2):
if n%i==0:
break #此处break是结束上一级的for循环包括其else,下一次会回到其上两级的for之中,如输入99时
else:
print(n)
break #此处的break是结束其上一级的for循环,如输入97时
- continue是结束本次循环,但是会继续执行上一级的循环;
- break是结束本次和上一级的循环,上两级的循环不受影响
以下是几个例子,说明break的位置和缩进的重要性:
#输出(1,100]中所有的奇数
for n in range(100,1,-1):
for i in range(2,n):
if n%i==0:
break #结束上一级for循环,如100
else:
print(n,end=' ')
break #结束上一级for循环,如99
#输出100以内所有素数
for n in range(100,1,-1):
for i in range(2,n):
if n%i==0:
break #只是结束上一级for循环,如100
else:
print(n,end=' ')
#输出100以内最大的素数
for n in range(100,1,-1):
for i in range(2,n):
if n%i==0:
break #只是结束上一级for循环,如100
else:
print(n,end=' ')
break #输出之后结束上一级for循环,如97
2. 水仙花数
题目描述:输出所有3位“水仙花数”。所谓n位水仙花数是指1个n位的十进制数,其各位数字的n次方之和等于该数本身。例如:153是水仙花数,因为153 = 1的3次方+5的3次方+3的3次方
#使用map将i的百位,十位,个位取出
for i in range(100, 1000):
bai, shi, ge = map(int, str(i))
if ge**3 + shi**3 + bai**3 == i:
print(i)
#首先将数字转化为字符串,再映射到lambda表达式中,直接转化为int型且计算其三次方,最后使用求和函数对map所有映射结果进行求和
for num in range(100, 1000):
if sum(map(lambda x:int(x)**3, str(num))) == num:
print(num)
#filter()将一个单参数函数作用到一个序列上,返回的是函数返回值为True组成的filter对象
result = filter(lambda num: sum(map(lambda i: int(i)**3,str(num)))==num,range(100, 1000))
for num in result:
print(num)
#扩展到n位水仙花数:
n = int(input('请输入位数:')) #注意要将输入的数转换为int类型
for num in range(10**(n-1), 10**n):
if sum(map(lambda i: int(i)**n, str(num))) == num:
print(num)
3. string模块ascii_letters、digits
- ascii_letters:生成全部字母,包括a-z,A-Z
- digits:生成数组,包括0-9
4. 内聚和耦合
- 内聚:度量一个模块内部各个元素彼此结合的紧密程度。模块功能越单一,内聚性就越高,模块独立性就越强——高内聚
- 耦合:度量模块之间互相连接的紧密程度。模块之间联系较少,耦合就越低,模块之间独立性越强——低耦合
5. 新函数学习:
| 函数名 | 语法 | 作用 | 说明 |
|---|---|---|---|
| epr() | repr(object) | 将对象转化为供解释器读取的形式 | object为对象 |
6. 关于self,init(self,a,b),init(self)
self是指实例本身,有两种格式,一种是有参数的,另一种是没有参数的,举例如下:
class Student:
#只有实例本身,没有属性值——更适用于原来为空的结构
def __init__(self):
self.name = None
self.score = None
#包含实例和属性值——输入时必须输入值,所有适合对数据进行导入(本来有数据)
def __init__(self, name, score):
self.name = name
self.score = score
#调用方法
#只有实例本身需要进行实例化,之后再输入参数
student = Student()
student.name= "mini"
student.score = 90
#有实例和属性值可以在实例化时直接输入参数
student = Student("mini", 90)

浙公网安备 33010602011771号