编程中编写循环的技巧?

编程中编写循环的技巧?,第1张

以python为例谈谈编写循环的技巧,for循环包含了常见的计数器式循环。由于通常for循环比while循环更容易写,也执行得更快,所以for循环一般是你遍历序列或其他可迭代对象时的首选。事实上,作为一条通用法则,你应该克制在Python中使用计数方式的诱惑——Python提供的迭代工具,能帮你把像C这样低级语言中循环集合体的工作自动化。

不过,有些情况下你还是需要以更为特定的方式进行迭代。例如,如果你需要在列表中每隔一个元素或每隔两个元素进行访问,或是要同时修改列表呢?如果在同一个for循环内,并行遍历一个以上的序列呢?如果你也需要进行索引呢?

你总是可以用while循环和手动索引运算来编写这些独特的循环,但是python提供了一套内置函数,可以帮你在for循环内定制迭代:

·内置函数range (Python 0.X及之后版本可用)返回一系列连续增加的整数,可作为

for中的索引。

内置函数zip (Python 2.0及之后版本可用)返回一系列并行元素的元组,可用于在for中内遍历多个序列。

内置函数enumerate (Python 2.3及之后版本可用)同时生成可迭代对象中元素的值和索引,因而我们不必再手动计数。

内置函数map (Python 1.0及之后版本可用)在Python 2.X中与zip有着相似的效果,但是在3.X中 map 的这一角色被移除了。

因为for循环可能会比基于while的计数器循环运行得更快,所以借助这些工具并尽可能地使用for循环,会让你受益匪浅。让我们在常见的使用场景下,依次看一看这些内置函数吧。我们将会看到,它们的用法在Python 2.X和3.X中稍有不同,同时它们中的一些要比其他的更加有效。

看你的循环用来干嘛的,举例一个for循环的写法:

int

n

while(1){

scanf("%d",&n)

if(n==0)break

int

sum=0

for(int

i=1i<=ni++){sum=sum+i}

printf("sum=%d\n",sum)

}

最后的结果就是得出1加到n的值,而且程序会一直让你输入一个n,直到你输入一个0程序就跳出了~!

for循环,特征:可以规定循环次数,并且每次循环中,循环变量取值都可以不同,可以区分是第几次循环

图案有6行,因此for循环6次,循环变量i,每次循环完成打印一行,6次循环i的取值: 0,1,2,3,4,5 程序为

#define N 6

void main() { int i,j

for ( i=0i<Ni++ ) { //循环N次,i每次加1,从0开始

... //实现输出一行图案,根据i的取值而每行不同

printf("\n")//每次循环最后输出一个换行

}

}

分析一下每行图案结构: 前面有空格,然后是星号

空格每行的个数分别是: 0,1,2,3,4,5 正好是i的取值,因此上边程序...位置加一句

for ( j=0j<ij++)printf("  ")//输出i个空格,因为考虑到图案中星号后面还要添加空格因此printf空格数为两个,为1个单位1组

星号个数: 11,9,7,5,3,1 如果是: 1,3,5,7,9,11的顺序,可以用i*2+1算出来,现在顺序的计算方法是(N-i-1)*2+1

因此程序设计为:

#include<stdio.h>

#define N 6

#define KG i

#define XH ((N-i-1)*2+1)

void main() { int i,j

for ( i=0i<Ni++ ) { //循环N次,i每次加1,从0开始

for ( j=0j<KGj++ ) printf("  ")//两个空格

for ( j=0j<XHj++ ) printf("* "): //循环XH次,每次循环输出星号空格一次

printf("\n")//每次循环最后输出一个换行,结束当前行

}

}

只修改3个宏定义就可以得到常见的一些图案


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11144607.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存