首頁  >  文章  >  後端開發  >  python基礎循環的學習記錄

python基礎循環的學習記錄

高洛峰
高洛峰原創
2017-03-21 09:46:271694瀏覽

一、while循環

如果條件成立(true),重複執行相同操作,條件不符合,跳出循環

  while   循環條件:

     循環操作

(1)while循環範例

#範例:輸入王曉明5門課程的考試成績,計算平均成績

i=1                                            # 初始化循环计数器i
sum=0                                          # 初始化总成绩变量
while i<=5:                                    # 从i为1开始到5,重复执行一共5次接受考试成绩、求和的操作
        print (&#39;请输入第%d门课程的考试成绩&#39;%i)    # 提示用户输入成绩,其中用到了格式化输出,%d的取值随i的值显示,第1门课程,第2门课程……
        sum=sum+input()                        # 把用户输入的成绩赋值给sum,最后保存着5次成绩的和
        i=i+1                                  # 每次循环 i 都自增1,直到大于5跳出循环
avg=sum/(i-1)                                  # 当第五次执行完i=i+1时,i为6,跳出循环,计算出sum/(i-1)的值就是平均值,并赋值给avg
print (&#39;王晓明5门课程的平均成绩是%d&#39;%avg)          # 格式化输出avg的值,由于用了%d所以计算出的%avg的数值有小数也会省去,接收整数部分

#(2)嵌套while循環範例

外部循環滿足條件後,執行程式碼開始執行內部循環,等內部循環全部執行完畢,如果還滿足外部循環條件,則外部循環再次執行,依次類推,直到跳出外層循環。

範例:分別輸入兩位學生的5門成績,分別計算平均成績

j=1                                         # 定义外部循环计数器初始值
prompt=&#39;请输入学生姓名&#39;                       # 定义字符串变量,在用户输入时调用此变量可以减少敲汉字的麻烦
while j<=2:                                 # 定义外部循环为执行两次
    sum=0                                   # 定义成绩初始值,之所以定义在这里,是为了当第二个学生输入成绩时可以让sum初始化为0,重新接收新学生的成绩和
    i=1                                     # 定义内部循环计数器初始值
    name = raw_input(prompt)               # 接收用户输入的学生姓名,赋值给name变量
    while i<=5:                             # 定义内部函数循环5次,就是接收5门课程的成绩
        print (&#39;请输入第%d门的考试成绩: &#39;%i)   #提示用户输入成绩,其中用到了格式化输出,%d的取值随i的值显示,第1门课程,第2门课程……
        sum= sum + input()                  # 接收用户输入的成绩,赋值给sum
        i+=1                                # i变量自增1,i变为2,继续执行循环,直到i等于6时,跳出循环
    avg=sum/(i-1)                           # 计算第一个学生的平均成绩 sum/(6-1),赋值给avg
    print name,&#39;的平均成绩是%d\n&#39;%avg         # 输出学生成绩平均值
    j=j+1                                   # 内部循环执行完毕后,外部循环计数器j自增1,变为2,再进行外部循环
print &#39;学生成绩输入完成!&#39;                     # 外部循环结束,提示输入完成!

 二、for迴圈

(1)使用for語句可以遍歷全部元素,例如逐個輸出字串中的字符,逐個輸出列表中的元素,元組中的元素,集合中的元素(注意賦值時各元素的順序),字典中的鍵…

for letter in &#39;Python&#39;:
  print letter结果:P
y
t
h
o
n
fruits=[&#39;西瓜&#39;,&#39;水蜜桃&#39;,&#39;葡萄&#39;]
for fruit in fruits:
    print fruit

结果:
西瓜
水蜜桃
葡萄

(2)重複執行相同操作

使用range()函數建立一個數字列表

取值範圍:從起始數字開始到結束數字之前

for i in range(0,5):  #依次把0到4保存在变量i中
    print &#39;Mr.Mangood最酷!&#39;

结果:
Mr.Mangood最酷!
Mr.Mangood最酷!
Mr.Mangood最酷!
Mr.Mangood最酷!
Mr.Mangood最酷!

輸入王曉明的三門考試成績,並算出平均值

subjects=(&#39;linux系统&#39;,&#39;Mysql数据库&#39;,&#39;Python语言&#39;)  # 定义一个元组,三个元素代表三门课程
sum=0                                            # 定义变量num为初始化成绩分数
for i in subjects:                               # 把元组里的每一个元素依次赋值给i,一共有三次
    print &#39;请输入%s的考试成绩&#39;%i                   # 提示输入成绩,运用了格式化字符串功能,用i每次取得的元素名表达出成绩名字,%s的意思是字符串
    score = input()                              # 接收用户输入的成绩赋值给score
    sum += score                                 # 把成绩赋给sum,相当于sum = sum + score
avg= sum / len(subjects)                         # 跳出for循环后,计算平均值,这里用函数len()来计算变量subjects的长度,因为subjects定义为一个元组,因此长度即为元素个数3
print &#39;王晓明的平均成绩为%d&#39;%avg                    # 输出平均成绩

结果:
请输入linux系统的考试成绩
87
请输入Mysql数据库的考试成绩
78
请输入Python语言的考试成绩
90
王晓明的平均成绩为85

(3)嵌套for循環

輸入黃曉鳴、楊影2位同學,每人三門課程的考試成績,計算平均成績

student = (23&#39;黄晓鸣&#39;,&#39;杨影&#39;)                      #定义学生姓名的元组
subjects=(&#39;linux系统&#39;,&#39;Mysql数据库&#39;,&#39;Python语言&#39;)  #定义课程名字的元组
for j in student:                                #把j依次取两名学生的值进行两次循环
    sum=0                                        #初始化成绩的值
    print &#39;%s同学的考试成绩&#39;%j                     #打印出标题
    for i in subjects:                           #定义课程循环
        print &#39;请输入%s的考试成绩&#39;%i               #提示输入其中一名学生的考试成绩
        score = input()                          #接收考试成绩赋值给score
        if score<0 or score>100:                 #判断分数取值范围,做提醒
            print &#39;注意成绩大小&#39;    
        sum+=score                               #每次输入成绩后,sum值都累加
    avg= sum/len(subjects)                       #求出平均成绩
    print j,&#39;的平均成绩是%d\n&#39;%avg                 #打印平均成绩
print&#39;完成学生成绩录入工作&#39;                         #提示完成工作

 

三、循環控制

循環控制語句可以改變循環正常的執行順序

循環控制語句

break語句:跳出本次循環(巢狀循環中只跳出一層迴圈)

continue語句:跳過目前一輪循環體的剩餘語句,重新測試循環狀態,進入下一輪循環,例如循環的次數一共有5次,第四次遇到continue了,那麼不繼續執行了,直接進行第5次循環判斷

四、循環控制綜合案例

1、需求分析

顯示選單

(N)ew User Login

#(E)ntering User Login

(Q)uit

Enter choice:

#註:輸入字母N,接收新的登入名稱和密碼,儲存在字典中

  輸入字母E,接收登入名稱、密碼、尋找、符合使用者輸入是否正確

  輸入字母Q,退出

2、執行步驟

#  (1)編制選單

  (2)使用while語句實現菜單一項目選擇-外層循環

  (3)使用while語句接收新的登入名稱-內層循環

  (4)使用if語句判斷選單,執行相關操作

3、程式碼架構

python基礎循環的學習記錄

4、具體程式碼

db={}           
prompt=&#39;&#39;&#39;         
    (N)ew user login
    (E)ntering user login
    (Q)uit
Enter choice:&#39;&#39;&#39;
while True:         
    choice = raw_input(prompt).strip()[0].lower()       #读取控制台输入的字符串,去除其首尾多余的空格后,将第一个字符串转换为小写字母
    print &#39;\n--You picked:[%s]&#39;%choice      
    if choice not in &#39;neq&#39;:
        print &#39;--invaild option:,try again--&#39;
    else:
        if choice == &#39;n&#39;:
            prompt1 = &#39;--login desired:&#39;
            while True:
                name = raw_input(prompt1)
                if db.has_key(name):            #判断字典里的键值是否已经有输入的name值,如果有的话触发continue重新执行while循环,因为触发continue前prompt1被重新定义了,所以执行了新的name = raw_input(prompt1)
                    prompt1 = &#39;--name taken,try another: &#39;
                    continue
                else:
                    break
            pwd = raw_input(&#39;password:&#39;)    #验证字典中的键没有输入的name值后,跳出循环,把用户输入的密码赋值给pwd
            db[name] = pwd      #把值传给字典db中的name键实现字典数据的完善
        elif choice == &#39;e&#39;:
            name = raw_input("login:")
            pwd = raw_input(&#39;password:&#39;)
            password = db.get(name)     #登录时,接收用户输入的登录名和密码后,把字典db中name键的值赋给password
            if password == pwd:     #比较字典中的密码password和用户输入的密码pwd是否一致
                print &#39;welcome&#39;,name
            else:
                print &#39;shibai&#39;
        else:
            print &#39;quit!&#39;
            break


以上是python基礎循環的學習記錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn