【Python功能體】語句寫法:輸入、輸出、選擇、循環

功能體,是我對編程語言中一些語法格式與特殊語句塊的稱呼。同時,也是我對其的一種分類手段。例如,我認爲“循環語句”和“選擇語句”就是屬於功能體的一種。

輸入格式控制

# 格式化控制輸入
strA = input("input strA:")
strB = input("input strB:")
intA = int(input("input intA:"))  # 強制類型轉化爲int型;因爲對於用戶輸入的總是以字符串來對待的;
                                   # 如果不進行強制類型轉換,則在格式輸出的時候就會報錯;

input明文和密文

# 用戶輸入
	# 方式1
input_str = input("請輸入:\n")
print("你剛剛輸入的是:%s" % input_str)

    # 方式2
import getpass  # 輸入不可見式的密碼

passwd = getpass.getpass("請輸入:\n")
print(passwd)

輸出格式控制

info_a = '''
strA is: %s
strB is: %s
intA is: %d  # 格式控制符,類似於C
''' % (strA, strB, intA)  # 代碼的格式化排版
info_b = '''
strA 是:{_strA}
strB 是:{_strB}
intC 是:{_intA}
'''.format(_strA=strA, _strB=strB, _intA=intA)  # 相當於是把x的值賦給_x;
info_c = '''
strA 是:{0}
strB 是:{1}
intC 是:{2}
'''.format(strA, strB, intA)  # 給參數賦值

print(info)
str = "test"
print("this is a %s" % str)
print("this is a {_str}".format(_str=str))
print("this is a {0}".format(str))

print('hello', end='')  # 不換行輸出

輸出控制中的佔位符

  1. %c:格式化字符及其ASCII碼

  2. %s:格式化字符串

  3. %d:格式化整數

  4. %u:格式化無符號整型

  5. %o:格式化無符號八進制數

  6. %x:格式化無符號十六進制數

  7. %X:格式化無符號十六進制數(大寫)

  8. %f:格式化浮點數字,可指定小數點後的精度

  9. %e:用科學計數法格式化浮點數

  10. %E:作用同%e,用科學計數法格式化浮點數

  11. %g:%f和%e的簡寫

  12. %G:%f 和 %E的簡寫

  13. %p:用十六進制數格式化變量的地址

選擇流程控制

第一種形式:
if expression:
    statements...

第二種形式:
if expression
    statements...
else:
    statements...

第三種形式:
if expression:
    statements...
elif expression:
    statements...
...//可以有零條或多條elif語句
else:
    statement...

PS:Python不支持switch語句,因此判斷結果對應多種執行方式時,只能用elif來做。

注意語法:
1、不要忘記縮進(一個Tab),從而形成代碼塊;一個代碼塊就如同C語言中的一個大括號覆蓋的;
2、不要隨意縮進;同一個代碼塊中的應該保持縮進一致;
3、不要遺忘冒號;
4、if 條件可以是任意類型,但” False、None、0、""、()、[]、{}”, 作爲 bool 表達式時,會被解釋器當作 False 處理;

example code

**功能體:**選擇結構例子示例

'''
功能:身份驗證,驗證字符串是否相等
'''

username = input('Input your user name:')
password = input('Input your password:')
''' 輸入密碼時,終端沒有回顯
 import getpass
 password = getpass.getpass('請輸入口令: ')
'''
if username == 'admin' and password == '123':
    print('身份驗證成功!')
else:
    print('身份驗證成功!')
'''
功能:求分段函數的值
        3x - 5  (x > 1)
f(x) =  x + 2   (-1 <= x <= 1)
        5x + 3  (x < -1)
'''

x = float(input('輸入一個數字:'))  # 經過控制檯輸入的都是str格式,強轉換爲float
if x > 1:
    y = 3 * x -5
elif x >= -1:
    y = x + 2
else:
    y = 5 * x + 3

print('f(%.2f) = %.2f' %(x,y))  # 格式輸出方式,保留float兩位小數,注意格式:%.2f

'''輸出:
輸入一個數字:2
f(2.00) = 1.00
'''
'''
功能:轉換英制單位英寸 和 公制單位釐米
算法:1英寸=2.54釐米
'''

value = float(input('請輸入長度:'))
unit = input('請輸入單位(英寸/in 釐米/cm):')
if unit == 'in' or unit == '英寸':
    print('%f英寸 =  %f釐米' % (value, value * 2.54))
elif unit == '釐米' or unit == 'cm':
    print('%f釐米 = %f英寸' % (value, value / 2.54))
else:
    print('你的輸入不合法!')
'''
功能:擲骰子
核心:random模塊randint函數
'''

from random import randint
a = randint(1, 6)  # 隨機產生[1,6]之間的整數
print('第一次擲得:%d' % a)

b = randint(1, 6)
print('第二次擲得:%d' % b)

c = randint(1, 6)
print('第三次擲得:%d' % c)
'''
功能:百分制成績轉等級制
90分以上    --> A
80分~89分   --> B
70分~79分   --> C
60分~69分   --> D
60分以下    --> E
'''

score = float(input('請輸入分數:'))
if score >= 90:
    grade = 'A'  # 等級
elif score >=80:  # 爲什麼不是score >= 80 and score <90? 因爲上個if已經把<90排除了;
    grade = 'B'
