程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python算法實踐Week3-循環程序設計

編輯:Python

0x00 問題引入

  • 問題:輸入30個數,輸出最大的數
  • 分析
    • 第一個數可能是最大的數,記住它;
    • 對於之後的每一個數,與記住的數字進行比較,如果比記住的數字大,則記住此數;
    • 所有的數字看過之後,輸出最大的數;
  • 循環
    • 程序中重復做某事的現象稱為循環
      • 例如求1~100的和,求一個班某科成績的平均分
  • 循環結構(循環條件和循環體)

0x01 while循環

  • 問題:求1+2+3+4+……+100的值
    • 流程圖
  • Python語言實現
  1. = 0
  2. = 1
  3. i < 101: sum += i i += 1 print(sum)
  • 問題:求1~n的和,n為任意正整數
  1. = int(input('請輸入正整數n:'))
  2. = 0
  3. = 1
  4. i < n+1: sum += i i += 1 print(sum)

0x02 for循環

  • 遍歷循環
    • 針對某一數據集合
    • 循環依次訪問集合中每一個元素
    • 是一種確定次數的循環
  • for循環語句語法
  • range()函數
range(start,end,step)
range()函數創建序列,包括下限,不包括上限
例如
range(101),范圍0~100
range(1,101),訪問1~100
  • 問題:求1~100之間的自然數之和
sum = 0
for i in range(1,101):
sum += i
print(sum)
  • 問題:求1~n之間的自然數之和,n為任意正整數
sum = 0
for i in range(1,101):
sum += i
print(sum)

0x03 循環嵌套

  • 循環的嵌套
    • 是指在一個循環中嵌套另外一個完整的循環,即循環體中又包含循環語句
    • while循環和for循環可以相互嵌套
    • 循環嵌套的執行過程 一次外循環對應著一次完整的內循環
  • 問題:打印99乘法表
# 打印99乘法表
for i in range(1, 10): # 控制行
for j in range(1, i + 1): # 控制列
print('{}*{}={}'.format(j, i, i * j), sep='', end='\t')
print()

0x04 break和continue

  • break用來結束循環
    • 程序從循環後代碼繼續執行
  • continue用來結束當前當次循環
    • 不再執行循環體中下面尚未定義的語句
    • 但不結束當前循環
  • 問題:求200以內能被17整除的最大正整數
    • 分析:這個查找過程將以遞減的形式遍歷200~1之間的整數,當找到第一個能被17整除的數時,循環過程立即停止
# 求200以內能被17整除的最大正整數
for i in range(200, 1, -1):
if i % 17 == 0:
break
print('200以內能被17整除的最大正整數是{}'.format(i))
  • 問題:求1~100以內所有偶數和
# 求1~100以內所有偶數和
sum = 0
for i in range(1, 101):
if i % 2 == 0:
sum += i
else:
continue
print(sum)
  • 問題:輸出200以內所有的素數,並輸出素數的個數
    • 分析:素數是除了1和它本身不能被其他數整除的數字,本題采用雙重for循環實現,外層遍歷2~200之間所有的整數,內層循環用來判斷一個數是否為素數
# 方法1
num = 0
for i in range(2, 200):
k = True
for j in range(2, i):
if(i % j == 0):
k = False
break
if(k==True):
print(i)
num += 1
print('200以內的素數有{}個'.format(num))
# 方法2
import math
num = 0
for i in range(2, 200):
m = int(math.sqrt(i))
k = True
for j in range(2, m + 1):
if(i % j == 0):
k = False
break
if(k):
print(i)
num += 1
print('200以內的素數有{}個'.format(num))
  • continue語句和break語句的區別
    • continue只結束本次循環,而不終止整個循環的執行
    • break語句則是結束整個循環過程,不再判斷循環的條件是否成立

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved