Python全栈开发记录只为记录全栈开发学习过程中一些难和重要的知识点,还有问题及课后题目,以供自己和他人共同查看。
知识点1:优先级:not>and>or
短路原则: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()
总结:第一篇主要用到的知识都是循环嵌套,虽然不难,但是这上面的题目都还是比较经典的,建议在做题的时候先看清楚需求然后明确思路,锻炼先理顺实现逻辑再去编程,这样会比较好,而且要写注释,变量名也需要有意义。