>백엔드 개발 >파이썬 튜토리얼 >예제 6개, 코드 조각 8개, Python의 For 루프에 대한 자세한 설명

예제 6개, 코드 조각 8개, Python의 For 루프에 대한 자세한 설명

PHPz
PHPz앞으로
2023-04-11 19:43:172586검색

Python은 for 루프를 지원하며 그 구문은 다른 언어(예: JavaScript 또는 Java)와 약간 다릅니다. 다음 코드 블록은 Python에서 for 루프를 사용하여 목록의 요소를 반복하는 방법을 보여줍니다.

위 코드 조각은 세 글자를 별도의 줄에 인쇄합니다. 인쇄 문 뒤에 쉼표 ","를 추가하여 출력을 동일한 줄로 제한할 수 있습니다(인쇄하도록 지정된 문자가 많으면 "줄 바꿈"됩니다). 코드는 다음과 같습니다.

원할 때 텍스트의 내용을 여러 줄이 아닌 한 줄로 표시할 때 위의 코드 형식을 사용할 수 있습니다. Python은 또한 루프의 방향을 바꿀 수 있는 내장 함수 reversed()를 제공합니다. 예를 들어:

이 기능은 개체의 크기가 결정되거나 개체가 구현되는 경우에만 되돌릴 수 있습니다. _reversed_() 메서드는 방향 순회 함수만 유효합니다.

01 목록 1의 tryException

StringToNums.py를 사용하는 for 루프는 문자열에서 변환된 정수 집합을 합산하는 방법을 보여줍니다.

  • Listing 1 StringToNums.py
<ol><pre class="brush:sql;toolbar:false;">line = '1 2 3 4 10e abc' 
sum  = 0 
invalidStr = "" 
print('String of numbers:',line) 
for str in line.split(" "): 
  try: 
    sum = sum + eval(str) 
  except: 
    invalidStr = invalidStr + str + ' ' 
print('sum:', sum) 
if(invalidStr != ""): 
  print('Invalid strings:',invalidStr) 
else: 
  print('All substrings are valid numbers') 

Listing 1은 먼저 변수 line, sum 및 validStr을 초기화한 다음 line의 내용을 표시합니다. 다음으로 해당 줄의 내용을 단어로 나눈 후, try 코드 블록을 통해 단어의 값을 하나씩 변수 sum에 누적한다. 예외가 발생하면 현재 str의 내용이 validStr 변수에 추가됩니다.

루프 실행이 끝나면 목록 1은 숫자 단어의 합계를 인쇄하고 그 뒤에 숫자가 아닌 단어를 표시합니다. 출력은 다음과 같습니다.

02 지수 연산

Nth_exponet.py 목록 2에서는 정수 집합의 거듭제곱을 계산하는 방법을 보여줍니다.

  • Listing 2 Nth_exponet.py
<ol><pre class="brush:sql;toolbar:false;">maxPower = 4 
maxCount = 4 
def pwr(num): 
  prod = 1 
  for n in range(1,maxPower+1): 
    prod = prod*num 
    print(num,'to the power',n, 'equals',prod) 
  print('-----------') 
for num in range(1,maxCount+1): 
    pwr(num) 

Listing 2에는 매개변수가 숫자 값인 pwr() 함수가 있습니다. 이 함수의 루프는 1에서 n까지 거듭제곱된 매개변수를 인쇄할 수 있습니다. n 값의 범위는 1에서 maxCount+1입니다.

코드의 두 번째 부분은 for 루프를 통해 1에서 maxCount+1까지 pwr() 함수를 호출합니다. 출력은 다음과 같습니다.

03 Nested Loops

Triangular1.py의 목록 3은 각 줄이 이전 줄 1보다 긴 연속 정수 줄(1부터 시작)을 인쇄하는 방법을 보여줍니다.

  • Listing 3 Triangular1.py
<ol><pre class="brush:sql;toolbar:false;">max = 8 
for x in range(1,max+1): 
  for y in range(1,x+1): 
    print(y,'', end='') 
  print()  

Listing 3은 먼저 max 변수를 8로 초기화한 다음 변수 x를 통해 1에서 max+1까지 루프를 실행합니다. 내부 루프에는 1부터 x+1까지의 값을 갖는 루프 변수 y가 있고 y의 값을 인쇄합니다. 출력은 다음과 같습니다:

04 for 루프에서 Split() 함수 사용

Python은 Split() 함수 및 Join() 함수를 포함하여 다양하고 편리한 문자열 연산 관련 함수를 지원합니다. Split() 함수는 텍스트 줄을 단어로 토큰화(예: "분할")한 다음 for 루프를 사용하여 단어를 반복해야 할 때 유용합니다.

join() 함수는 Split() 함수와 반대입니다. 두 개 이상의 단어를 한 줄로 "결합"합니다. Split() 함수를 사용한 다음 Join() 함수를 호출하여 텍스트 줄의 각 단어 사이에 공백이 하나만 있도록 하면 문장에서 추가 공백을 쉽게 제거할 수 있습니다.

1. 단어 비교를 위해 분할() 함수 사용

Listing 4의 Compare2.py에서는 분할() 함수를 통해 텍스트 문자열의 각 단어를 다른 단어와 비교하는 방법을 보여줍니다.

  • 목록 4 Compare2.py
<ol><pre class="brush:sql;toolbar:false;">x = 'This is a string that contains abc and Abc' 
y = 'abc' 
identical = 0 
casematch = 0 
for w in x.split(): 
  if(w == y): 
    identical = identical + 1 
  elif (w.lower() == y.lower()): 
    casematch = 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 분할() 함수를 통해 문자열 x의 각 단어를 단어 abc와 비교합니다. 단어가 정확히 일치하면 동일한 변수가 1만큼 증가합니다. 그렇지 않으면 대소문자를 구분하지 않는 비교가 시도되고 일치하는 경우 casematch 변수가 증가합니다.

목록 4의 출력은 다음과 같습니다.

2. 使用split()函数打印指定格式的文本

清单5 的FixedColumnCount1.py 说明了如何打印一组设定固定宽度的字符串。

  • 清单5 FixedColumnCount1.py
<ol><pre class="brush:sql;toolbar:false;">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) 
   wordCount = wordCount + 1 
   if(wordCount % 2 == 0): 
      print("") 
print("n") 
print('Right-justified strings:')  
print('------------------------')  
wordCount = 0 
for w in str1.split(): 
   print('%10s' % w) 
   wordCount = 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
<ol><pre class="brush:sql;toolbar:false;">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
<ol><pre class="brush:sql;toolbar:false;">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
<ol><pre class="brush:sql;toolbar:false;">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替换空格作为分隔符,执行相同的连接操作。上述代码的输出如下:

关于作者:奥斯瓦尔德·坎佩萨托(OswaldCampesato),专门研究深度学习、Java、Android和TensorFlow。他是25本书的作者/合著者。

本文摘编自《机器学习入门:Python语言实现》,经出版方授权发布。(ISBN:9787111695240)

 

위 내용은 예제 6개, 코드 조각 8개, Python의 For 루프에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제