1. 程式人生 > 實用技巧 >Python的基本語法和格式規範

Python的基本語法和格式規範

在開始學習之前,我們做一道題,來作為大家今天的開場白!!

Q:現有資訊學號為u20201111的學生,數學成績為85,化學成績為82.46,請按下方格式輸出該資訊

u20201111 的數學分數是 85

u20201111 的化學分數是 82.46

A:

uid = 'u20201111'
Math = 85
Chemistry = 82.46
Sum = Math + Chemistry

print("%s 的數學成績是 %d" %(uid,Math))
print("%s 的化學成績是 %.2f" %(uid,Chemistry))
print("%s 的總成績是 %d"%(uid,Sum))

'''
上面的小例題大家看懂了嗎?沒看懂的要親手敲一下哦~

'''

學前引導:

基本操作和格式規範(本文重點)

  • 編碼規範

  • 註釋

  • 列印

  • 格式化輸出

  • format用法

  • 轉義字元

編碼規範

國際慣例,檔案編碼和 Python 編碼格式全部為 utf-8

例如:在 Python 程式碼的開頭,要統一加上 # -- coding: utf-8 --。

命名規範

變數和識別符號,變數和識別符號在命名規則上都遵循以下原則,

  • 只能由字母、數字和下劃線組成,且不能以數字開頭
  • 命名要做到見名知意:一般來說,只要是自定義的名字都可以被稱為識別符號,包括變數、函式名、類名、模組名、包名,所以變數其實只是識別符號的一個子類。

變數常見的命名風格有三種:

  • 單詞全部純小寫,單詞之間使用下劃線隔開,例如:data_science
  • 小駝峰式命名,第一個單詞字母全小寫,其他單詞首字母大寫,例如:dataScience
  • 大駝峰式命名,每個單詞的首字母均大寫,例如:DataScience
  • 以上這些命名規範不僅僅適用於變數,同時也適用於函式、類等;
  • 在Python中,方法和變數名一般採用第一種方式,類名採用第三種方式,第二種方式在Java宣告函式時比較常見。
  • 切記,識別符號的名字不能和Python的關鍵字衝突(可以使用keyword.kwlist檢視Python所有的關鍵字)

註釋

Python2-3輸出區別

Python3 使用 print 必須要以小括號包裹列印內容,比如 print('hi')

Python2 既可以使用帶小括號的方式,也可以使用一個空格來分隔列印內容,比如 print 'hi'

現在都是以python3為主

Python中單行註釋# 開頭,例項如下:

#我的第一行程式碼
print('hello world') #我的第二個註釋
hello world

多行註釋可以用多個 # 號,還有 '''"""

'''
我真的
可以
註釋
很多行
'''
"""
我也能
註釋
很多行
"""
print('hello world')
hello world

格式化輸出

**拼接符 '+' **

print('變數名:'+變數)

注意:變數必須為字串型別

拼接符','

print('變數名:',變數)

格式化符號

整數輸出:

%o —— oct 八進位制

%d —— dec 十進位制

%x —— hex 十六進位制

print('%o' % 20)   #以八進位制輸出20
print('%d' % 20)   #以十進位制輸出20
print('%x' % 20)   #以十六進位制輸出20

24
20
14

浮點數輸出

  • %f ——保留小數點後面六位有效數字

  %.3f,保留3位小數位

  • %e ——保留小數點後面六位有效數字,指數形式輸出

  %.3e,保留3位小數位,使用科學計數法

  • %g ——在保證六位有效數字的前提下,使用小數方式,否則使用科學計數法

  %.3g,保留3位有效數字,使用小數或科學計數法

下面做一系列的演示:

print('%f' % 1.11)  # 預設保留6位小數
print('%.1f' % 1.11)  # 取1位小數
print('%e' % 1.11)  # 預設6位小數,用科學計數法
print('%.3e' % 1.11)  # 取3位小數,用科學計數法
print('%g' % 1111.1111)  # 預設6位有效數字
print('%.7g' % 1111.1111)  # 取7位有效數字
print('%.2g' % 1111.1111)  # 取2位有效數字,自動轉換為科學計數法
1.110000
1.1
1.110000e+00
1.110e+00
1111.11
1111.111
1.1e+03

