while 循环语句 Python 中有 while
和 for
两种循环结构,利用循环语句,可以让一个代码块一遍又一遍的执行。
对于while
循环,只要while
语句的条件为True
,while
子句中的代码就会执行 。Python当中,while
实现循环的方法如下:
1 2 while condition: statements
while
语句看起来和if
语句类似。不同之处是它们的行为。if
子句结束时,程序继续执行if
语句之后的语句。但在while
子句结束时,程序执行跳回到while
语句开始处。while
子句常被称为“while 循环”,或就是“循环”。
代码实例:
1 2 3 count = 0 while count < 10 : print (f'{count} 的平方为{count ** 2 } ' )
for 循环语句 通常,for
循环用于遍历序列(字符 串、列表和元组等)或任何可迭代对象内的元素,是一个通用的迭代器。for
循环的一般形式是:
1 2 for item in iterable_obj: statements
如:
1 2 3 4 5 num_list = [5 , 4 , 6 , 8 , 34 , 17 ] sum_value = 0 for num in num_list: sum_value += numprint (f'数字总和为{sum_value} ' )
在Python中,变量可以通过多重赋值的方式进行赋值,这种方式同样可以用在for
循环的遍历中:
1 2 3 4 5 6 num_list = [[5 , 4 ], [6 , 8 ], [34 , 17 ]] value = 0 for num1, num2 in num_list: value += num1 value -= num2print (value)
使用range函数遍历 有一种遍历方式是利用序号(偏移量),此时需要将包含列表序号的可迭代对象放在for
循环首行的in
关键字后面,通常利用range
函数来实现。
range
函数会得到一个按需产生整数元素的可迭代对象,其语法结构有两种形式:
1 2 range (stop)range (start, stop, [step])
代码实例:
1 2 for num in range (0 ,10 ): print (f'{num} 的平方为{num ** 2 } ' )
break, continue和else语句 break语句 break
用来跳出最内层for
或while
循环,脱离该循环后程序从循环后代码继续续执行。
1 2 3 4 5 6 7 s = 'Python' for c in s: if c == 'o' : print (f'在{s} 中找到o了。' ) break else : print (f'{s} 中没有字母o了。' )
每个break
语句只有能力跳出当前层次循环。
1 2 3 4 5 6 s = 'Python' for c in s: for i in range (10 ): print (c, end='' ) if c == 'o' : break
continue 语句 像break
语句一样,continue
语句用于循环内部。如果程序执行遇到continue
语句,就会马上跳回到循环开始处,重新对循环条件求值 (这也是执行到达循环末尾时发生的事情)。
试试下面的用户验证:
1 2 3 4 5 6 7 8 9 10 11 while True : print ('请输入用户名:' ) name = input () if name != '小嗷犬' : print ('用户不存在' ) continue print ('你好, 小嗷犬!' ) password = input ('请输入密码:' ) if password == '123456' : break print ('登录成功' )
else 语句 在有些场景中,需要根据循环结束的原因(正常结束还是因为执行break
而结束)来作出不同的操作。在其它程序设计语言中,通常使用一个标记变量来实现。在Python的循环,加入了else
子句,使得程序编写更加方便:
1 2 3 4 5 6 7 8 9 result = [] for i in range (2 ,51 ): for j in range (2 , i): if i % j == 0 : break else : result.append(i) print (result)
循环的应用 使用 range 函数遍历 range
函数会得到一个按需产生整数元素的可迭代对象,其语法结构有两种形式:
1 2 range (stop)range (start, stop, [step])
代码实例:
1 2 for num in range (0 ,10 ): print (f'{num} 的平方为{num ** 2 } ' )
列表推导式 推导式是从可迭代对象中快速简洁地创建数据类型的一种方法。它使得你用优美简短的代码就能实现循环甚至条件判断。
利用推导式可以得到列表、字典、集合以及生成器。列表推导式会产生一个新的列表,其语法形式如下所示:
1 [expr for item in iterable_obj]
用户输入或者从文件读取的数据通常都是字符串类型, 如果需要进行数学运算,需要将字符串转换为数字类型后再运算。编写程序,将输入的销售数量进行累加。
代码实例:
1 2 3 4 amt_str = input ('请输入销售数量(用逗号隔开):' ) amt_str_list = amt_str.split(',' ) amt_int_list = [int (amt) for amt in amt_str_list] print ('总销售数量为:{}件' .format (sum (amt_int_list)))
列表推导式也可以加上 if
关键字, 对原可迭代对象中的元素进行判断, 符合条件的元素在使用 expr 表达式运算后加入新列表中:
1 [expr for item in iterable_obj if condition]
在代码实例中,为了防止输入的销售数量是负数,可以对代码进行以下改造:
1 2 3 4 amt_str = input ('请输入销售数量(用逗号隔开):' ) amt_str_list = amt_str.split(',' ) amt_int_list = [int (amt) for amt in amt_str_list if '-' not in amt] print ('总销售数量为:{}件 ' .format (sum (amt_int_list)))
并列遍历:zip 函数 Python 中提供了一个非常有用的函数:zip
函数。 这个函数可以将这些序列并排的元素配对成元组后,组成一个新的可迭代对象。其语法格式如下:
代码实例:
1 2 3 4 5 stock_code = ('600000' , '600036' , '600048' , '000001' ) stock_name = ('浦发银行' , '招商银行' , '保利地产' , '平安银行' ) close_price = [11.54 , 36.84 , 16.61 , 14.49 ] for item in zip (stock_code, stock_name, close_price): print ('{1} 的代码是:{0},收盘价:{2:.2f} 元' .format (item[0 ], item[1 ], item[2 ]))
简单循环的替身:map 函数 在 Python 中,可以利用 map
函数简化这类代码。其语法格式如下:
map
函数有两个参数,func
是一个函数, 也就是对序列中元素进行的操作。
代码实例:
1 2 3 4 amt_str = input (' 请输入销售数量 ( 用逗号隔开 ):' ) amt_str_list = amt_str.split(',' ) amt_int_map_obj = map (int , amt_str_list) print (' 总销售数量为:{} 件 ' .format (sum (amt_int_map_obj)))
序号和元素都需要时应用 enumerate 函数 在 Python 中,通过 enumerate
函数可以将代码写得更加简洁。
enumerate
函数的语法格式如下:
1 enumerate (iterable, start=0 )
代码实例:
1 2 3 goods_list = [['华为笔记本' , 1000 ], ['联想笔记本' , 800 ], ['苹果笔记本' , 600 ]] for idx, goods in enumerate (goods_list): print ('第{}名{}销量:{}台' .format (idx + 1 , goods[0 ], goods[1 ]))