1. 程式人生 > >06 python基礎--程式設計思想

06 python基礎--程式設計思想

6.1 計算思維

人類思維特徵:邏輯思維->實證思維->計算思維
基於計算機強大的算力及海量資料,以計算機程式設計以主要實現的手段
計算思維例項:漢諾塔、圓周率計算

6.2 計算生態

計算生態特點:競爭發展、相互依存、迅速更迭
python語言提供>13萬個第三方庫,且同一功能具有2個以上第三方庫
優質的計算生態:https://www.python123.io

6.3 使用者體驗

進度展示、多步提示、異常處理、日誌檔案、幫助資訊

6.4 基本的程式設計模式

從IPO開始、自頂向下、模組化、配置化

6.5 應用開發的步驟

產品定義:理解和明確定義需求(產品),考慮商業角度
系統架構:關注資料流、模組化、體系架構
設計與實現:編碼設計
使用者體驗:使用者至上

6.6 模組化、自頂向下設計例項

# -*- coding: utf-8 -*-
from random import random
import encodings

## 列印資訊
def PrintIntro():
    print('根據兩個選手的能力值,模擬兩個選手的n場比賽')

## 獲取引數
def getInputs():
    a = eval(input('請輸入選手A的能力值a:'))
    b = eval(input('請輸入選手B的能力值b:'))
    n = eval(input('請輸入比賽的總場次n:'))
    return a,b,n

## 模擬n場比賽
def simNgame(n,a,b):
    wina,winb = 0,0
    for i in range(n):
        scoreA, scoreB = simoneGame(a, b)
        if scoreA>scoreB:
            wina += 1
        else:
            winb += 1
    return wina,winb

## 定義遊戲結束條件
def gameover(e,f):
    return e== 15 or f == 5

## 定義首球由誰發
def firstHit():
    if random() < 0.5:
        st = 'A'
    else:
        st = 'B'
    return st

## 模擬一場比賽的得分
def simoneGame(a,b):
    scoreA,scoreB = 0,0
    st = 'B'
    while not gameover(scoreA,scoreB):
        if st == 'A':
            if random()< a:
                scoreA +=1
            else:
                st = 'B'
        else:
            if random()< b:
                scoreB +=1
            else:
                st = 'A'
    return scoreA,scoreB
## 列印輸出
def PrintSummary(wina,winb):
    n = wina + winb
    print('競技分析開始,共進行了{}場比賽'.format(n))
    print('選手A獲勝{}場,佔比{:0.1%}'.format(wina,wina/n))
    print('選手A獲勝{}場,佔比{:0.1%}'.format(winb,winb/n))
## 主函式
def main():
    PrintIntro()
    a,b,n = getInputs()
    wina,winb = simNgame(n,a,b)
    PrintSummary(wina,winb)

main()

##輸出
根據兩個選手的能力值,模擬兩個選手的n場比賽
請輸入選手A的能力值a:0.3
請輸入選手B的能力值b:0.4
請輸入比賽的總場次n:1000
競技分析開始,共進行了1000場比賽
選手A獲勝223場,佔比22.3%
選手A獲勝777場,佔比77.7%