热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python基础编程语法Python基础语法学习笔记

一、内存管理变量在动态语言中,无须事先声明,也不需要制定类型;编程中一般无须关心变量的存亡,也不需要关心内存的管理&#x

一、内存管理

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

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

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

<&#61;-1

()空元组

[]空列表

{}空字典

None

多分支结构

if…elif…else语句

if condition1:

代码块1

elif condition2:

代码块2

elif condition3:

代码块3

……

else:

代码块

分支嵌套举例&#xff1a;

嵌套结构&#xff0c;可以是分支、循环的嵌套&#xff1b;

可以互相嵌套多层。

score&#61;80

if score<0:print(&#39;wrong&#39;)else:if score&#61;&#61;0:print(&#39;egg&#39;)elif score <&#61; 100:print(&#39;right&#39;)else:print(&#39;too big&#39;)

使用input函数

input函数获取键盘输入input([prompt])

查看帮助文档方法一&#xff1a;

1951227-20200315234719410-1187442759.png

查看帮助方法二&#xff1a;

1951227-20200315234738143-561665380.png

注&#xff1a;Python中&#xff0c;下划线"_”是一个合法的标识符

同时也是一个特殊标识符&#xff0c;它指的是上一次output的结果

1951227-20200315234812246-880287800.png

练习&#xff1a;

1.输入2个数字&#xff0c;输出最大数

a &#61; int(input(&#39;input a number:&#39;))

b&#61; int(input(&#39;input a number:&#39;))if a >b:print(a)else:print(b)

1951227-20200315234901391-1062572508.png

代码等效&#xff08;使用三元表达式&#xff1a;真值 if 条件 else 假值&#xff09;&#xff1a;

a &#61; int(input(&#39;input a number:&#39;))

b&#61; int(input(&#39;input a number:&#39;))print(a) if a > b else print(b)

1951227-20200315234916516-1985942206.png

2.给定一个不超过5位的正整数&#xff0c;判断其有几位

#使用if…elif…else…

a &#61; int(input(&#39;input a number:&#39;) )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)

1951227-20200315235513705-1110224037.png

代码优化方案——折半

newnumber &#61; int(input(&#39;number:&#39;))if newnumber >&#61; 100:if newnumber >&#61; 10000:print(5)elif newnumber >&#61; 1000:print(4)else:print(3)else:if newnumber >&#61; 10:print(2)else:print(1)

1951227-20200315235604300-348094610.png

代码优化——使用len内置函数&#xff1a;

newnumber &#61; input(&#39;number:&#39;)

length&#61;len(newnumber)print(length)

1951227-20200315235703767-1206804002.png

循环结构——while循环和for循环

while语法&#xff1a;

while condition:

block

注&#xff1a;当条件满足condition为True&#xff0c;进入循环体&#xff0c;执行block

while举例&#xff1a;

flag &#61; 10

whileflag:print(flag)

flag-&#61; 1

1951227-20200315235742721-1715072145.png

注意边界&#xff0c;Python整型没有边界。

如果将上面代码改为"flag &#43;&#61; 1”便进入死循环。

for语法&#xff1a;

for element in iteratable:

block

注&#xff1a;当可迭代对象中有元素可以迭代&#xff0c;进入循环体&#xff0c;执行block

range函数

for和 range函数举例&#xff1a;打印1~10

for i in range(10):print(i&#43;1)

1951227-20200315235835568-118205438.png

Range函数简介&#xff1a;前包后不包&#xff0c;range(起,止,步长)

例&#xff1a;

range(5) &#61;&#61;> range(0,5)&#61;&#61;>[0,5] &#61;&#61;> [0,1,2,3,4]

list(range(0,5,2))>>>[0,2,4]

1951227-20200315235900930-1784372884.png

1951227-20200315235920777-1757344040.png

循环中的 continue语句

中断当前循环的当次执行&#xff0c;继续下一次循环&#xff1b;

举例&#xff1a;计算10以内的偶数&#xff08;for循环&#xff09;

for i in range(10):if not i%2:print(i)

1951227-20200316000012827-2122956182.png

#引用range函数的步长

for i in range(0,10,2):print(i)

1951227-20200316000044578-1708009229.png

#引用continue

for i in range(10):if i%2:continue

print(i)

1951227-20200316000116175-1694857802.png

#引用位与运算

for i in range(10):if not i&0x01:print(i)

1951227-20200316000146346-1787605965.png

for i in range(10):if i&0x01:continue

print(i)

1951227-20200316000217658-901810857.png

循环中的 break语句

终止当前循环

举例&#xff1a;计算1000以内的被7整除的前10个数&#xff08;for循环&#xff09;

count &#61;0for i in range (7,1000,7):print(i)

count&#43;&#61; 1

if count >&#61; 10:break

1951227-20200316000258489-409577816.png

循环continue、break语句总结&#xff1a;

continue和break是循环的控制语句&#xff0c;只影响当前循环&#xff0c;包括while、for循环&#xff1b;

如果出现循环嵌套&#xff0c;continue和break也只影响语句所在的那一层循环&#xff1b;

continue和break不是跳出语句块&#xff0c;所以if cond:break 不是跳出if&#xff0c;而是终止if外的break所在的循环

for i in range(5):

for j in range(5):

if i>j:

print(666)

continue

if i>&#61;j:

print(555)

break

1951227-20200316000530493-1019308171.png

练习&#xff1a;给定一个不超过5位的正整数&#xff0c;判断该数的位数&#xff0c;依次打印出个位&#xff0c;十位、百位、千位、万位的数字

number &#61; int(input(&#39;>>>&#39;))

number*&#61; 10

while(number//10)!&#61;0:

number//&#61;10

print(number%10)

1951227-20200316000632419-436340113.png

number &#61; int(input(&#39;>>>&#39;))

numberV&#61;len(str(number))fori inrange(numberV):print(number%10)

number&#61;number//10

1951227-20200316000702891-234495260.png

将上面的结果反过来打印&#xff1a;

number &#61; int(input(&#39;>>>&#39;))

numberV&#61;len(str(number))

c&#61;numberfor i inrange(numberV):

v&#61;10**(numberV-i-1)

m&#61; c //vprint(m)

c-&#61; v*m

1951227-20200316000817452-369992825.png

循环else子句语法

while condition:

block

else:

block

for element in iteratable:

block

else:

block

##如果循环正常的执行结束&#xff0c;就执行else子句&#xff1b;

##如果使用break终止&#xff0c;else子句不会执行。

for i in range(5):print(i)#if i > 3:

#break

#continue

else:print(&#39;OK&#39;)

1951227-20200316082606577-1287168647.png

练习&#xff1a;

一个整数&#xff0c;它加上100后是一个完全平方数&#xff0c;再加上168又是一个完全平方数&#xff0c;请问该数是多少&#xff1f;

程序分析&#xff1a;

假设该数为 x。

1、则&#xff1a;x &#43; 100 &#61; n2, x &#43; 100 &#43; 168 &#61; m2

2、计算等式&#xff1a;m2 - n2 &#61; (m &#43; n)(m - n) &#61; 168

3、设置&#xff1a; m &#43; n &#61; i&#xff0c;m - n &#61; j&#xff0c;i * j &#61;168&#xff0c;i 和 j 至少一个是偶数

4、可得&#xff1a; m &#61; (i &#43; j) / 2&#xff0c; n &#61; (i - j) / 2&#xff0c;i 和 j 要么都是偶数&#xff0c;要么都是奇数。

5、从 3 和 4 推导可知道&#xff0c;i 与 j 均是大于等于 2 的偶数。

6、由于 i * j &#61; 168&#xff0c; j>&#61;2&#xff0c;则 1

7、接下来将 i 的所有数字循环计算即可。

for i in range(1,85):if 168 % i &#61;&#61;0:

j&#61; 168 /i;if i > j and (i &#43; j) % 2 &#61;&#61; 0 and (i - j) % 2 &#61;&#61;0 :

m&#61; (i &#43; j) / 2n&#61; (i - j) / 2x&#61; n * n - 100

print(x)

1951227-20200316002424198-475037784.png

练习&#xff1a;打印斐波那契数列

程序分析&#xff1a;斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列。

指的是这样一个数列如&#xff1a;0、1、1、2、3、5、8、13、21、34、……

程序分析&#xff1a;

F0 &#61;0(n&#61;0)F1 &#61;1(n&#61;1)Fn&#61;F[n-1]&#43;F[n-2](n&#61;>2)

方法一&#xff1a;

deffib(n):

a,b&#61; 1,1

for i in range(n-1):

a,b&#61; b,a&#43;breturna#输出了第10个斐波那契数列

print(fib(10))

1951227-20200316003230212-1756556481.png

方法二&#xff1a;使用递归

#使用递归

deffib(n):if n&#61;&#61;1 or n&#61;&#61;2:return 1

return fib(n-1)&#43;fib(n-2)#输出了第10个斐波那契数列

print(fib(10))

1951227-20200316003620585-21377592.png

练习&#xff1a;打印一个边长为N的正方形

n &#61; 5

print(&#39;*&#39;*n)for i in range(n-2):print(&#39;*&#39;&#43;&#39; &#39;*(n-2)&#43;&#39;*&#39;)print(&#39;*&#39;*n)

1951227-20200316084026185-996107133.png

#边长&#61;3&#xff0c;则-1 0 -1 &#61;>range(-1,2)#边长&#61;4&#xff0c;则-2 -1 0 1 &#61;>range(-2,2)#边长&#61;5&#xff0c;则-2 -1 0 1 2 &#61;>range(-2,3)

n &#61; 5e&#61; -n//2

for i in range(e,n&#43;e):if i &#61;&#61; e or i &#61;&#61; n&#43;e-1:print(&#39;*&#39;*n)else:print(&#39;*&#39; &#43; &#39; &#39;*(n-2) &#43; &#39;*&#39;)

1951227-20200316084811949-200879481.png

练习&#xff1a;求100以内所有奇数的和

b &#61;0for i in range(1,100,2):

b&#43;&#61;iprint(b)

1951227-20200316085327323-1229882489.png

练习&#xff1a;打印九九乘法口诀表

for i in range(1,10):for o in range(1,i&#43;1):print(&#39;{}*{}&#61;{} &#39;.format(i,o,i*o),end&#61;&#39;&#39;)print()

1951227-20200316095706812-17762553.png


推荐阅读
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元࿰ ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 学习Java异常处理之throws之抛出并捕获异常(9)
    任务描述本关任务:在main方法之外创建任意一个方法接收给定的两个字符串,把第二个字符串的长度减1生成一个整数值,输出第一个字符串长度是 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文介绍了在Python中使用FOR循环实现用户输入错误值3次后终止程序的方法。作者提到了自己对这个问题的困惑和尝试,并给出了解决方案。该方案要求代码必须包含FOR循环,但作者不确定是需要一个FOR循环还是3个FOR循环。最后,作者还给出了一些示例代码来说明如何将英里转换为公里和将英寸转换为厘米。 ... [详细]
author-avatar
马璐720
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有