format的用法

format的用法很常見,並且實用,大家可以根據案例多進行模仿與演示。

format就是變數之間的對映,它有三種形式

  • (1)不帶編號,即“{}”
  • (2)帶數字編號,可調換順序,即“{1}”、“{2}”
  • (3)帶關鍵字,即“{a}”、“{tom}”

對映案例如下:

print('{} {}'.format('hello','world'))  # 不帶欄位
print('{0} {1}'.format('hello','world'))  # 帶數字編號
print('{0} {1} {0}'.format('hello','world'))  # 打亂順序
print('{1} {1} {0}'.format('hello','world'))
print('{a} {tom} {a}'.format(tom='hello',a='world'))  # 帶關鍵字

hello world
hello world
hello world hello
world world hello
world hello world

格式化字串

  • f-string,亦稱為格式化字串常量(formatted string literals),是Python3.6新引入的一種字串格式化方法。
  • f-string在形式上是以 f 或 F 修飾符引領的字串(f'xxx' 或 F'xxx'),以大括號 {} 標明被替換的欄位;
  • f-string在本質上並不是字串常量,而是一個在執行時運算求值的表示式。

先嚐試一下str、int型別的變數

name = "小風"
age = 18
print(f"姓名:{name},年齡:{age}")
姓名:小風,年齡:18

再試一下字典

one_dict = {"name": "小風", "age": 18, "hobby": ["running", "singing"]}
print(f"姓名:{one_dict['name']},愛好:{one_dict['hobby']}")
姓名:小風,愛好:['running', 'singing']

格式規範:

程式碼塊快捷鍵:CTRL+ALT+L

轉義字元

轉義字元‘\’可以轉義很多字元

  • ‘\n’表示換行
  • ’\t‘表示製表符
  • 字元’\‘本身也要轉義,所以‘\’表示的字元就是‘\’

下面為‘\’在輸出過程中可能出現的情況;

print('I\'m ok.')
I'm ok.
print('I\'m learning\nPython.')
I'm learning
Python.
print('\\\n\\')

小作業

  • 1、學號為u20201111的學生,數學成績為85,化學成績為82.46,按格式輸出:

    u20201111 的數學分數是 85

    u20201111 的化學分數是 82.46

    並且求出該學號學生的總成績,以及平均分

  1. 2、給定兩個整數AB,輸出從AB的所有整數以及這些數的和。

    輸入格式:

    輸入在一行中給出2個整數AB,其中−100≤AB≤100,以空格分隔。

    輸出格式:

    首先順序輸出從AB的所有整數,每5個數字佔一行,每個數字佔5個字元寬度,向右對齊。最後在一行中按Sum = X的格式輸出全部數字的和X。

  2. 3、給定學生三門成績

    (1)計算該學生的平均成績並列印平均成績保留兩位小數點

    (2)計算該學生語文成績佔總成績的百分之多少?並列印,百分比也保留兩位小數

    Chinese = 92
    Math = 98.5
    English = 93
    
  3. 4、用轉義字元,輸出一張todo list,包含4條內容並用製表符對齊。格式如下:

    This is todo list for today:
            * Meeting at 11:00
            * lunch with Mike
            * buy milk
            * do yoga
    
  4. 5、分別用多種格式輸出,答案不限,輸入引數為like,learning:I like Python, and I'am learning(注意上引號)

進階題:

編輯完成以下名片的顯示:

==================================
姓名: 努力賺錢的小風    
QQ:xxxxxxx
手機號:185xxxxxx
公司地址:北京市xxxx
Blog:www.a2data.cn
==================================

#思考,如何格式化輸出?換行?
#進階思路,如果姓名年齡是否可以是變數傳入,或者外部輸入呢?