大家好,又见面了,我是你们的朋友全栈君。
Python入门篇-基础语法
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.编程基础
1>.程序
一组能让计算机识别和执行的指令。
程序 1>.算法+ 数据结构= 程序 2>.数据一切程序的核心 3>.数据结构是数据在计算机中的类型和组织方式 4>.算法是处理数据的方式,算法有优劣之分 写程序难点 1>.理不清数据 2>.不清处理方法 3>.无法把数据设计转换成数据结构,无法把处理方法转换成算法 4>.无法用设计范式来进行程序设计 5>.世间程序皆有bug,但不会debug
2>.电子计算机
能够执行程序的机器。
3>.现代计算机
艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),出生于英国伦敦,毕业于普林斯顿大学,英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。图灵提出的著名的图灵机模型为现代计算机的逻辑工作方式奠定了基础。
冯·诺依曼(John von Neumann,1903~1957),出生于匈牙利,毕业于苏黎世联邦工业大学,数学家,被后人称为“计算机之父”和“博弈论之父”。
4>.冯·诺依曼体系架构
CPU由运算器和控制器组成。
运算器,完成各种算术运算,逻辑运算,数据传输等数据加工处理。
控制器,控制程序的执行。
存储器,用于记忆程序和数据,例如内存。
输入设备,将数据或者程序输入到计算机中,例如键盘,鼠标。
输出设备,将数据或程序的处理结果展示给用户,例如显示器,打印机等。
5>. 计算机语言
人与计算机之间交互的语言。
6>.机器语言
一定位数组成二进制的0和1的序列,称为机器指令。机器指令的集合就是机器语言。
与自然语言差异太大,难学、难懂、难写、难记、难查错。
7>.汇编语言
用一些助记符号替代机器指令,称为汇编语言。ADD A,B 指的是将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中。
汇编语言写好的程序需要汇编程序转换成机器指令。
汇编语言只是稍微好记了些,可以认为就是机器指令对应的助记符。只是符号本身接近自然语言。
二.语言分类
1>.低级语言
面向机器的语言,包括机器语言、汇编语言
不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序
2>.高级语言
接近人类的自然语言和数学语言的计算机语言。
高级语言首先要书写源程序,通过编译程序把源程序转换成机器指令的程序。
1954年正式发布的Fortran语言是最早的高级语言,本意是公式翻译
人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理
3>.低级语言到高级语言的区别
语言越高级,越接近人类的自然语言和数学语言。 语言越低级,越能让机器理解。 高级语言和低级语言之间需要一个转换的工具:编译器、解释器。 C、C++等语言的源代码需要本地编译。 Java、Python、C#的源代码需要被解释器编译成中间代码(Bytecode),在虚拟机上运行。
4>.编译语言和解释器语言的区别
编译语言:
把源代码转换成目标机器的CPU指令,即可以直接执行,速度快。
解释语言:
解释后转换成字节码,运行在虚拟机上,解释器执行中间代码,即边解释边执行,速度慢。
5>.高级语言的发展
非结构化语言 1>.编号或标签、GOTO,子程序可以有多个入口和出口 2>.有分支、循环 结构化语言 1>.任何基本结构只允许是唯一入口和唯一出口 2>.顺序、分支、循环,废弃GOTO 面向对象语言 1>.更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承 2>.封装、继承、多态 函数式语言 1>.古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中 2>.函数是“一等公民”,高阶函数
三.Python解释器
官方CPython
C语言开发,最广泛的Python解释器
IPython
一个交互式、功能增强的Cpython
PyPy
Python语言写的Python解释器,JIT技术,动态编译Python代码
Jython
Python的源代码编译成Java的字节码,跑在JVM上
IronPython
p 与Jython类似,运行在.Net平台上的解释器,Python代码被编译成.Net的字节码
四.基础语法
1>.注释
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com
以“#”号开头的一般都是注释行
''' 这是注释代码! 该注释是用来解释某个函数或者类的功能时,一行说明不了需要多行进行注释时使用 '''
以单引号注释的段落
""" 这是注释代码! 该注释是用来解释某个函数或者类的功能时,一行说明不了需要多行进行注释时使用 """
以双引号注释的段落
2>.数字
一.整数 不区分long和int。 进制有不同的表示形式:0xa,0o10,0b10 布尔值(bool):2个值True和False 二.浮点数 如3.1415926,9.18等等。 三.复数 1+2j
3>.字符串
使用' " 单双引号引用的字符的序列. '''和""" 单双三引号,可以跨行、可以在其中自由的使用单双引号. 在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理.
4>.转义序列
\\, \t, \r, \n, \', \", 前缀r,把里面的所有字符当普通字符对待
5>.缩进
未使用C等语言的花括号,而是采用缩进的方式表示层次关系。
我们在开发者推荐约定使用4个空格缩进。
6>.续行
在行尾使用 “\”
如果使用各种括号,认为括号内是一个整体,内部跨行不用 “\”
7>.标识符(可以理解是变量,常量等的统称)
1. 一个名字,用来指代一个值 2. 只能字母、下划线和数字 3. 只能以字母或下划线开头 4. 不能是python的关键字,例如def、class就不能作为标识符 5. Python是大小写敏感的 约定: 不允许使用中文 不允许使用歧义单词,例如class_ 在python中不要随便使用下划线开头的表示符
8>.常量
一旦赋值就不能改变值的标识符
python中无法定义常量
9>.字面常量
一个单独的量,例如12、"abc" 、'2341356514.03e-9'
10>.变量
赋值后,可以改变值的标识符
五.Python的语言类型
Python是动态语言、强类型语言 静态编译语言 实现声明变量类型,类型不能再改变 编译时检查 动态编译语言 不用事先声明类型,随时可以赋值为其他类型 编程时不知道是什么类型,很难推断 强类型语言 不同类型之间操作,必须先强制类型转换为同一类型。print('a'+1) 弱类型语言 不同类型间可以操作,自动隐式转换,JavaScript中console.log(1+'a')
六.运算符(Operator)
1>.算术运算符
以下例子a = 10 , b= 20。
2>.比较运算符
以下例子a = 10 , b= 20。
3>.赋值运算符
4>.按位运算符(咱们也可以称为“二进制运算符”)
我们都知道,计算机处理数据的时候都会把数据最终变成0和1的二进制来进行运算,也就是说,计算机其实只认识0和1, 那按位运算其实就是把数字转换成二进制的形式后再进行位运算的。直接看例子,我们设定a=60; b=13; 要进行位运算,就得把他们先转成2进制格式,那0和1是如何表示60和13的呢?
好,知道了10进制如何转2进制了之后,我们接着来看,如果进行2个10进制数字的位运算。
看下面的运算过程:
5>.成员运算符
in not in
6>.身份运算符
is
is not
7>.运算符优先级,由低到高(了解即可,不用背下来)
算数运算符> 位运算符> 身份运算符> 成员运算符> 逻辑运算符
单目运算符 > 双目运算符
使用方法:
记不住,用括号
长表达式,多用括号,
易懂、易读
8>.三目运算符(三元运算符)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com # #输入两个数,比较大小后,从小到大升序打印 num_1 = int(input("请输入第一个数字:>>> ")) num_2 = int(input("请输入第二个数字:>>> ")) # if num_1 > num_2: # print(num_2,num_1) # else: # print(num_1,num_2) """ Python没有双目运算符,但提供了三元运算符: 真值 if 条件 else 假值
接下来我们将上面4行代码使用Python中的三元运算符实现,上面4行就可以简写为一行啦!功能能实现,就是可读性较差哟! """ print(num_2,num_1) if num_1 > num_2 else print(num_1,num_2)
9>.表达式Expression
什么是表达式:
由数字,符合,括号,变量的组合。
表达式的分类:
算数表达式
逻辑表达式
赋值表达式:在Python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义。
10>.博主强烈推荐阅读
推荐一:https://www.cnblogs.com/yinzhengjie/p/8666354.html(原码反码补码)
推荐二:https://www.cnblogs.com/yinzhengjie/p/8656833.html(进制转换)
推荐三:https://www.cnblogs.com/yinzhengjie/p/8679721.html(算术运算符,Arithmetic Operators)
推荐四:https://www.cnblogs.com/yinzhengjie/p/8681000.html(比较运算符,Compare Operators)
推荐五:https://www.cnblogs.com/yinzhengjie/p/8688081.html(逻辑运算符,Logic Operators)
推荐六:https://www.cnblogs.com/yinzhengjie/p/8688553.html(赋值运算符Assignment Operators与条件运算符Condition Operators)
推荐七:https://www.cnblogs.com/yinzhengjie/p/8688845.html(字符串连接运算符String link operator)
推荐八:https://www.cnblogs.com/yinzhengjie/p/8689059.html(位运算符Bitwise Operators)
七.内存管理
变量无须事先声明,也不需要指定类型 动态语言的特性 编程中一般无须关心变量的存亡,也不用关心内存的管理 python使用引用计数记录所有对象的引用数 当对象引用数变为0,它就可以被垃圾回收GC 计数增加:
赋值给其它变量就增加引用计数,例如x=3;y=x;z=[x,1]
实现传参,如foo(y) 计数减少: 函数运行结束时,局部变量就会被自动销毁,对象引用计数减少 变量被赋值给其它对象。例如x=3;y=x;x=4 有关性能的时候,就需要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求。
1 #!/usr/bin/env python 2 #_*_conding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie 5 6 7 import sys 8 9 x = [] 10 11 print(sys.getrefcount(x)) 12 print(sys.getrefcount([])) 13 14 y = x 15 print(sys.getrefcount(y),sys.getrefcount(x)) 16 17 x = 100 #我们在这里需要注意字面量常量,这个值虽然我们在这里第一次调用,但是在我们执行python代码之前,可能解释器已经多次调用该字面量啦! 18 print(sys.getrefcount(y)) 19 print(sys.getrefcount(x)) 20 21 z = 200 22 print(sys.getrefcount(z)) 23 24 25 26 #以上代码执行结构如下: 27 2 28 1 29 3 3 30 2 31 9 32 7
参考变量和常量被引用的次数
八.程序控制
1>.程序控制概述
一.顺序
按照先后顺序一条条执行
例如,先洗手,再吃饭,再洗碗
二.分支
根据不同的情况判断,条件满足执行某条件下的语句
例如,先洗手,如果饭没有做好,玩游戏,如果饭做好了,就吃饭,如果饭都没有做,叫外卖
三.循环
条件满足就反复执行,不满足就不执行或不再执行
例如,先洗手,看饭好了没有,没有好,一会来看一次是否好了,一会儿来看一次,直到饭好了,才可是吃饭。这里循环的条件是饭没有好,饭没有好,就循环的来看饭好了没有。
2>.真值表
False等价布尔值,相当于bool(value) 空集合 空字符串 空字典 列表 空元祖 one对象 0
3>.单分支结构
if语句 if condition: 代码块 condition必须是一个bool类型,这个地方有一个隐式转换bool(condition) 代码块 类似于if语句的冒号后面的就是一个语句块 在if、for、def、class等
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com zhangshan_age = 28 lisi_age = 20 if zhangshan_age > lisi_age: print("张三年龄比李四大")
单分支案例展示
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com num_01 = int(input("请输入第一个数:>>> ")) num_02 = int(input("请输入第二个数:>>> ")) if num_01 > num_02: print("两次输入,最大的数字是:",num_01) else: print("两次输入,最大的数字是:", num_02)
输入2个数字,输出最大数案例
3>.多分支结构
if...elif...else语句 if condition1: 代码块1 elif condition2: 代码块2 elif condition3: 代码块3 ...... else: 代码块
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com Academic_record = int(input("请输入你的学习成绩:>>> ")) if Academic_record == 100: print("满分!") elif Academic_record >= 90: print("优秀!") elif Academic_record >=80: print("良好!") elif Academic_record >=70: print("一般!") elif Academic_record >= 60: print("及格!") else: print("你得加油啦!")
多分支案例展示
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com number = int(input("请输入一个不超过5位的正整数:>>> ")) if number >=100000: print("对不起,您输入的参数不合法!") else: if number >= 1000: if number >= 10000: print("您输入的是五位数") else: print("您输入的四位数") else: if number >= 100: print("您输入的是三位数") elif number >= 10: print("您输入的是二位数") else: print("您输入的是一位数")
给定一个不超过5位的正整数,判断其有几位(嵌套分支案例)
4>.while循环
while condition: block 当条件满足即condition为True,进入循环体,执行block
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com flag = 100 while flag: if flag % 2 != 0: print(flag) flag -= 1
案例一(倒着打印100-1的奇数)
5>.for循环
for element in iteratable: block 当可迭代对象中有元素可以迭代,进入循环体,执行block
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com for item in range(100): if item % 2 != 0: print(item)
案例一(正序打印1-100的奇数)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com for item in range(100): if not item % 2: print(item)
案例二(正序打印1-100的偶数)
6>.continue语句
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com # for item in range(0,100,2): # print(item) for item in range(0,100): if item & 1: continue print(item)
7>.break语句
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com count = 0 # 计算1000以内的被7整除的前20个数(for循环) for item in range(0,1000,7): print(item) count += 1 if count >= 20: break
continue和break是循环的控制语句,只影响当前循环,包括while、for循环 如果循环嵌套, continue和break也只影响语句所在的那一层循环 continue和break 不是跳出语句块,所以if condition: break 不是跳出if,而是终止if外的break所在的循环
循环continue、break语句总结
8>.循环else子句
while condition: block else: block for element in iteratable: block else: block 如果循环正常的执行结束,就执行else子句;如果使用break终止,else子句不会执行
十.练习案例(尽量所有程序自己能实现,不能实现的要求能写出思路或者伪代码!如果你觉得困难就对了,说明你已经在努力啦!)
1>.给定一个不超过5位的正整数,判断该数的位数,依次打印出个位、十位、百位、千位、万位的数字.
2>.给定一个不超过5位的正整数,判断该数的位数,依次从万位打印到个位的数字
1 #!/usr/bin/env python 2 #_*_conding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie 5 6 """ 7 给定一个不超过5位的正整数,依次打印出万位,千位,百位,十位,个位的数字。 8 """ 9 10 num = int(input("请输入一个数字:>>> ")) 11 12 weight = 10000 13 14 length = 5 #假设数字的有效长度为5 15 16 flag = False #假设还没有碰到第一个非0 17 18 while weight: 19 x = num // weight 20 if not flag: 21 if x == 0: #判断第一次循环时遇到的数字首位是否为0,如果是就将默认的有效长度减去1 22 length -= 1 23 else: #否则我们就判定第一次循环的位数不为0,需要将flag的值改为True,以后就不会进入上一次的if分支啦! 24 flag = True 25 26 if flag: #如果发现首位非0的话,之后遍历的每个数字都得打印 27 if weight == 10000: 28 print("万位的数字为:{}".format(x)) 29 elif weight == 1000: 30 print("千位的数字为:{}".format(x)) 31 elif weight == 100: 32 print("百位的数字为:{}".format(x)) 33 elif weight == 10: 34 print("十位的数字为:{}".format(x)) 35 else: 36 print("个位的数字位:{}".format(x)) 37 38 num = num % weight 39 weight = weight // 10 40 41 print("length=",length)
参考案例
3>.打印一个边长为n的正方形
1 #!/usr/bin/env python 2 #_*_conding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie 5 6 SideLength = int(input("请输入正方形的边长:>>> ")) 7 8 # 实心的正方形 9 for i in range(1,SideLength+1): 10 for j in range(1,SideLength+1): 11 print("*", end="\t") 12 print() 13 14 15 print("-" * 20 + "我是分割线" + "-" * 20) 16 17 #空心的正方形 18 for i in range(1,SideLength+1): 19 for j in range(1,SideLength+1): 20 if i == 1 or i == SideLength: 21 print("*", end="\t") 22 else: 23 if j == 1 or j == SideLength: 24 print("*", end="\t") 25 else: 26 print(" ", end="\t") 27 print()
参考案例
4>.求100内所有奇数的和(2500)
1 #!/usr/bin/env python 2 #_*_conding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie 5 6 sum = 0 7 8 for i in range(1,100,2): 9 sum += i 10 11 print("100内所有奇数的和为:{}".format(sum))
参考案例
5>.判断学生成绩,成绩等级A~E。其中,90分以上为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’
1 #!/usr/bin/env python 2 #_*_conding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie 5 6 7 while True: 8 AcademicRecord = input("请输入您的学习成绩(按'Q'或'q'退出):>>> ") 9 if AcademicRecord == "Q" or AcademicRecord == "q": 10 print("程序已退出!") 11 break 12 else: 13 if AcademicRecord.isdigit(): 14 AcademicRecord = int(AcademicRecord) 15 else: 16 print("请输入的字符串无效,请重新输入!!!") 17 continue 18 19 if AcademicRecord >= 90: 20 print("A") 21 elif AcademicRecord >= 90: 22 print("B") 23 elif AcademicRecord >= 70: 24 print("C") 25 elif AcademicRecord >= 60: 26 print("D") 27 else: 28 print("E")
参考案例
6>.求1到5阶乘之和
1 #!/usr/bin/env python 2 #_*_conding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie 5 6 7 8 while True: 9 input_num = input("请输入您的想要计算的乘阶之和(按'Q'或'q'退出):>>> ") 10 if input_num == "Q" or input_num == "q": 11 print("程序已退出!") 12 break 13 else: 14 if input_num.isdigit(): 15 input_num = int(input_num) 16 else: 17 print("请输入的字符串无效,请重新输入!!!") 18 continue 19 20 MultiplyOrder = 1 21 for i in range(1,input_num+1): 22 MultiplyOrder = MultiplyOrder * i 23 24 print("\t\t您想要计算[{}]的阶乘对应的结果为:[{}]\n".format(input_num,MultiplyOrder))
参考案例
7>.给一个数,判断它是否是素数(质数,一个大于1的自然数只能被1和它本身整除)
#!/usr/bin/env python #_*_conding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie while True: num = input("请输入您的学习成绩(按'Q'或'q'退出):>>> ") if num == "Q" or num == "q": print("程序已退出!") break else: if num.isdigit(): num = int(num) else: print("请输入的字符串无效,请重新输入!!!") continue flag = False for i in range(2, num): if num % i == 0: flag = True break if flag: print(num, "is not a prime number.") else: print(num, "is a prime number.")
参考案例
8>.打印九九乘法表
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #打印九九乘法表 for i in range(1,10): for j in range(1,i+1): print("{} * {} = {}".format(i,j,(i*j)),end="\t") print()
使用for循环打印九九乘法表
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #打印九九乘法表 i = 1 while i < 10: j = 1 while j < 10: if i >= j: print('%d x %d = %d'%(i,j,(i*j)), end="\t") j += 1 i += 1 print()
使用while循环打印九九乘法表
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #倒着打印九九乘法表 for i in range(1,10): for item in range(i): print(" " * 12,end=" ") for j in range(i,10): print("{} x {} = {:<4}".format(i,j,i*j),end=" ") print()
倒着打印九九乘法表(方案一)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #倒着打印九九乘法表 for i in range(1,10): for j in range(1,10): if i > j : line = "{} {} {:<4}".format(" "," "," ") else: line = "{} x {} = {:<4}".format(i,j,i*j) print(line,end=" ") print()
倒着打印九九乘法表(方案二)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #倒着打印九九乘法表 for i in range(1,10): print((i-1)*(" " * 14),end="") for j in range(i,10): print('%d x %d = %d' % (i, j, (i * j)), end=" ") if i * j < 10: print(end=" ") print()
倒着打印九九乘法表(方案三)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #倒着打印九九乘法表 for i in range(1,10): print(' '* 7 * (i - 1),end="") for j in range(i,10): product = i * j if product < 10: end = ' ' else: end = ' ' print(str(i) + "*" + str(j) + "=" + str(i * j),end=end) print()
倒着打印九九乘法表(方案四)
#!/usr/bin/env python #_*_conding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie # 前导空格 for i in range(1,10): print(" " * 12 * (i - 1), end="") for j in range(i,10): print("{} x {} = {}".format(i,j,i*i),end="\t") print()
倒着打印九九乘法表之前导空格
#!/usr/bin/env python #_*_conding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie #右对齐 for i in range(1,10): line = "" for j in range(i,10): line += "{} x {} = {:<{}}".format(i,j,i*j,2 if j < 4 else 3) print("{:>98}".format(line))
倒着打印九九乘法表之右对齐
9>.打印如下图所示的菱形或闪电(典型的中心对称案例)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #打印菱形 display = "*" for item in range(1,8,2): print((display * item).center(7)) for item in reversed(range(1, 6, 2)): print((display * item).center(7))
打印菱形(案例一)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #打印菱形 for i in range(-3,4): if i < 0: prespace = -i else: prespace = i print(" " * prespace + "*" * (7 - prespace * 2))
打印菱形(案例二)
#!/usr/bin/env python #_*_conding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie #打印菱形 n = 7 e = n // 2 char = "*" for i in range(-e,n-e): line = (n - 2 * abs(i)) * char print("{:^{}}".format(line,n))
打印菱形(方案三)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #打印闪电 for i in range(-3,4): if i < 0: print(" " * (-i) + "*" * (4 + i)) elif i > 0: print(" " * 3 + "*" * ( 4 - i)) else: print("*" * 5)
打印闪电(参考案例)
10>.求斐波那契数列第101项
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com a = 1 b = 1 index = 2 print("第0项是:{}".format(0,0)) print("第1项是:{}".format(1,1)) print("第2项是:{}".format(2,1)) while True: c = a + b a = b b = c index += 1 print("第{}项是:{}".format(index,c)) if index == 101: break
斐波拉契数列参考案例
11>.打印10万内的所有素数(应用在密码学领域,都要使用大素数)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #打印10万内的所有素数 print(1) print(2) print(3) for i in range(3,100000,2): m = i ** 0.5 for j in range(3,i,2): if i %j == 0: break if j>m: print(i) break
打印10万内的所有素数(参考案例一)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #打印10万内的所有素数 num =100000 if num > 2: print(2) if num > 3: print(3) if num > 5: print(5) if num > 7: print(7) for num in range(11,num + 1,2): for i in range(3,int(num ** 0.5) + 1,2): if num % i == 0: break else: print(num)
打印10万内的所有素数(参考案例二,和上面的案例的时间复杂度如出一撤,效率和案例一类似)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #打印10万内的所有素数 for i in range(2,10000): for j in range(2,i): if i % j == 0: break else: print(i)
打印10万内的所有素数(参考案例三,改案例时间复杂度最高,运行时间周期最长,效率自然是最低的!)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #打印10万内的所有素数 import time start = time.clock() for i in range(1,100000,2): if i % 3 == 0: continue if i % 5 == 0: continue for j in range(7,int(i ** 0.5) + 1,2): if i % j == 0: continue print(i) end = time.clock() print(end - start)
打印10万内的所有素数(参考案例四,使用time模块计算运行时间)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #打印10万内的所有素数 import datetime start =datetime.datetime.now() for i in range(1,100000,2): if i % 3 == 0: continue if i % 5 == 0: continue for j in range(7,int(i ** 0.5) + 1,2): if i % j == 0: continue print(i) end = datetime.datetime.now() print(end - start)
打印10万内的所有素数(参考案例五,使用datatime模块计算运行时间)
12>.输入两个数,比较大小后,从小到大升序打印
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #输入两个数,比较大小后,从小到大升序打印 num_1 = int(input("请输入第一个数字:>>> ")) num_2 = int(input("请输入第二个数字:>>> ")) if num_1 > num_2: print(num_2,num_1) else: print(num_1,num_2)
输入两个数,比较大小后,从小到大升序打印(参考答案)
13>.给一个半径,求圆的面积和周长(圆周率我们取值为3.14)。
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #给定一个半径,求圆的面积和周长,圆周率为3.14 r = int(input("请输入圆的半径:>>> ")) PI = 3.14 Perimeter = 2 * PI * r Area = PI * r ** 2 print("您输入的圆半径为:{},其周长为:{},其面积为:{}".format(r,Perimeter,Area))
给定一个半径,求圆的面积和周长,圆周率为3.14(参考答案)
14>.输入n个数,求每次输入后的算数平均数。
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #输入n个数,求每次输入后的算数平均数 input_count = 0 sum = 0 while True: nums = input("请输入一个整数:>>> ") if nums == "quit": break if nums.isdigit(): input_count += 1 sum += int(nums) avg = sum / input_count print("算数平均数为:{}".format(avg))
输入n个数,求每次输入后的算数平均数(参考案例一)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #输入n个数,求每次输入后的算数平均数 Flag = True NumberMembers = [] while Flag: nums = input("请输入一个整数:>>> ") if nums == "quit": Flag = False if nums.isdigit(): NumberMembers.append(nums) NumberSum = 0 for item in NumberMembers: NumberSum += int(item) NumberAvg = NumberSum / NumberMembers.__len__() print("目前已经存在的数字是:{},算数平均数为:{}".format(NumberMembers, NumberAvg))
入n个数,求每次输入后的算数平均数(参考案例二)
15>.解决猴子吃桃问题(猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想吃时,只剩下一个桃子了。求第一天共摘了多少个桃子。)
#!/usr/bin/env python #_*_coding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ #EMAIL:y1053419035@qq.com #解决猴子吃桃的问题 peach = 1 for i in range(9): peach = 2 * (peach + 1) print("猴子第一天共摘了[{}]个桃子".format(peach))
猴子第一天共摘了[1534]个桃子(点我查看计算代码)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156083.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...