Python全栈开发记录_第一篇

  Python全栈开发记录只为记录全栈开发学习过程中一些难和重要的知识点,还有问题及课后题目,以供自己和他人共同查看。(代码行数:70行)

知识点1:优先级:not>and

    短路原则:and:如果第一个条件的结论为假,那么 and 前后两个条件组成的表达式计算结果一定为假,后面的条件计算机不会进行计算

         or:如果第一个条件的结论为真,那么or 前后两个条件组成的表达式计算结果一定为真,后面的条件计算机不会进行计算

知识点2:python区分大小写,常量需全部字母大写(默认这样写)

    python换行符说明:Windows是‘\r\n‘,Linux是‘\n‘,在Python 3,可以通过open函数的newline参数来控制Universal new line mode:读取时候,不指定newline,则默认开启Universal new line mode,所有\n, \r, or \r\n被默认转换为\n ;写入时,不指定newline,则换行符为各系统默认的换行符(\n, \r, or \r\n, ),指定为newline=‘\n‘,则都替换为\n(相当于Universal new line mode);不论读或者写时,newline=‘‘都表示不转换。

知识点3:while...else...:while循环中,只要循环正常完成,即中途没有break,那么就会 执行else语句,否则就不会。

题目一:用户输入三个数字,输出三个数字中的最大值/最小值

# -*- coding:utf-8 -*-

‘‘‘
需求1:用户输入三个数字,输出三个数字中的最大值/最小值

思路:以num1,num2,num3三个数为例
    1、三个数比较的话,先比较两个数,然后再拿这两个数跟第三个数进行比较
    2、
    if num1 >= num2:
        if num2 >= num3:
            print("最大值是:",num1,",最小值是:",num3)
        elif num1 >= num3:
            print("最大值是:",num1,",最小值是:",num2)
        else:
            print("最大值是:",num3,",最小值是:",num2)
    else:
        if num1 >= num3:
            print("最大值是:",num2,",最小值是:",num3)
        elif num2 >= num3:
            print("最大值是:",num2,",最小值是:",num1)
        else:
            print("最大值是:",num3,",最小值是:",num1)
‘‘‘

def compare_size():
    num1 = int(input("请输入第一个数字:"))
    num2 = int(input("请输入第二个数字:"))
    num3 = int(input("请输入第三个数字:"))
    if num1 >= num2:
        if num2 >= num3:
            print("最大值是:",num1,",最小值是:",num3)
        elif num1 >= num3:
            print("最大值是:",num1,",最小值是:",num2)
        else:
            print("最大值是:",num3,",最小值是:",num2)
    else:
        if num1 >= num3:
            print("最大值是:",num2,",最小值是:",num3)
        elif num2 >= num3:
            print("最大值是:",num2,",最小值是:",num1)
        else:
            print("最大值是:",num3,",最小值是:",num1)

if __name__ == "__main__":
    compare_size()
题目二:使用#号输出长方形,用户可以指定宽和高,如果宽为4,高为5,则输出4个横#和5个竖#的长方形
# -*- coding:utf-8 -*-

‘‘‘
需求2:使用#号输出长方形,用户可以指定宽和高,如果宽为4,高为5,则输出4个横#和5个竖#的长方形

思路:
    1、一般横竖这种可以通过循环嵌套来处理
    2、外层循环代表横,内层循环代表竖

‘‘‘

def print_rectangle():
    #接收用户输入
    rec_width = int(input("请输入宽:"))
    rec_height = int(input("请输入高:"))
    #外层循环输出高
    for height in range(rec_height):
        #内层循环输出宽的数量
        for width in range(rec_width):
            print("#",end="")
        #每行打完换行
        print()

if __name__ == "__main__":
    print_rectangle()

题目三:如何输出如下直角三角形,用户指定行数(上下反转试下)
‘‘‘
需求3:如何输出如下直角三角形,用户指定行数(上下反转试下)
*
**
***

思路:
    1、外层循环代表横,内层循环代表竖(先确定这个框架)
    2、外层是行,那么也就是用户的输入,由于用户只输入了高,发现列是第一行一,第二行二,第N行N,所以可以不用内循环也可以
    3、上下反转的话,就是输出第一行是N,依次减一即可

‘‘‘

def print_triangle():
    # 接收用户输入
    tri_height = int(input("请输入三角形的高:"))
    # 外层循环输出高
    for height in range(1, tri_height+1):
        print("*"*height)

def up_down_print_triangle():
    # 接收用户输入
    tri_height = int(input("请输入三角形的高:"))
    # 外层循环输出高
    for height in range(1, tri_height+1):
        print("*"*(tri_height+1-height))

if __name__ == "__main__":
    #print_triangle()
    up_down_print_triangle()
题目四:输出九九乘法表
‘‘‘
需求4:输出九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
....

思路:
    1、外层循环代表横,内层循环代表竖(先确定这个框架)
    2、然后找寻规律,发现总共九行,第一行一列,第N行N列
    3、x*y 左边x,x的值由1逐步增加至y  y的数值则为列的数值
‘‘‘

def print_99_multiply():
    #99乘法表的行、列数用变量表示
    nine_lines = 9
    nine_weight = 9
    #行的数量
    for line in range(1, nine_lines+1):
        #列的数量,由于列的数量跟行数量一致,所以是line+1
        for weight in range(1, line+1):
            print("%d*%d=%d"%(weight, line, (weight*line)),end="\t") #\t制表符是为了对齐
        print()

if __name__ == "__main__":
    print_99_multiply()

 

总结:第一篇主要用到的知识都是循环嵌套,虽然不难,但是这上面的题目都还是比较经典的,建议在做题的时候先看清楚需求然后明确思路,锻炼先理顺实现逻辑再去编程,这样会比较好,而且要写注释,变量名也需要有意义。

原文地址:https://www.cnblogs.com/leixiaobai/p/9828294.html

时间: 2024-10-10 13:16:30

Python全栈开发记录_第一篇的相关文章

Python全栈开发记录_第九篇(类的基础_封装_继承_多态)

有点时间没更新博客了,今天就开始学习类了,今天主要是类的基础篇,我们知道面向对象的三大特性,那就是封装,继承和多态.内容参考该博客https://www.cnblogs.com/wupeiqi/p/4493506.html 之前我们写的都是函数,可以说是面向过程的编程,需要啥功能就直接写啥,但是我们在编写程序的过程中会发现如果多个函数有共同的参数或数据时,我们也必须多次重复去写,此时如果用面向对象的编程方式就会好很多,这也是面向对象的适用场景. 面向对象三大特性: 一.封装(顾名思义就是将内容封

Python全栈开发记录_第八篇(模块收尾工作 json & pickle & shelve & xml)

由于上一篇篇幅较大,留下的这一点内容就想在这里说一下,顺便有个小练习给大家一起玩玩,首先来学习json 和 pickle. 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值. 什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pic

Python全栈开发记录_第五篇(装饰器)

单独记录装饰器这个知识点是因为这个知识点是非常重要的,必须掌握的. 了解装饰器之前要知道三个知识点 作用域,上一篇讲到过顺序是L->E->G->B 高阶函数: 满足下列其中一种即可称之为高阶函数: a.把一个函数名当做实参传递给另一个函数 b.返回值中包含函数名 3.闭包 闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境),通俗讲法是:在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用.这样就构成了一个闭包.,具体看下面

python全栈开发【第十篇】Python常用模块二(时间、random、os、sys和序列化)

一.time模块 表示时间的三种方式: 时间戳:数字(计算机能认识的) 时间字符串:t='2012-12-12' 结构化时间:time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=8, tm_min=4, tm_sec=32, tm_wday=1, tm_yday=220, tm_isdst=0)像这样的就是结构化时间 #time模块的常用方法及三种时间之间的转换 import time # 对象:对象.方法 # --------

python全栈开发【第六篇】Python字符编码

1.内存和硬盘都是用来存储的. CPU:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编写的内容也都是存放在内存中的,断电后数据就丢失了.因而需要保存在硬盘上,点击保存按钮或快捷键,就把内存中的数据保存到了硬盘上.在这一点上,我们编写的py文件(没有执行时),跟编写的其他文件没有什么区别,都只是编写一堆字符而已. 3.python解释器执行py文件的原理,例如python  test.

python全栈开发【第十三篇】Python面向对象

一.面向过程:面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点:极大地降低了写成学的复杂度,只需要顺着执行的步骤,堆叠代码即可 缺点:一套流水线或者流程就是用来解决一个问题,如果修改代码就都得改变 二.面向对象:上帝的思想 优点:解决了程序的扩展性.对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易. 缺点:可控性差,无法向面向过程的程序设计流水线式的可以

python全栈开发【第四篇】Python流程控制

十二 流程控制之if-else 既然我们编程的目的是为了控制计算机能够像人脑一样工作,那么人脑能做什么,就需要程序中有相应的机制去模拟.人脑无非是数学运算和逻辑运算,对于数学运算在上一节我们已经说过了.对于逻辑运算,即人根据外部条件的变化而做出不同的反映,比如 1 如果:女人的年龄>30岁,那么:叫阿姨 age_of_girl=31 if age_of_girl > 30: print('阿姨好') 2 如果:女人的年龄>30岁,那么:叫阿姨,否则:叫小姐 age_of_girl=18

python全栈开发【第十一篇】Python常用模块三(hashlib,configparser,logging)

hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示). 注意:摘要算法不是一个解密算法.(摘要算法,检测一个字符串是否发生了变化) 应涂:1.做文件校验 2.登录密码 密码不能解密,但可以撞库,用'加盐'的方法就可以解决撞库的问题.所有以后设置密码的时候要设置的复杂一点. #用户密码 import hashlib # md5

python全栈开发【第十七篇】面向对象反射和内置方法

一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被类调用,就像正常调用函数一样 类方法和静态方法的相同点:都可以直接被类调用,不需要实例化 类方法和静态方法的不同点: 类方法必须有一个cls参数表示这个类,可以使用类属性 静态方法不需要参数 绑定方法:分为普通方法和类方法 普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定