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)
posted @ 2020-12-24 22:19  妩安Wang  阅读(99)  评论(0)    收藏  举报