elif score >=70:
    grade = 'C'
elif score >=60:
    grade = 'D'
else:
    grade = 'F'
print('該分數對應的等級是', grade)
'''
功能:判斷三條邊能否構成三角形
算法:任意兩邊之和大於第三邊,任意兩邊只差小於第三邊
'''

import math  # 導入math模塊
a = float(input('a='))
b = float(input('b='))
c = float(input('c='))

if a + b > c and a + c > b and b + c > a:
    print('能構成三角形!')
else:
    print('不能構成三角形!')

循環流程控制

Python中沒有do while循環。

循環:while

# 條件循環
count = 0
while count < 3 :
    print("count is :", count)
    count += 1

# 無線循環,通常要搭配break使其更具有實際意義;
while True:
    print("LOOP FOREVER.")

# while……else……當循環條件爲 False 時,程序會執行 else 代碼塊。
count = 0
while count < 5 :
    print("now count is ", count)
    count += 1
    if count == 4:
        print("此時的count是4,break!則不會執行與while搭配的else代碼!")
        break
else:
    print("正常完成了while循環,並執行了else代碼。")

循環:for

for i in "I_love_python.":  # 語法,冒號;
    print(i)  # 每執行一次,就換行;從這個串裏讀取每個字母;
print("done!")

s = ['kyle', 'shawe', 'haha', 'nihao']
for i in s:  # 從列表中的變量;
    print(i)

break

**循環中的break:**一個break只能結束距離break最近的循環;

for i in range(0, 10) :
    print("i的值是: ", i)
    if i == 2:
        break  # 執行該語句時將結束循環

# 對於帶 else 塊的 for 循環,如果使用 break 強行中止循環,程序將不會執行 else 塊。
for i in range(0, 10) :
    print("i的值是: ", i)
    if i == 2 :
        # 執行該語句時將結束循環
        break
else:
    print('else塊: ', i)

continue

for i in range(0, 3):
    if i == 1:
        continue  # 忽略本次循環的剩下語句
    print ("i=: ", i)
'''output:由於i等於1時被忽略跳過了,故沒有被輸出
i=:  0
i=:  2
'''

PS: 循環與else
無論是 while 循環還是 for 循環,其後都可以緊跟着一個 else 代碼塊。
它的作用是,當循環條件爲 False 跳出循環時,程序會最先執行 else 代碼塊中的代碼。

example code

功能體:while-example code

# range函數說明:
# range(101) 依次產生[0,100]的整數序列;顧頭不顧尾;
# range(1, 100) [1,99]
# range(1, 100, 2)  參數分別是:起始值,尾,步長

'''
功能:猜數字
核心:random模塊下的randint函數
'''
import random
answer = random.randint(1, 100)  # answerd∈[1,100]的隨機數
counter = 0  # 計算猜了多少次
print(answer)

while True:
    counter += 1
    number = int(input('輸入一個整數:'))
    if number < answer:
        print('小了')
    elif number > answer:
        print('大了')
    else:
        print('恭喜,猜對了!')
        break  # 終結本個while循環
print('總共猜了%d次。' % counter)

功能體for-example code

# range函數說明:
# range(101) 依次產生[0,100]的整數序列;顧頭不顧尾;
# range(1, 100) [1,99]
# range(1, 100, 2)  參數分別是:起始值,尾,步長

'''功能:求1-100之間的偶數求和
核心:for-in;range
'''
sum = 0
for x in range(2, 101, 2):
    sum += x
print('1-100之間的偶數求和爲:', sum)

'''低效的代碼
sum = 0
for x in  range(1,101):
   if x % 2 == 0:
      sum += x
print(sum)
'''
'''
功能:輸出九九乘法表
核心:for-in; range()
'''

for i in range(1, 10):
    for j in range(1, i+1):
        print('%dx%d=%d' % (i, j, i*j), end='\t')
    print()
'''
功能:判斷素數
算法:一個數的因數有且僅有1和它本身
 1) n都不能被[3,n)內的奇數整除;爲什麼是3開始?因爲一個數如果是質數,其必定是奇數;
 2) n都不能被[3,n/2]內的奇數整除;
 3) n都不能被[3,sqrt(n)]內的奇數整除;
'''
from math import sqrt

num = int(input('輸入一個整數:'))
if num <= 0:
    print('輸入的整數不合法!')
    exit()
end = int(sqrt(num))
is_prime = True

for x in range(3, end+1):
    if num % x ==0:
        is_prime = False
        break
if is_prime == True:
    print('是素數。')
else:
    print('不是素數。')
'''
功能:兩個數的最大公因數、最小公倍數
核心:最小公倍數 = 兩數之積/最大公因數
算法: 1) 歐幾里得-輾轉相除法
  2) 試商法
'''

a = int(input('輸入整數a:'))
b = int(input('輸入整數b:'))
product = a * b
if a < b:  # 使得a>b
    t = a
    a = b
    b = t
# while a % b:  # 輾轉相除法
#     t = a
#     a = b
#     b = t % b
# print('最大公因數:%d,最小公倍數是:%d' % (b, product / b))


for i in range(b, 0, -1):  # 試商法;使range遞減
    if a % i == 0:
        print('最大公因數:%d,最小公倍數是:%d' % (i, product / i))
        break
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章