从c语言到Python (4)循环语句
题主是大一学生,刚刚开始学习python,但是题主有一定的c语言基础,在这里以两者对比的形式做一些学习笔记
#循环语句的命名
在python和c语言中,都有两个循环语句,关键字都是while/for,看似都是大同小异,但是其实笔者在这里窥到了一些小玄机。
##while
在c语言里,我们把它称呼为while、do while循环结构;而在python里面,他有一个专门的名字---条件循环
##for
同样的,在c语言里,我们把它称呼为for循环结构;而在python里面,他也有一个专门的名字---遍历循环。
相关的结构在后面详细解释,这里主要讨论命名上的一些趣事
---------------------------------------------------------分割线---------------------------------------------------------------
我们都知道,c语言可以说是元老级的编程语言而python是20世纪末被创造,近几年才开始兴起的一门编程语言。同时它们最大的区别是c语言是面向过程的语言而python是面向对象的语言。
设想作为语言的创造者,创造一门编程语言肯定要能继承原来的功能。而作为“面向对象的语言”,它也会创造很多便利性。
对于同一个功能来说,如果我们给它取一个新名字,(比如把循环的名字改成重复等等)这无疑是增大开发者和学习者的无效工作量——开发者要花时间给它取新名字、学习者要记住它的新名字。那无异于脱裤放屁,更改它的名字肯定是出于一些目的。
举个例子,各种数据类型在python和c语言的称呼几乎是一样的,只有“字符型”改了名字:从char变成了str。这可能就是因为,python把“字符串”作为最基础的数据类型(这会提供很大的便利),单个字符是长度为1的字符串罢了;而在c语言中,根本不存在字符串的类型,所谓字符串其实是一个字符的数组——也就是多个字符的连续。也就是:c语言是以单个字符(character)为基础,而python是以字符串(string)为基础,这里的更名的原因就显而易见了。
有趣的就是,在循环里相似的循环标识符被取了不同的名字,那来看看这里的原因是什么。
#c语言的这两个循环
##while循环
while循环的基本结构为:
while(条件)
{
执行内容
}
只要满足条件就执行。
do……while 循环放在文章末尾介绍,因为其实笔者认为它不能和while算作一类
##for循环
for循环的基本结构是:
for(语句1;语句2;语句3){执行内容}
这里的三个语句一般对同一个变量操作,一般是有计数或者按顺序查找、使用的需要就可以使用for循环。
语句1是初始条件,语句二是循环的条件,语句三是操作。
其实for循环是对while循环的一种在特殊情况下的简化。
#include<stdio.h>
int main()
{int i = 0;int total = 0;while(i<=10){total += i;i++;}printf("%d",total);
}#include<stdio.h>
int main()
{int total = 0;for(int i = 0;i<=10;i++){total+=i;}printf("%d",total);
}
因为有一个“i”作为1~10的逐个使用,这里就可以把i用在for循环内,更加简洁。尤其是把i作为数组下标进行数组的遍历很方便,大多数人的编程习惯都是for循环遍历数组。
当然for循环和while循环可以快乐地互相转化。
#python的这两个循环
##python中的条件循环基本结构是:
while 条件:
操作
##python中的遍历循环基本结构是:
for 参数 in range(首(默认0),尾(不取到),step(默认1)):
操作
或者for 参数 in <列表、元组、集合、字典等>(!!):
操作
这里使用他把缩进来区分循环内外的操作
从名字可以看出来,for循环从适合遍历的循环变为了专门用来遍历的循环,它不仅仅是把初始条件、判断条件和参数操作写在了同一个括号里,而是把(i = 0;i<10;i++)直接写成for i in range(10),变成了一种极其便利的循环方式。
我们诚然可以用for循环来代替while循环,只要把range里面的范围设置的足够大,再在合适的位置使用break就可以实现条件循环,但是这很麻烦很没有必要。
用for替换while仅仅是麻烦,用while替换for可以说是不可行。
在python里有集合与字典这2种变量集,它们有一个特性,就是它们在内存中不是顺序存放的,也就是说,我们不能以一号元素、二号元素……的方式遍历它。
而for循环提供了一个遍历方法:管你是不是连续,对你所有的元素都进行这个操作。这在while循环里是难以实现的,因为这种遍历方法避开了顺序查找。
因此python在什么时候用条件循环什么时候用遍历循环是规定的比较严格的,
换句话说,在c语言里for/while循环的选用是编程习惯,在python里是编程要求。
python牺牲了一定的编程自由度换来的是编程的便利性(以后我们会发现引入集合和字典会多方便)和语句的规范性,这和python以tab来作为循环语句和分支语句的区分符号 是相似的,通过一些强制的语法要求,牺牲一定编程自由度换取更加简洁规范便利的代码。
#补充do while 循环
这是c语言独有的循环,它是一种特别的循环。
c语言把循环语句分为两类:当型循环和直到型循环,最大的区别是条件和操作的先后关系。for与while都是当型循环,而do while是直到型循环,下图是它们的区别:
它的语句是:
do{操作}while(条件)
也就是说,无论如何至少会进入一次循环。
#小结
笔者发现python 有趣的一点就是牺牲了一些编程自由度和计算机层面的逻辑型达到更高效的编程和更适宜的代码可读性。在实用性上有很大帮助。
从c语言到Python (4)循环语句相关推荐
- python的for循环语句_干货丨Python的循环语句基础讲解!
我们知道计算机程序语言一般是按照顺序执行的,那么编程语言就提供了各种控制结构,允许更复杂的执行路径,其中循环语句的作用就是允许我们执行一个语句或语句组多次. 在Python中循环语句的类型主要有以下几 ...
- python中循环语句的用法,python几种循环方式
python中while循环的用法是什么? python while循环语句:while 判断条件(condition):执行语句(statements)--执行语句可以是单个语句或语句块. 判断条件 ...
- php循环语句w,php语言的几种循环语句的使用格式,及其区别
while 只要指定的条件成立,则循环执行代码块 do...while 首先执行一次代码块,然后在指定的条件成立时重复这个循环 for 循环执行代码块指定的次数 foreach 根据数组中每个元素来循 ...
- python内循环语句的使用
python内循环语句的使用 python内的5种基本循环语句 while 若为真,则循环,常与比较运算符使用 for 若为真,则循环,常与成员运算符使用 continue 终止当前循环,进入下一循环 ...
- python while循环语句-Python While 循环语句
Python While 循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件(cond ...
- python while循环语句-python while循环控制流语句结构与用法
python while循环语句和for语句都是python的主要循环结构.while语句是python中最通用的迭代结构,也是一个条件循环语句.while与if语句有哪些不同,标准语法结构及循环使用 ...
- python for循环语句的用法
for x in 字符串 for x in 列表 for x in range(数字) for x in range(数字, 数字) for( i=1; i <= x; i++ ) 参考文章:P ...
- C语言中要改变循环语句的流程可以使用的语句有哪些
C语言中要改变循环语句的流程可以使用的语句有:break,continue和goto.break语句可以终止循环而执行整个循环语句后面的代码:continue语句可以跳过循环体中剩余的语句而强制进入下 ...
- python教程循环语句_Python教程:关于Python 循环语句
Python 循环语句 本章节将向大家介绍Python的循环语句,程序在一般情况下是按顺序执行的. 编程语言提供了各种控制结构,允许更复杂的执行路径. 循环语句允许我们执行一个语句或语句组多次,下面是 ...
- python的if循环语句_第二个是Python的循环语句,基础,使用,if,条件,判断,while,for
条件判断语句 Python里的条件判断语句有if.if--else和if--elif--elif--else if条件判断语法格式 if 条件判断: 条件成立,执行此处代码 例:输入年龄,判断是否成年 ...
最新文章
- 洛谷 P5057 [CQOI2006]简单题(树状数组)
- ceph 部署单机集群
- IIS 7启用static JSON文件能POST方法
- 单片机节日彩灯实训报告_单片机课程设计(节日彩灯控制)
- MySQL - MySQL不同存储引擎下索引的实现
- Java基础提升篇:equals()方法和“==”运算符
- html---textarea初始化时就有个table空格以及tab键操作无效
- Linq 左连接 left join
- java数组对角线的和_java – 2d数组对角线填充
- NDPQ(NDP+PQ),定义分布式数据库新方向
- jre放到Tomcat目录并指定使用此jre的方法
- 这首歌,竟然是AI生成的,太狠了...
- 二级域名共享cookies
- PN5321(PN5321A3HN/C106)国产替代,FSVP532软硬件兼容,支持A卡,B卡,FeliCa卡,支持ISO/IEC18092,ECM340点对点
- 同比和与环比的计算公式
- golang 的testing.T 和 testing.M 的区别
- php压缩文件下载后损坏,php下载压缩文件
- bindingx 表达式动画
- 【动态规划】什么是动态规划
- 删除桌面计算机,电脑设置小技巧(多余壁纸、屏保删除方法)
热门文章
- 禾穗HERS | 我说过一万遍“我爱你”,每一次都有不同的意义
- 细说php2[正则表达式学习笔记]
- 感染力六原则STEPPS:如何将信息有效传播,让产品广为流传?
- 【计算机毕业设计】526教师人事档案管理系统
- RPR220 一体化反射型光电探测器
- (二)字符函数和字符串函数详细讲解和模拟实现(优化)
- 瑞吉酒店及度假村计划未来五年内将全球度假酒店数量翻倍;上海南虹桥万枫酒店正式开业 | 全球旅报...
- WebFrom 【母版页】
- dva + antd 报错
- php curl 模拟post提交