Python循环结构详解:while, for与无限循环实例

版权申诉
0 下载量 21 浏览量 更新于2024-08-07 收藏 283KB PPT 举报
循环结构是程序设计中的重要概念,用于控制代码执行的重复流程,使得程序在满足特定条件时反复执行一段代码。在本资源中,主要讨论了三种常见的循环结构:`while`、`for`以及无条件无限循环。 1. `while`循环: `while`循环的基本结构是`while(expression) { statement }`,其中`expression`是一个布尔表达式,只要该表达式的值为真,循环就会继续执行。`expression`在每次循环开始前会被检查,如果为`true`,则执行`statement`部分,直到`expression`变为`false`才停止。 示例1中,`atoi`函数通过`while`循环处理输入字符串,跳过空格,判断正负号,然后通过`isdigit`函数逐位转换数字字符。 2. `for`循环: `for`循环提供了更简洁的方式来设置循环条件和迭代。其一般形式为`for(expr1; expr2; expr3) { statement }`,其中`expr1`通常用于初始化循环变量,`expr2`是循环条件,`expr3`用于迭代更新。循环体`statement`在`expr2`为`true`时执行,每轮结束后更新`expr3`。在示例2的`shellshort`函数中,使用嵌套的两个`for`循环对数组进行快速排序。 - 第一个`for`循环负责缩小间隔(gap),直到遍历到一半长度,用于较大的初始排序范围。 - 内部的第二个`for`循环用来比较相邻元素,当满足条件时交换它们。 - 第三个循环是对未排序部分进行细化调整的过程。 3. 无限循环 (`for(;;) { ... }`): 这种形式的循环没有明确的退出条件,只有通过在循环体内添加跳出条件或使用`break`语句来终止。这种循环在需要持续运行,直到外部干预(如用户输入或系统中断)时非常有用。 4. 遍历数组: 在示例3中,虽然没有直接展示,但提到的`for(i=0; i<n; i++)`是一个典型的数组遍历结构。它会依次处理数组中的每个元素,直到遍历到数组末尾(`n`为数组长度)。 总结起来,这部分内容着重讲解了循环结构在编程中的实际应用,包括while、for循环的用法和常见场景,以及如何利用这些结构高效地处理数据和控制程序流程。理解并熟练运用循环结构对于编写高效且可维护的程序至关重要。

Warning: No configuration directory set! Use --conf <dir> to override. Info: Including Hadoop libraries found via (/opt/hadoop-3.1.2/bin/hadoop) for HDFS access Info: Including HBASE libraries found via (/opt/hbase-2.2.6/bin/hbase) for HBASE access 错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty Info: Including Hive libraries found via (/opt/hive-3.1.2) for Hive access + exec /opt/jdk1.8.0_351/bin/java -Xmx20m -cp '/opt/flume-1.9.0/lib/*:/opt/hadoop-3.1.2/etc/hadoop:/opt/hadoop-3.1.2/share/hadoop/common/lib/*:/opt/hadoop-3.1.2/share/hadoop/common/*:/opt/hadoop-3.1.2/share/hadoop/hdfs:/opt/hadoop-3.1.2/share/hadoop/hdfs/lib/*:/opt/hadoop-3.1.2/share/hadoop/hdfs/*:/opt/hadoop-3.1.2/share/hadoop/mapreduce/lib/*:/opt/hadoop-3.1.2/share/hadoop/mapreduce/*:/opt/hadoop-3.1.2/share/hadoop/yarn:/opt/hadoop-3.1.2/share/hadoop/yarn/lib/*:/opt/hadoop-3.1.2/share/hadoop/yarn/*:/opt/hbase-2.2.6/conf:/opt/jdk1.8.0_351//lib/tools.jar:/opt/hbase-2.2.6:/opt/hbase-2.2.6/lib/shaded-clients/hbase-shaded-client-byo-hadoop-2.2.6.jar:/opt/hbase-2.2.6/lib/client-facing-thirdparty/audience-annotations-0.5.0.jar:/opt/hbase-2.2.6/lib/client-facing-thirdparty/commons-logging-1.2.jar:/opt/hbase-2.2.6/lib/client-facing-thirdparty/findbugs-annotations-1.3.9-1.jar:/opt/hbase-2.2.6/lib/client-facing-thirdparty/htrace-core4-4.2.0-incubating.jar:/opt/hbase-2.2.6/lib/client-facing-thirdparty/log4j-1.2.17.jar:/opt/hbase-2.2.6/lib/client-facing-thirdparty/slf4j-api-1.7.25.jar:/opt/hadoop-3.1.2/etc/hadoop:/opt/hadoop-3.1.2/share/hadoop/common/lib/*:/opt/hadoop-3.1.2/share/hadoop/common/*:/opt/hadoop-3.1.2/share/hadoop/hdfs:/opt/hadoop-3.1.2/share/hadoop/hdfs/lib/*:/opt/hadoop-3.1.2/share/hadoop/hdfs/*:/opt/hadoop-3.1.2/share/hadoop/mapreduce/lib/*:/opt/hadoop-3.1.2/share/hadoop/mapreduce/*:/opt/hadoop-3.1.2/share/hadoop/yarn:/opt/hadoop-3.1.2/share/hadoop/yarn/lib/*:/opt/hadoop-3.1.2/share/hadoop/yarn/*:/opt/hadoop-3.1.2/etc/hadoop:/opt/hbase-2.2.6/conf:/opt/hive-3.1.2/lib/*' -Djava.library.path=:/opt/hadoop-3.1.2/lib/native org.apache.flume.node.Application --name a1 --conf/opt/flume-1.9.0/conf --conf-file/opt/flume-1.9.0/conf/dhfsspool.conf-Dflume.root.logger=DEBUG,consol SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/flume-1.9.0/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/hadoop-3.1.2/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/hive-3.1.2/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 2023-06-08 17:26:46,403 ERROR node.Application: A fatal error occurred while running. Exception follows. org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option: --conf/opt/flume-1.9.0/conf at org.apache.commons.cli.Parser.processOption(Parser.java:363) at org.apache.commons.cli.Parser.parse(Parser.java:199) at org.apache.commons.cli.Parser.parse(Parser.java:85) at org.apache.flume.node.Application.main(Application.java:287)

305 浏览量