Python基礎 — 分支和循環


1. 分支結構

1.1 初步介紹

至今,我們所寫的Python代碼都是順序執行,但是有時候在代碼中是需要進行邏輯判斷的,比如用戶 輸入用戶名和密碼,輸入正確則驗證通過,否則即驗證失敗。這個時候就會產生兩個分支,而且兩個分支只會有一條分支會走下去。當然,還有很多類似的場景,我們將這種結果稱為 "分支結構" 或 “選擇結構”。

語法格式:

    if xxx1:
        事情1
    elif xxx2:
        事情2
    elif xxx3:
        事情3
    else:
        事情4

  

1.2 使用案例

1、用戶身份驗證

# -*- coding:utf-8 -*-
"""
用戶身份驗證
version: 0.1
author: coke
"""
username = input("請輸入用戶名:")
password = input("請輸入密碼:")
if username == 'admin' and password == '123456':
    print("身份驗證成功")
else:
    print("身份驗證失敗")

輸出結果

 

2、分段函數求值

"""
分段函數求值
       3x - 5 (x > 1)
f(x) = x + 2 (-1 < x < 1)
       5x + 3 (x <= -1)
version: 0.1
Author: coke
"""
x = float(input("請輸入一個數字:"))
if x > 1:
    y = 3 * x - 5
elif x > -1 and x < 1:
    y = x + 2
else:
    y = 5 * x +3
print("f(%.2f)=%.2f"%(x,y))

輸出結果

 

1.3 練習

1、猜拳游戲

# -*- coding:utf-8 -*-
"""
猜拳游戲
version: 0.1
author: coke
"""
import random
num = int(input("剪刀(0) 石頭(1) 布(2):"))
computer = random.randint(0,2)
print("電腦出拳:%d"%computer)

if (num == 0 and computer == 2) or (num == 1 and computer == 0) or (num == 2 and computer == 1):
    print("哈哈,你贏了")
elif  num == computer:
    print("平局,要不要再來一局")
else:
    print("洗洗手,決戰都天亮")

 

2、成績等級轉換

"""
百分制成績轉等級制成績
90分以上    --> A
80分~89分    --> B
70分~79分	   --> C
60分~69分    --> D
60分以下    --> E

Version: 0.1
Author: coke
"""

score = float(input('請輸入成績: '))
if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 70:
    grade = 'C'
elif score >= 60:
    grade = 'D'
else:
    grade = 'E'
print('對應的等級是:', grade)

 

2.循環結構

1.1 初步介紹

如果在程序中我們將執行一系列的重復指令,比如我想計算1 - 100的和 或者 我想輸出99次 helloWorld,難道要一個個去寫么,如果真是這樣,那么編程的工作就太不合理了,所以,我們還需要了解一下循環結構,如果我們學會了循環結構,就可以重復的執行某些操作指令。

在Python中構造循環結構有兩種做法,一種是for-in循環,一種是while循環。

for - in 循環

如果我們可以知道循環的次數或者是對容器的迭代(容器后面會涉及),我們會推薦for-in循環

for 臨時變量 in 列表或者字符串等:
        循環滿足條件時執行的代碼

 

while 循環

如果要構造不知道具體循環次數的循環結構,我們推薦使用while循環。while循環通過一個能夠產生或轉換出bool值的表達式來控制循環,表達式的值為True循環繼續,表達式的值為False循環結束。

while 條件:
        條件滿足時,做的事情1
        條件滿足時,做的事情2
        條件滿足時,做的事情3
        ...(省略)...

 

break:結束當前循環

continue:用來結束本次循環,緊接着執行下一次的循環

注: break/continue只能用在循環中,除此以外不能單獨使用

 

1.2 使用案例

1、用for循環 計算1-100 之間偶數的和

"""
用 for循環實現1-100之間的求和
version: 1.0
Author: coke
"""
#-*- coding=utf-8 -*-
sum = 0
for x in range(1,101):
    if x % 2 == 0:
        sum += x
print(sum)

輸出結果

需要說明的是上面代碼中的range類型,range可以用來產生一個不變的數值序列,而且這個序列通常都是用在循環中的,例如:

  • range(101)可以產生一個0到100的整數序列。
  • range(1, 100)可以產生一個1到99的整數序列。
  • range(1, 100, 2)可以產生一個1到99的奇數序列,其中的2是步長,即數值序列的增量

 

2、不用判斷 計算 1-100 之間偶數的和

"""
用 for循環實現1-100之間的求和
version: 1.0
Author: coke
"""
#-*- coding=utf-8 -*-
sum = 0
for x in range(2,101,2):
    sum += x
print(sum)

 

3、猜數字游戲

"""
猜數字游戲
計算機出一個 1~100之間的隨機數由人猜
計算機分別根據人猜的數字分別給出提示大一點/小一點/猜對了
version: 0.1
admin: coke
"""
import random
answer = random.randint(1,100)
counter = 0
while True:
    counter += 1
    result = int(input("請輸入一個數字:"))
    if answer > result:
        print("大一點")
    elif answer < result:
        print("小一點")
    else:
        print("猜對了")
        break
if counter > 7:
    print("智商余額不足")

 

4、continue和break 的使用

"""
continue的使用
version: 0.1
author: coke
"""
name = "cokehaha"
for x in name:
    print("----")
    if x == "k":
        continue
    if x == "a":
        break
    print(x)

 

1.3 練習

1、輸入兩個正整數,計算最大公約數和最小公倍數

"""
輸入兩個正整數計算最大公約數和最小公倍數
version: 0.1
author: coke
"""

x = int(input('x = '))
y = int(input('y = '))
if x > y:
    x, y = y, x
for factor in range(x, 0, -1):
    if x % factor == 0 and y % factor == 0:
        print('%d和%d的最大公約數是%d' % (x, y, factor))
        print('%d和%d的最小公倍數是%d' % (x, y, x * y // factor))
        break

 

2、打印三角形圖案

"""
打印各種三角形圖案

*
**
***
****
*****

    *
   **
  ***
 ****
*****

    *
   ***
  *****
 *******
*********

version: 0.1
author: coke
"""

row = int(input('請輸入行數: '))
for i in range(row):
    for _ in range(i + 1):
        print('*', end='')
    print()


for i in range(row):
    for j in range(row):
        if j < row - i - 1:
            print(' ', end='')
        else:
            print('*', end='')
    print()

for i in range(row):
    for _ in range(row - i - 1):
        print(' ', end='')
    for _ in range(2 * i + 1):
        print('*', end='')
    print()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM