你的位置:【欧冠体育正规平台】 > 产品系列 > 六个实例,八段代码,详解Python中的for循环
六个实例,八段代码,详解Python中的for循环
发布日期:2022-08-07 18:17    点击次数:157

 

Python 支持for循环,它的语法与别的言语(如JavaScript 或Java)稍有差别。下面的代码块演示怎么样在Python 中运用for循环来离去遍历列表中的元素:

上述的代码段是将三个字母分行打印的。你可以或许经由过程在print语句的后面增加逗号“,”将输出限定在同一行体现(假定指定打印的字符良多,则会“换行”),代码以下所示:

当你停留经由过程一行而不是多行体现文本中的内容时,可运用上述模式的代码。Python 还供应了内置函数reversed(),它可以或许反转循环的倾向,譬如:

留心,只要当工具的大小是肯定的,或许工具完成为了_reversed_()编制的岁月反向遍历的功用才有效。

01 运用tryexcept的for循环

清单1 的StringToNums.py分化了怎么样对一组从字符串转换而来的整数求和。

 清单1 StringToNums.py 
line = '1 2 3 4 10e abc'  sum  = 0  invalidStr = ""  print('String of numbers:',line)  for str in line.split(" "):    try:     sumsum = sum + eval(str)    except:      invalidStrinvalidStr = invalidStr + str + ' '  print('sum:', sum)  if(invalidStr != ""):    print('Invalid strings:',invalidStr) else:    print('All substrings are valid numbers') 

清单1 首先初始化变量line、sum和invalidStr,尔后体现line的内容。接上去将line中的内容支解为单词,尔后经由过程try代码块一一将单词的数值累加到变量sum 中。假定发生很是,则将今后str的内容追加到变量invalidStr。

当循环执行截至,清单1 打印出数值单词的和,并在后面体现非数值单词。它的输出以下所示:

02 指数运算

清单2 的Nth_exponet.py分化了怎么样计算一组整数的幂。

 清单2 Nth_exponet.py 
maxPower = 4  maxCount = 4  def pwr(num):    prod = 1    for n in range(1,maxPower+1):      prodprod = prod*num      print(num,'to the power',n, 'equals',prod)    print('-----------')  for num in range(1,maxCount+1):      pwr(num) 

清单2 中有一个pwr()函数,其参数为一个数值。此函数中的循环可打印出参数的1 到n次方,n的取值领域在1到maxCount+1之间。

代码的第二部份经由过程一个for循环调用pwr()函数从1到maxCount+1的值。它的输出以下所示:

03 嵌套的循环

清单3 的Triangular1.py分化了怎么样打印一行间断整数(从1起头),个中每一行的长度都比前一行大1。

  清单3 Triangular1.py 
max = 8  for x in range(1,max+1):    for y in range(1,x+1):      print(y,'', end='')    print()  

清单3 首先初始化max变量为8,今后经由过程变量x从1到max+1执行循环。内层循环有一个值为从1到x+1的循环变量y,产品系列并打印y的值。它的输出以下所示:

04 在for循环中运用split()函数

Python 支持种种便捷的字符串操作相干函数,蕴含split()函数和join()函数。在需求将一行文本分词化(即“支解”)为单词,尔后运用for循环遍历这些单词时,split()函数极度有效。

join()函数与split()函数相反,它将两个或多个单词“跟尾”为一行。经由过程运用split()函数,你可以或许轻松地删除句子中多余的空格,尔后调用join()函数,使文本行中每个单词之间只要一个空格。

1. 运用split()函数做单词相比

清单4 的Compare2.py分化了怎么样经由过程split()函数将文本字符串中的每个单词与另外一个单词举行相比。

 清单4 Compare2.py 
x = 'This is a string that contains abc and Abc'  y = 'abc'  identical = 0  casematch = 0  for w in x.split():    if(w == y):      identicalidentical = identical + 1    elif (w.lower() == y.lower()):      casematchcasematch = casematch + 1  if(identical > 0):   print('found identical matches:', identical)  if(casematch > 0):   print('found case matches:', casematch)  if(casematch == 0 and identical == 0):   print('no matches found') 

清单4 经由过程split()函数对字符串x中的每个单词与单词abc举行相比。假定单词切确成家,就将identical变量加1 ;否则就查验测验不判别大小写举行相比,若成家就将casematch变量加1。

清单4 的输出以下所示:

2. 运用split()函数打印指定项目标文本

清单5 的FixedColumnCount1.py 分化了怎么样打印一组设定安稳宽度的字符串。

 清单5 FixedColumnCount1.py 
import string  wordCount = 0  str1 = 'this is a string with a set of words in it'  print('Left-justified strings:')  print('-----------------------')  for w in str1.split():     print('%-10s' % w)     wordCountwordCount = wordCount + 1     if(wordCount % 2 == 0):        print("")  print("\n")  print('Right-justified strings:')   print('------------------------')   wordCount = 0  for w in str1.split():     print('s' % w)     wordCountwordCount = wordCount + 1     if(wordCount % 2 == 0):        print() 

清单5 首先初始化变量wordCount和str1,尔后执行两个for循环。第一个for 循环对str1的每个单词举行左对齐打印,第二个for循环对str1的每个单词举行右对齐打印。在每个循环中当wordCount是偶数的岁月就输出一次换行,这样每打印两个间断的单词今后就换行。清单5 的输出以下所示:

3. 运用split()函数打印安稳宽度的文本

清单6 的FixedColumnWidth1.py分化了怎么样打印安稳宽度的文本。

 清单6 FixedColumnWidth1.py 
import string  left = 0  right = 0  columnWidth = 8  str1 = 'this is a string with a set of words in it and it will be split into a fixed column width'  strLen = len(str1)  print('Left-justified column:')   print('----------------------')   rowCount = int(strLen/columnWidth)  for i in range(0,rowCount):     left  = i*columnWidth     right = (i+1)*columnWidth-1     word  = str1[left:right]     print("%-10s" % word)  # check for a 'partial row'  if(rowCount*columnWidth < strLen):     left  = rowCount*columnWidth-1;     right = strLen     word  = str1[left:right]     print("%-10s" % word) 

清单6 初始化整型变量columnWidth和字符串范例变量str1。变量strLen是str1的长度,变量rowCount是strLen除以columnWidth的值。今后经由过程循环打印rowCount行,每行包孕columnWidth个字符。代码的最后部份输出全体“残剩”的字符。清单6 的输出以下所示:

4. 运用split()函数相比文本字符串

清单7 的CompareStrings1.py分化了怎么样鉴定一个文本字符串中的单词是否出当初另外一个文本字符串中。

清单7 CompareStrings1.py 
text1 = 'a b c d'  text2 = 'a b c e d'  if(text2.find(text1) >= 0):    print('text1 is a substring of text2') else:    print('text1 is not a substring of text2')  subStr = True for w in text1.split():    if(text2.find(w) == -1):      subStr = False      break  if(subStr == True):    print('Every word in text1 is a word in text2')  else:    print('Not every word in text1 is a word in text2') 

清单7 首先初始化两个字符串变量text1和text2,尔后经由过程条件逻辑鉴定字符串text2是否包孕了text1(并输出响应打印信息)。

清单7 的后半部份经由过程一个循环遍历字符串text1中的每个单词,并鉴定其是否出当初text2中。假定缔造有成家失利的环境,就配置变量subStr为False,并经由过程break语句跳出循环,提早截至for循环的执行。最后痛处变量subStr的值打印对应的信息。清单7 的输出以下所示:

05 用底子的for循环体现字符串中的字符

清单8 的StringChars1.py分化了怎么样打印一个文本字符串中的字符。

 清单8 StringChars1.py 
text = 'abcdef'  for ch in text:     print('char:',ch,'ord value:',ord(ch)) print 

清单8 的代码简高洁接地经由过程一个for循环遍历字符串text并打印它的每个字符以及字符的ord值(ASCII 码)。清单8 的输出以下所示:

06 join()函数

另外一个去掉多余空格的编制是运用join()函数,代码示譬以下所示:

split()函数将一个文本字符串“支解”为一系列的单词,同时去掉多余的空格。接上去join()函数运用一个空格作为分开符将字符串text1中的单词跟尾在一起。上述代码的最后部份运用字符串XYZ替代空格作为分开符,执行沟通的跟尾操作。上述代码的输出以下:

对付作者:奥斯瓦尔德·坎佩萨托(Oswald Campesato),专门研究深度深造、Java、Android和TensorFlow。他是25本书的作者/合著者。

 

本文摘编自《古板深造入门:Python言语完成》,经出版方授权宣布。(ISBN:9787111695240)