python学习第一周总结

python学习第一周总结

一、Markdown语法

Markdown是一种轻量级标记语言,排版语法简洁,它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML、PDF 以及本身的 .md 格式的文件。基于Markdown的优势,本周学习Markdown语法的基本用法对以后的学习生活尤为重要。

二、Python基础语法

  • 注释:代码中不会被编译成机器码的部分,即不影响程序功能的部分

    单行注释:在一行内容前加 # 或者 ctrl+/

    多行注释:将注释内容放在三个单(双)引号内

    注释的作用:

    a. 对代码进行注解和说明,增加代码的可读性

    b. 取消有效代码的功能

  • 标识符 - Python命名要求

    标识符要求:由字母数字下划线组成,数字不能开头

    但,例如 n*m = 1 2n = 2此时系统会报错。

  • 关键字不能用来命名

    本身具有特殊意义或者特殊功能的标识符,即关键字

    # 输出所有的关键字
    from keyword import kwlist
    print(kwlist)
    #  ['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
    
  • 行和缩进

    一条语句占一行,一行结束后不需要分号;

    一行的开头不能随意添加缩进(空格) - 默认情况下所有的代码都需要顶格写。

  • 基本数据类型

    数字:用来表示数值大小的数据

    对应类型:int (整型)、float (浮点型)

    文本:用来表示文字信息的数据,例:姓名、性别、所属地电话号码身份证号码等等。

    对应类型:str (字符串)

    布尔:只有 TrueFalse两个结果,True表示(真)肯定的回答,False表示(假)否定的回答

    对应类型:bool (布尔)

    空值:None (表示空/没有)

  • 获取数据类型: 使用 type() 函数

  • 类型转换:

    int(数据)、float(数据)、str(数据)、bool(数据)

    注意:浮点类字符串不可直接转换为整型

  • print 函数

    print(数据)
    print(数据1, 数据2, ...)
    print(数据1, 数据2, ..., end=字符串)
    print(数据1, 数据2, ..., sep=字符串)
    

三、变量

  • 变量的作用

    变量是用来保存数据的。(将变量保存到变量中以后,就可以通过使用变量来实验数据)

    数据保存到变量中以后再来使用数据可以让数据的意义更明确

    在需要数据的时候先将数据保存到变量中,再通过使用变量来使用数据

    使用数据的建议 :每次在使用数据的时候,先用变量将数据存起来,然后再通过使用变量来使用数据。

  • 定义变量(创建变量保存数据)

    '''
    语法:
    变量名 = 数据
    
    说明:
    a.变量名   -   由程序员自己命名
                  2个要求:标识符;不是关键字
                  3个规范:见名知义(看到变量名就知道变量中保存的是什么数据);不使用系统的函数名(print)、类名(int\float\str)或者模块名;所有的字母都小写,多个单词用下划线隔开。
    # pet_name = '小黑'
    b. =    -   赋值符号;固定写法
    c. 数据   -   可以是任何有结果的表达式(包括:具体的数据、运算表达式、...)
    '''
    
  • 使用变量(必须是已定义的变量) - 打印、赋值、运算

    使用变量是指使用变量中保存的数据。

    num = 10
    print(num)        # 10
    num1 = num
    print(num1 + 20)  # 30
    print(num2)       
    # NameError: name 'num2' is not defined
    
  • 重新给变量赋值 - 给已定义过的变量重新赋值(修改变量的值)

    a = 12
    print(a)    # 12
    a = 23
    print(a)    # 23
    a = 'hello'
    print(a)    # hello
    

    Ps:重新赋值时可以赋予不同类型的数据。

  • 同时定义多个变量

    a. 同时定义多个变量赋相同的值:

    变量1 = 变量2 = 变量3 = ... = 数据

    x = y = z = 1
    

    b. 同时定义多个变量赋不同的值:

    变量1, 变量2, 变量3, ... = 数据1, 数据2, 数据3, ...

    m,n = 1,2
    

    例题:交换两个变量的值

    a = 100
    b = 200
    b,a = a,b    # b,a = 200,100
    print(a,b)   # 200 100
    

