一、内存管理

变量在动态语言中,无须事先声明,也不需要制定类型;

编程中一般无须关心变量的存亡,也不需要关心内存的管理;

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语言入门n-Python基础语法学习笔记相关推荐

  1. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

  2. python语言训练教程_PYTHON零基础快乐学习之旅(K12实战训练)

    本书在讲解Python编程语言语法概念的同时融入了相关的科学知识.随着人工智能技术的飞 速发展,编程教育越来越重要.编程的核心是算法和逻辑,是通往未来的语言.近期,国务院发 布<新一代看人工智能 ...

  3. python入门之基础语法学习笔记

    Python 中文编码 Python 文件中如果未指定编码,在执行过程会出现报错: Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决 ...

  4. python语言入门h_python教程,pythonh学习线路图?

    相信对于每个人而言,知道编程和学习编程这件事,出发点是不同的.汤哥在北京接触编程的时间是2013年,那个时候还在一个二线城市上大学,还没有这么多各种融资,各种互联网创业的氛围,大家想的更多的是一些线下 ...

  5. python 基础语法学习笔记(2019年4月第二周学习笔记)

    python day01 2019.4.8 计算机基础,python 变量 1.随机存储器就是内存:断电数据丢失,读写速度快 2.外存储器,硬盘,断电数据依然保存,缺点,读写速度慢 3.操作系统是什么 ...

  6. python语言基本认识_Python基础语法合集——了解python

    1.  了解Python Python是一种解释型(这意味着开发过程中没有了编译这个环节).面向对象(支持面向对象的风格或代码封装在对象的编程技术).动态数据类型的交互式(可在命令行中通过Python ...

  7. python语言入门自学-Python入门

    如果你想选择一种语言来入门编程,那么Python绝对是首选!Python非常接近自然语言,精简了很多不必要的分号和括号,非常容易阅读理解.编程简单直接,更适合初学编程者,让其专注于编程逻辑,而不是困惑 ...

  8. python语言入门电子版-python从入门到精通pdf

    pythonpdf是一款专注于python的电子图书,python一种面向对象的解释型计算机程序设计语言,而这款电子书就详细讲解了python相关知识,由浅入深,对初学者来说非常的实用.感兴趣的朋友欢 ...

  9. python语言入门全集-Python语言入门(一)

    Python,是一种面向对象的解释型语言,也有一种说法,说它是一种先编译后解释的语言,先将代码转成中间编码,用时再用解释器将中间编码转成机器码执行.先来解释一下提到的几个概念.面向对象是对某对象进行操 ...

  10. Swift基础语法学习笔记(1)

    Swift基础语法的学习 1.HashMap 2.for-in循环控制 3.??聚合运算 4.SwiftUI的一些小技巧 5.init初始化器 6.@propertyWrapper属性包装器 音乐评分 ...

最新文章

  1. 九度-1463-招聘会
  2. Quartz-异常处理
  3. python并发之concurrent.futures
  4. 程序员刚结婚3天,老婆疑似骗婚?聊天记录曝光,网友:拜金实锤
  5. yolov4论文_YOLOv4论文详细解读
  6. catia怎么将特征参数化_搭建商城网站怎么将页面简洁化?这三个步骤不能少
  7. [我的理解]Javascript的原型与原型链
  8. flask 自定义错误页面
  9. 120天的努力,从牵引力教育开始逆袭的!
  10. stderr和stdout详细解说
  11. 【技术评测】ArcBlock:试图一同江湖的网络层,实现难度比较大
  12. C#的正确版本号是多少?
  13. 概率论与数理统计大纲
  14. 支持hicar的华为手机
  15. bugku 旋转跳跃
  16. 副词(Adverb 简称adv.)
  17. signature=506ccff074d130c2e8d4e3268d3b44f1,Secure proxy signature schemes from the Weil pairing
  18. 【HenCoder】HTTPS 为什么是安全的
  19. 软件测试环境的搭建及详解
  20. FTP上传下载失败或文件为空

热门文章

  1. gmapping matlab实现_gmapping学习
  2. 网上服务器租借要多少钱_台湾租借日本服装多少钱-北京和益文化传媒有限公司...
  3. 读书笔记 《Perl语言入门》 Day 1
  4. 开发日记-20190531 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  5. cassandra的全文检索插件
  6. peewee flask pwiz 中使用模型 过一段时间报错 peewee.InterfaceError: (0, '') 的解决方式
  7. openssl 从cer文件中提取公钥
  8. JavaScript 30 - 3 学习笔记
  9. eclipse 使 用Ctrl+鼠标左键进入mapper.xml文件的方法
  10. php对mongo操作问题