python基础编程语法-Python基础语法学习笔记
一、内存管理
变量在动态语言中,无须事先声明,也不需要制定类型;
编程中一般无须关心变量的存亡,也不需要关心内存的管理;
Python使用"引用计数”记录所有对象的引用数
当对象引用数变为0,它就可以被"垃圾回收”GC
计算增加:赋值给其他变量就增加引用计数,例如X=3,Y=X
计数减少:函数运算结束时,局部变量就会被自动销毁,对象引用计数减少;
变量被赋值给其他对象。例如:x=3;y=x;x=4
当"引用计数”归0,即表示该对象不再被使用,垃圾回收机制会定期对"引用计数”标记为0的对象进行释放。
有关性能的时候,就需要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求。
##相关问题###
内存空洞是如何产出的;
如何规避内存空洞;
内存回收优化方案;
二、程序控制
顺序执行
按照先后顺序一条条执行;
分支结构
根据不同的情况判断,条件满足执行某条件下的语句;
循环执行
条件满足就反复执行,不满足就不执行或不再执行;
if语句
if condition:
代码块
condition必须是一个bool类型,这个地方有一个隐式转换bool 参考"真值表”
真值表
对象/常量
值
总结
""
假
False等价布尔值,相当于bool(value)
空集合
空字符串
空字典
空列表
空元组
None对象
0
"string"
真
0
假
>=1
真
<=-1
真
()空元组
假
[]空列表
假
{}空字典
假
None
假
多分支结构
if…elif…else语句
if condition1:
代码块1
elif condition2:
代码块2
elif condition3:
代码块3
……
else:
代码块
分支嵌套举例:
嵌套结构,可以是分支、循环的嵌套;
可以互相嵌套多层。
score=80
if score<0:print('wrong')else:if score==0:print('egg')elif score <= 100:print('right')else:print('too big')
使用input函数
input函数获取键盘输入input([prompt])
查看帮助文档方法一:
查看帮助方法二:
注:Python中,下划线"_”是一个合法的标识符
同时也是一个特殊标识符,它指的是上一次output的结果
练习:
1.输入2个数字,输出最大数
a = int(input('input a number:'))
b= int(input('input a number:'))if a >b:print(a)else:print(b)
代码等效(使用三元表达式:真值 if 条件 else 假值):
a = int(input('input a number:'))
b= int(input('input a number:'))print(a) if a > b else print(b)
2.给定一个不超过5位的正整数,判断其有几位
#使用if…elif…else…
a = int(input('input a number:') )if a<10:print(1)elif a<100:print(2)elif a<1000:print(3)elif a<10000:print(4)elif a<100000:print(5)
代码优化方案——折半
newnumber = int(input('number:'))if newnumber >= 100:if newnumber >= 10000:print(5)elif newnumber >= 1000:print(4)else:print(3)else:if newnumber >= 10:print(2)else:print(1)
代码优化——使用len内置函数:
newnumber = input('number:')
length=len(newnumber)print(length)
循环结构——while循环和for循环
while语法:
while condition:
block
注:当条件满足condition为True,进入循环体,执行block
while举例:
flag = 10
whileflag:print(flag)
flag-= 1
注意边界,Python整型没有边界。
如果将上面代码改为"flag += 1”便进入死循环。
for语法:
for element in iteratable:
block
注:当可迭代对象中有元素可以迭代,进入循环体,执行block
range函数
for和 range函数举例:打印1~10
for i in range(10):print(i+1)
Range函数简介:前包后不包,range(起,止,步长)
例:
range(5) ==> range(0,5)==>[0,5] ==> [0,1,2,3,4]
list(range(0,5,2))>>>[0,2,4]
循环中的 continue语句
中断当前循环的当次执行,继续下一次循环;
举例:计算10以内的偶数(for循环)
for i in range(10):if not i%2:print(i)
#引用range函数的步长
for i in range(0,10,2):print(i)
#引用continue
for i in range(10):if i%2:continue
print(i)
#引用位与运算
for i in range(10):if not i&0x01:print(i)
for i in range(10):if i&0x01:continue
print(i)
循环中的 break语句
终止当前循环
举例:计算1000以内的被7整除的前10个数(for循环)
count =0for i in range (7,1000,7):print(i)
count+= 1
if count >= 10:break
循环continue、break语句总结:
continue和break是循环的控制语句,只影响当前循环,包括while、for循环;
如果出现循环嵌套,continue和break也只影响语句所在的那一层循环;
continue和break不是跳出语句块,所以if cond:break 不是跳出if,而是终止if外的break所在的循环
for i in range(5):
for j in range(5):
if i>j:
print(666)
continue
if i>=j:
print(555)
break
练习:给定一个不超过5位的正整数,判断该数的位数,依次打印出个位,十位、百位、千位、万位的数字
number = int(input('>>>'))
number*= 10
while(number//10)!=0:
number//=10
print(number%10)
number = int(input('>>>'))
numberV=len(str(number))fori inrange(numberV):print(number%10)
number=number//10
将上面的结果反过来打印:
number = int(input('>>>'))
numberV=len(str(number))
c=numberfor i inrange(numberV):
v=10**(numberV-i-1)
m= c //vprint(m)
c-= v*m
循环else子句语法
while condition:
block
else:
block
for element in iteratable:
block
else:
block
##如果循环正常的执行结束,就执行else子句;
##如果使用break终止,else子句不会执行。
for i in range(5):print(i)#if i > 3:
#break
#continue
else:print('OK')
练习:
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:
假设该数为 x。
1、则:x + 100 = n2, x + 100 + 168 = m2
2、计算等式:m2 - n2 = (m + n)(m - n) = 168
3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数
4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。
5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。
6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。
7、接下来将 i 的所有数字循环计算即可。
for i in range(1,85):if 168 % i ==0:
j= 168 /i;if i > j and (i + j) % 2 == 0 and (i - j) % 2 ==0 :
m= (i + j) / 2n= (i - j) / 2x= n * n - 100
print(x)
练习:打印斐波那契数列
程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列。
指的是这样一个数列如:0、1、1、2、3、5、8、13、21、34、……
程序分析:
F0 =0(n=0)F1 =1(n=1)Fn=F[n-1]+F[n-2](n=>2)
方法一:
deffib(n):
a,b= 1,1
for i in range(n-1):
a,b= b,a+breturna#输出了第10个斐波那契数列
print(fib(10))
方法二:使用递归
#使用递归
deffib(n):if n==1 or n==2:return 1
return fib(n-1)+fib(n-2)#输出了第10个斐波那契数列
print(fib(10))
练习:打印一个边长为N的正方形
n = 5
print('*'*n)for i in range(n-2):print('*'+' '*(n-2)+'*')print('*'*n)
#边长=3,则-1 0 -1 =>range(-1,2)#边长=4,则-2 -1 0 1 =>range(-2,2)#边长=5,则-2 -1 0 1 2 =>range(-2,3)
n = 5e= -n//2
for i in range(e,n+e):if i == e or i == n+e-1:print('*'*n)else:print('*' + ' '*(n-2) + '*')
练习:求100以内所有奇数的和
b =0for i in range(1,100,2):
b+=iprint(b)
练习:打印九九乘法口诀表
for i in range(1,10):for o in range(1,i+1):print('{}*{}={} '.format(i,o,i*o),end='')print()
python基础编程语法-Python基础语法学习笔记相关推荐
- python核心编程第二版第一章学习笔记
一.名字来源 贵铎·范·罗萨姆(Guido van Rossum)于1989 年底始创了Python,那时,他还在荷兰的CWI(Centrum voor Wiskunde en Informatica ...
- C#基础编程——简介及基础语法
C#基础编程--简介及基础语法 百科介绍 C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言.运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计 ...
- 《零基础学JavaScript(全彩版)》学习笔记
<零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...
- python web开发入门_python大佬整理的python web开发从入门到精通学习笔记
原标题:python大佬整理的python web开发从入门到精通学习笔记 Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通 ...
- 《python(廖雪峰课程)》学习笔记
<python(廖雪峰课程)>学习笔记(个人检索) 1. 第一个python程序 input & output print输出字符串可以用""or'' prin ...
- python游戏编程入门 免费-python游戏编程入门 python游戏编程入门课
python游戏编程入门 python游戏编程入门课 什么是python游戏编程入门?首先我们需要认识什么是Python Python既是一个软件工具包,也是一种语言.Python软件包包含了一个名为 ...
- DMU软件 语法高亮 vim设置--学习笔记6
用vim编程时, DMU的关键词没有语法高亮, 看着不舒服, 就进行一下设置, 并记录过程. 设置的效果如下 设置流程 本次设置的比较简单, 将关键词分为: 模型model, 比如DMU1, DMU2 ...
- 《小马哥讲Spring核心编程思想》-第一章学习笔记(1)
<小马哥讲Spring核心编程思想>-第一章学习笔记(1) 一.课程介绍 1.为什么要学习spring? 2.深入学习spring的难点有哪些? 3.课程的设计思路是怎样的? 二.内容综述 ...
- python基础编程练习_python基础练习之几个简单的游戏
文档介绍 利用python写"猜数字","猜词语","谁是卧底"这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列 ...
- 零基础编程入门python视频-Python编程零基础小白快速入门完整全系列精品课
1. 课程咨询加老师助理微信:助理1微信: chenjinglei88 ,助理2微信: omf6757 2. 决定购买并想得到陈敬雷老师亲自指导(课程或自己项目难题均可)加老师微信: chenjing ...
最新文章
- 别让扁平化设计平淡无奇
- Python 网络爬虫笔记10 -- Scrapy 使用入门
- java动态代理原理及解析
- c++排序函数_中式排名怎么做,你还在手动输入1、2、2、3?这组函数一秒搞定...
- Java JUC工具类--Exchanger
- CNKI学术趋势与万方数据的知识脉络
- Android 使用手机向手表安装任意.apk
- 史上最全的 iOS 各种测试工具集锦,看看有没有你不知道的
- 小试牛刀1:制作一个简单的导航栏页面
- 佳能Canon PIXMA TS208 打印机驱动
- 7-3 约分最简分式
- 以太网交换机的工作原理
- DEDE源码分析与学习之三: member/archives_*.php文件解读
- HAL库版STM32双轮自平衡车(三) ———代码精讲
- During sturtup program exited with code 0xc0000139的解决办法!
- java-net-php-python-ssm电子班牌系统计算机毕业设计程序
- 加载R包unloadNamespace时,我该怎么办
- 吴恩达老师DeepLearning系列课程最详细学习笔记之4—为什么深度学习会兴起?
- C++核心准则边译边学-目标之外
- 前端工程师能够用很低的学习本钱来运用它完成常用的效劳端代码
热门文章
- 机器学习代码实战——网格搜索和交叉验证(GridSearchCV)
- hadoop元数据mysql中表字段_Hive元数据表汇总分析
- vueweb端响应式布局_响应式网站和PC+手机端网站有什么区别?
- 问题记录 | 记录PIL中Image.save的一个坑
- 马士兵_JAVA自学之路(为那些目标模糊的码农们)
- 酒店客房管理系统需求分析报告
- 数论(Mathmatics)总结[1]
- jQuery动态加载select下拉列表
- 神spfa [Noi2014]魔法森林
- Xen Server 7.0 一直无法退出维护模式