四、运算符

  • 数学运算

    Python中数学运算符: +-*/%(取余-求余数)//(整除,向下取整)**(幂运算)
    

    应用

    # 判断整除关系
    print(10 % 5)
    print(8 % 2)
    print(15 % 3)
    
    # 判断数字的奇偶性
    num = 67
    print(num % 2)
    
    # 取整除的低位数(砍掉高位保留低位)
    num = 345
    print(num % 10)
    print(num % 100)
    
    # 去掉整数的低位数,保留高位数  -  对10的n次方整除
    num = 9876
    print(num // 10)
    print(num // 100)
    print(num // 1000)
    

    练习

    # 练习1: 获取num中的十位数
    num = 782
    print(num % 100 // 10)
    print(num // 10 % 10)
    
    # 练习2: 获取num中的百位数
    num = 82349
    print(num % 1000 // 100)
    print(num // 100 % 10)
    
  • 比较运算

    比较运算符: ><>=<===!=(不等于)
    

    所有的比较运算符的运算结果都是布尔值 : True/False

    Python中的比较运算符支持连写表示范围

    练习

    # 写出判断score是否在[70, 90)范围内
    score = int(input('请输入分数:'))
    print(70 <= score < 90)
    
  • 逻辑运算

    逻辑运算符: and(逻辑与)or(逻辑或)not(逻辑非)
    

    复合条件 - 将多个条件连接成一个条件的连接方法:

    a.要求多个条件同时成立 b.要求多个条件中只要有一个条件成立就行

    and

    '''
    1)应用场景: 要求多个条件同时成立的时候
    2)运算规则: 条件1 and 条件2   -   两个条件都成立结果就是True,只要有一个不成立就是False
       True and True    True
       True and False   False
    '''
    

    or

    '''
    1)应用场景: 要求多个条件中只有一个成立就行
    2)运算规则: 条件1 or 条件2
    '''
    

    not

    '''
    1)应用场景: 对条件进行否定
    2)运算规则: not 条件  -  对指定条件进行否定
    '''
    

    案例

    # 案例1:写出判断num是否能够同时被3和5整除的条件
    num = 78
    print('num是否能够同时被3和5整除:', num % 3 == 0 and num % 5 == 0)
    print('num是否能够同时被3和5整除:', num % 15 == 0)
    
    # 案例2:写出判断num是否是大于10的偶数的条件
    num = 78
    print('num是否是大于10的偶数:', num > 10 and num % 2 == 0)
    
    # 案例3:写出判断num是否是能被5整除的奇数
    num = 15
    print('num是否是能被5整除的奇数:', num % 5 == 0 and num % 2 != 0)
    
    # 案例4: 判断num是否能被3或者7整除
    num = 34
    print('num是否能被3或者7整除', num % 3 == 0 or num % 7 == 0)
    
    # 案例5:判断year对应的年份是否是闰年
    year = 2000
    print('否是闰年:', (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))
    
    # 案例6: 写出age不大于18的条件
    age = 72
    print(not age > 18)
    print(age <= 18)
    
    # 案例7: num不等于10的条件
    num = 23
    print(not num == 10)
    print(num != 10)
    
    # 案例8:写出判断num是否不能同时被3和7整除的条件
    num = 23
    print(not (num % 3 == 0 and num % 7 == 0))
    
  • 赋值运算

    赋值运算符: =+=-=*=/=%=//=**=
    

    不管是简单的赋值运算符还是复合赋值运算符,其功能都是给变量赋值

    注意: 所有赋值运算符的左边必须是变量,右边必须是能够提供数据的表达式

  • 运算符优先级

    数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)

五、控制流程语句

  • 流程控制 - 控制代码的执行顺序

    根据代码执行过程的不同,可以将代码分为三种结构:

    • 顺序结构(默认):代码从上往下按顺序执行,每条语句只执行一次。
    • 分支结构:根据条件选择分支代码进行执行 - if语句
    • 循环结构:代码重复执行 - for``````while循环
  • 分支结构

    if单分支结构

    '''
    语法: 
    if 条件语句:
        代码段
    
    说明:
    if      -    固定写法
    条件语句  -   任何有结果的表达式,一般是结果为布尔值的表达式
    :       -    固定写法
    代码段   -    结构上,和if保持一个缩进(一个tab)的一条或者多条语句(至少一条)
                 逻辑上,就是满足条件才需要执行的代码
    '''
    

    if双分支结构

    '''
    语法: 
    if 条件语句:
        代码段1(满足条件会执行的代码)
    else:
        代码段2(条件不成立会执行的代码)
    '''
    

    if多分支结构

    '''
    方法1:
    if 条件1:
        代码段1
    if 条件2:
        代码段2
    if 条件3:
        代码段3
    ...
    
    (每个条件都会判断)
        
    方法2:
    if 条件1:
        代码段1
    elif 条件2:
        代码段2
    elif 条件3:
        代码段3
    ...
    else:
        代码段N       
    
    (从前往后判断条件,执行第一个满足条件对应的代码段,一旦某个条件成立,后面的条件不会再执行)
    '''
    

    案例

    # 案例1: 根据num的值打印'偶数'(如果num的值是偶数就打印'偶数')
    num = 35
    if num % 2 == 0:
        print('偶数')
    else:
        print('奇数')
    
    # 案例2:根据num的值打印'3的倍数'
    num = 78
    if num % 3 == 0:
        print('3的倍数')
        
    # 案例3:如果year对应的年份是闰年就打印'闰年'
    year = 1998
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        print('闰年')
        
    # 案例4:若x是整数就打印'整数'
    x = 34.9
    if type(x) == int:
        print('整数')
        
    # 案例5: 跟据num的值打印'偶数'或者'奇数'
    num = 24
    if num % 2 == 0:
        print('偶数')
    else:
        print('奇数')
    
    # 案例6:根据year的值打印'闰年'或者'平年'
    year = 2100
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        print('闰年')
    else:
        print('平年')
        
    # 案例7: 打印指定的百分制分数对应的等级: >=90 - A; [80, 90) - B
    score = 19
    if score >= 90:
        print('A')
    if 80 <= score < 90:
        print('B')
    if 60 <= score < 80:
        print('C')
    if score < 60:
        print('D')
    
    score = 78
    if score >= 90:
        print('A')
    elif score >= 80:
        print('B')
    elif score >= 60:
        print('C')
    else:
        print('D')
    
  • 循环结构

    for循环

    '''
    for 循环变量 in range(start, end):
        语句1
        语句2
        语句3
    
    range(100) - 0~99的取值范围
    range(0, 100) - 0~99的取值范围
    range(1, 101) - 1~100的取值范围
    '''
    

    while循环

    '''
    while 条件语句:
        循环体
    '''
    

    案例

    # 案例1
    for i in range(1, 10, 3):
        print('*' * i)
        
    # 案例2:输出1-9的数字以及他们的平方和立方
    for x in range(1, 10):
        print(x, x ** 2, x ** 3)
    
    for x in range(1, 10):
        print('%d\t%d\t%d' % (x, x ** 2, x ** 3))
    
    for x in range(1, 10):
        print(f'{x}\t{x ** 2}\t{x ** 3}')
        
    # 案例3:1-100求和
    total = 0
    for i in range(1, 101):
        total += i
    
    print(total)
    
    # 案例4:奇数和
    total = 0
    for i in range(1, 101, 2):
        total += i
    
    print(total)
    
    # 案例5:偶数和
    total = 0
    for i in range(2, 101, 2):
        total += i
    
    print(total)
    
    # 案例6:找出100-999之间的水仙花数
    for x in range(100, 1000):
        a = x // 100
        b = x // 10 % 10
        c = x % 10
        if (a ** 3 + b ** 3 + c ** 3 == x):
            print(x)
    
    # 案例7:输入一个大于1的正整数,判断它是不是质数
    
    # num = int(input('num = '))
    # # 假设输入的num是一个质数将布尔值赋值为True
    # is_prime = True
    # for i in range(2, num):
    #     # 如果在2~N-1之间找到了num的因子
    #     if num % i == 0:
    #         # 不是质数就将对应的布尔值赋值为False
    #         is_prime = False
    #         break
    #
    # if is_prime:
    #     print(f'{num}是质数.')
    # else:
    #     print(f'{num}不是质数.')
    
    for num in range(2, 100):
    
        is_prime = True
        for i in range(2, num):
    
            if num % i == 0:
    
                is_prime = False
                break
        if is_prime:
            print(num)
            
            
    # 案例8:猜数字小游戏
    import random
    
    answer = random.randrange(1, 101)
    counter = 0
    while True:
        counter += 1
        thy_answer = int(input('请输入: '))
        if thy_answer > answer:
            print('小一点')
        elif thy_answer < answer:
            print('大一点')
        else:
            print('恭喜你,猜中了!')
            break
    
    if counter > 7:
        print('温馨提示: 智商余额不足!!!')
    print('游戏结束')
    
    # 案例9:求最大公约数和最小公倍数
    
    # for i in range(1, 10):
    #     for j in range(1, i+1):
    #         print(f'{i} * {j} = {i * j}', end='\t')
    #     print()
    #
    x = int(input('x = '))
    y = int(input('y = '))
    #
    # z = x if x <= y else y
    #
    # for i in range(z, 0, -1):
    #     if x % i == 0 and y % i == 0:
    #         print(f'{x}和{y}的最大公约数是: {i}')
    #         print(f'{x}和{y}的最小公倍数是: {x * y // i}')
    #         break
    
    a, b = x, y
    while b % a != 0:
        a, b = b % a, a
    
    print(f'{x}{y}的最大公约数是: {a}')
    print(f'{x}{y}的最小公倍数是: {x * y // a}')
    
    # 案例10:求平均值(10个数)
    total = 0
    
    for _ in range(10):
        total += float(input())
    print(f'平均值: {total / 10:.2f}')
    
    # 案例11:求排列数和组合数
    from math import factorial as f
    n = int(input('n = '))
    k = int(input('k = '))
    
    fn = 1
    for i in range(2, n + 1):
        fn *= i
    
    fm = 1
    for i in range(2, n - k + 1):
        fm *= i
    
    print(f'p({n},{k}) = {fn // fm}')
    
    fk = 1
    for i in range(2, k + 1):
        fk *= i
    
    print(f'c({n},{k}) = {fn // fk // fm}')
    
    n = int(input('n = '))
    k = int(input('k = '))
    
    print(f'p({n},{k}) = {f(n) // f(n - k)}')
    print(f'c({n},{k}) = {f(n) // f(k) // f(n - k)}')
    
    # 案例12:判断三个数是否能构成三角形
    a = float(input())
    b = float(input())
    c = float(input())
    
    if a + b > c and b :
        p = a + b + c
        h = p / 2
        s = (h * (h - a) * (h - b) * (h - c)) ** 0.5
        print(f'三角形的周长: {p}')
        print(f'三角形的面积: {s}')
    else:
        print('无效输入: 无法构成三角形')
        
    # 案例14:百钱百鸡问题
    for x in range(21):
        for y in range(34):
            for z in range(0, 100, 3):
                if x + y + z == 100 and 5 * x + 3 * y + z // 3 == 100:
                    print(x, y, z)
    
    for x in range(21):
        for y in range(34):
            z = 100 - x - y
            if z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100:
                print(x, y, z)
    

    for 和 while 的选择问题

    '''
    循环问题优先考虑for循环,for循环解决不了才使用while循环
    '''
    for 的应用场景:循环次数确定
    while 的应用场景:循环次数不确定(写代码的时候程序员无法知道循环的次数)
    
  • break 关键字

    break 的作用:结束整个循环(执行循环体的时候如果遇到 break ,循环直接结束)

    for i in range(10):
        if i > 2:
            break
        print('hello')
    

    while 遇到 break

    '''
    # while True 是个恒成立的循环,若后面没有break则会陷入死循环
    while True:           
    	需要重复执行的操作
    	if 循环结束条件:
    		break
    '''
    
  • 练习

    # 五人分鱼问题
    f = 6
    while True:
        total = f
        is_total = True
        for _ in range(5):
            if (total - 1) % 5 == 0:
                total = (total - 1) // 5 * 4
            else:
                is_total = False
                break
    
        if is_total:
            break
    
        f += 5
    
    print(f'总共至少有{f}条鱼')
    
    # 掷骰子(10000次)统计每个点数出现的次数和频率
    face3 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    while True:
        for i in range(10000):
            face1 = random.randint(1, 6)
            face2 = random.randint(1, 6)
            face3[face1 + face2] +=1
        for i in range(len(face3)):
            rate = face3[i]/10000
            print(f'点数{i}共出现了{face3[i]}次')
            print(f'出现的概率{rate:.2%}')
        break
    
    # 找出一万以内的完美数(一个数=除自身以外所有因子的和)
    def num(i):
        x = 0
        for j in range(1, i):
            if i % j ==0:
                x += j
            else:
                continue
        if x == i:
            print(i)
    
    for i in range(1, 10001):
        num(i)
    
    for num in range(2, 10000):
        total = 1
        for i in range(2, int(num ** 0.5) + 1):
            if num % i == 0:
                total += i
                if i != num // i:
                    total += num // i
        if total == num:
            print(num)
    
    # 输入三角形三条边的长度,先判断能否构成三角形,如果能则计算三角形的周长和面积
    a = int(input("请输入一个整数:"))
    b = int(input("请输入一个整数:"))
    c = int(input("请输入一个整数:"))
    if a + b > c and b + c > a and c + a > b:
        C = a + b + c
        x = C / 2
        S = pow(x * (x - a) * (x - b) * (x - c), 0.5)
        print(f'三角形的周长为{C}, 面积为{S}')
    else:
        print('不能构成三角形')
        
    # 输入两个正整数,求它们的最大公约数和最小公倍数
    num1 = int(input('请输入一个数:'))
    num2 = int(input('请输入一个数:'))
    x = 0
    for i in range(1, num1+1):
        for j in range(1, num2+1):
            if num1 % i == 0 and num2 % j ==0 and i == j:
                if x < i:
                    x = i
                continue
    print(f'最大公约数为{x}')
    
    if num1 < num2:
        num1, num2 = num2, num1
    y = num1
    while y > 0:
        if y % num1 == 0 and y % num2 == 0:
            print(f'最小公倍数为{y}')
            break
        y += 1
    
    # 输出100以内的质数
    for num in range(100):
        is_prime = True
        for i in range(2, num):
            # 如果在2~N-1之间找到了num的因子
            if num % i == 0:
                # 不是素数就将对应的布尔值赋值为False
                is_prime = False
                break
        if is_prime:
            print(num)
    
    

六、本周总结

  • 跟着老师的节奏,学习了Python的基本语法、python的运算符和控制流程语句,为后期的学习奠定了一定的基础,期待下周对于常见容器型数据类型和函数的学习。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值