變量(Variable)+標(biāo)識(shí)符+保留字(關(guān)鍵字)

# -*- coding: utf-8 -*-
# @Time    : 2019/11/4 14:48
# @Author  : John
# @Email   : 2398344557@qq.com
# @File    : 變量.py
# @Software: PyCharm

在Python中,每個(gè)變量在使用前必須進(jìn)行賦值,變量賦值以后,該變量才會(huì)被創(chuàng)建,否則會(huì)報(bào)錯(cuò)。

情況一:定義了變量而沒有對(duì)其賦值,引用該變量后,輸出的是空值;
情況二:沒有定義且沒有賦值,引用不存在的變量時(shí),直接報(bào)錯(cuò)。

定義一個(gè)變量就像申請(qǐng)一個(gè)教室,學(xué)生可以進(jìn)來,也可以離開,是一個(gè)可變換的過程(not寫死)。

格式:變量名 = 值 (等號(hào)為賦值符號(hào),等號(hào)兩邊各留一個(gè)空格,美觀)
  • 中文變量命名:
名字變量 = "雪碧"
print(名字變量)
—— 雪碧
# 結(jié)論:中文變量命名只能在Python3中使用,但是不推薦
  • 英文變量命名:

【實(shí)例1】學(xué)生注冊(cè)

# 定義變量
studentNumber = '9527'    # 定義學(xué)生學(xué)號(hào)
studentPassWard = '709394'    # 定義學(xué)生密碼
# 使用print()內(nèi)置函數(shù)輸出
print(studentNumber)    # 單獨(dú)輸出studentNumber
print(studentPassword)    # 單獨(dú)輸出studentPassword
—— 9527
   709394
# -----------------------------------------------------------------------
# ***拓展***

# 1. 一次輸出多個(gè)變量,中間用逗號(hào)隔開,可解決自動(dòng)換行問題,例:print(a, b, c, ...)
print(studentNumber, studentPassWard)    # 輸出studentNumber和studentPassword
—— 9527 709394
# 2. 每次輸出都是默認(rèn)換行的,如果不需要換行,可以將end參數(shù)設(shè)置為''
print(studentNumber, end='')    # 默認(rèn)end='\n',不需要時(shí)換成end='',即輸出結(jié)果與一次輸出多個(gè)變量形式相似,只是變量之間沒有空格隔開
print(studentPassWard)
—— 9527709394
# 3. 在Python2.x版本中,print并不是一個(gè)函數(shù)。寫法是print "",例:print "hello world"
# 所以,判斷代碼使用的版本的最直接方法,就是看print的格式,所以在網(wǎng)上粘貼時(shí)復(fù)制到本地時(shí)要注意格式的變換,否則會(huì)報(bào)錯(cuò)。
# -----------------------------------------------------------------------
# ***拓展***

# 代碼縮進(jìn)
# python是使用縮進(jìn)例組織代碼塊的,也是官方強(qiáng)制要求的,例如以下聲明是會(huì)報(bào)錯(cuò)的:
    studentNumber = '9527'
print(studentNumber)
—— IndentationError: unexpected indent
# 或:
studentNumber ='9527'
    print(studentNumber)
—— IndentationError: unexpected indent
# 結(jié)論:必須為同一級(jí),否則會(huì)報(bào)錯(cuò)

【練習(xí)1】超市買菜

# 定義黃瓜的價(jià)格
ccb_price = float(input("please input ccb's price(¥) : "))
# 定義購(gòu)買重量
weight = float(input("please input ccb's weight(kg) : "))
# 計(jì)算金額
money = ccb_price * weight
# 顯示輸出
print('money : ', money)
—— please input ccb's price(¥) : 5.8
   please input ccb's weight(kg) : 3.2
   money : 18.56

變量的類型

變量的四要素:

  1. 變量名稱
  2. 變量保存的數(shù)據(jù)
  3. 變量存儲(chǔ)數(shù)據(jù)的類型
  4. 變量的內(nèi)存地址(標(biāo)識(shí))

【練習(xí)2】定義變量保存小強(qiáng)的個(gè)人信息

name = '雪碧'    # 姓名:雪碧
age = 22    # 年齡:22歲
sex = True    # 性別:男性
height = 1.75    # 身高:1.80米
weight = 54.0    # 體重:77.0公斤

print(type(name))
print(type(age))
print(type(sex))
print(type(height))
print(type(weight))
print(name, age, sex, height, weight)
—— <class 'str'>
   <class 'int'>
   <class 'bool'>
   <class 'float'>
   <class 'float'>
   雪碧 22 True 1.75 54.0
# 結(jié)論:Python在定義變量時(shí)不需要指定變量類型,變量在運(yùn)行過程中,Python解釋器會(huì)自動(dòng)推導(dǎo)出變量的精確類型,這就是動(dòng)態(tài)語(yǔ)言的特色之一
# 動(dòng)態(tài)語(yǔ)言包括python、javascript、sql等
# 靜態(tài)語(yǔ)言包括c++、c#等
# -----------------------------------------------------------------------
# ***拓展***

# 單步調(diào)試:debug
#選中開始語(yǔ)句,在前面標(biāo)記,然后按F8,或右鍵,或文件右鍵,進(jìn)行單步調(diào)試
#MainThread:主線程

debug顯示效果如下:


debug測(cè)試如下png

變量可按照類型分為數(shù)字類型和非數(shù)字類型

  • 數(shù)字類型:整型int、浮點(diǎn)型float、布爾型bool
  • 非數(shù)字類型:字符串、列表、元組、字典、集合

可以使用tpye()內(nèi)置函數(shù)查看變量的數(shù)據(jù)類型。
內(nèi)置函數(shù)在Python中直接調(diào)用即可,無需進(jìn)行其他操作。
常見的內(nèi)置函數(shù)有:input()、type()、int()、...

不同變量之間的運(yùn)算

# 1. 在Python中數(shù)字類型變量可以直接進(jìn)行算術(shù)運(yùn)算
# 如果變量是布爾型的話:True ---->1、False ----> 0
# i = 10
# f = 10.1
# b = True
# print(i+f+b)    # 自動(dòng)類型轉(zhuǎn)行,轉(zhuǎn)換成浮點(diǎn)數(shù)(系統(tǒng)自動(dòng)選擇精確度最高的)
# —— 21.5
# -----------------------------------------------------------------------
# ***拓展***

# 一行聲明以上的變量(即一一對(duì)應(yīng))
i, f, b = 10, 10.1, True
print(i+f+b)    # 類型自動(dòng)轉(zhuǎn)換,即全部轉(zhuǎn)化成了精確度最大的浮點(diǎn)數(shù)(系統(tǒng)會(huì)優(yōu)先選擇精確度最大的數(shù))
—— 21.1
# -----------------------------------------------------------------------
# ***拓展***

# Python中交換變量的值的最快方法:
x = 1314
y = 520
x, y = y, x    # 直接調(diào)換變量的位置然后重新賦值即可
print('x=', x, 'y=', y)
—— x= 520 y= 1314

字符拼接

# Python中,字符串之間可以用“+”加號(hào)進(jìn)行拼接,生成新的字符串
first_name = '雪碧'
last_name = '最騷'
print(first_name + last_name)    # 輸出兩個(gè)變量拼接后的結(jié)果
—— 雪碧最騷
# -----------------------------------------------------------------------
# ***拓展***

# 數(shù)字和字符串之間不能進(jìn)行鏈接,會(huì)報(bào)錯(cuò):
print(first_name+'的學(xué)號(hào)為:'+ 9527)
——TypeError: can only concatenate str (not "int") to str
# 解決方法一:
print(first_name+'的學(xué)號(hào)為:'+str(9527))    # 使用str()內(nèi)置函數(shù)將int類型的數(shù)據(jù)強(qiáng)制轉(zhuǎn)化為str類型的數(shù)據(jù)
—— 雪碧的學(xué)號(hào)為:9527
# 解決方法二:
print(first_name+'的學(xué)號(hào)為:'+'9527')    # 用單引號(hào)或者雙引號(hào)直接把其他類型的數(shù)據(jù)轉(zhuǎn)化為字符串類型的數(shù)據(jù)
—— 雪碧的學(xué)號(hào)為:9527
# -----------------------------------------------------------------------
# +++舉一反三+++

# int()    # 強(qiáng)制轉(zhuǎn)化為整型的數(shù)據(jù)
# float()    # 強(qiáng)制轉(zhuǎn)化為浮點(diǎn)型的數(shù)據(jù)
# bool()    # 強(qiáng)制轉(zhuǎn)化為布爾型的數(shù)據(jù)
# str()    # 強(qiáng)制轉(zhuǎn)化為字符串類型的數(shù)據(jù)
# list()    # 強(qiáng)制轉(zhuǎn)化為列表類型的數(shù)據(jù)
# tuple()    # 強(qiáng)制轉(zhuǎn)化為元組類型的數(shù)據(jù)
# dict()    # 強(qiáng)制轉(zhuǎn)化為字典類型的數(shù)據(jù)
# np.array()    # 強(qiáng)制轉(zhuǎn)化為矩陣(括號(hào)里一般為列表)
# -----------------------------------------------------------------------
# ***拓展***

# 字符串類型可以和整數(shù)使用*號(hào),可以達(dá)到重復(fù)拼接字符串的效果(即輸出多少遍)
print('雪碧'*10)    # 把"雪碧"輸出10遍
—— 雪碧雪碧雪碧雪碧雪碧雪碧雪碧雪碧雪碧雪碧
print('!'*15)    # 把"!"輸出15遍
—— !!!!!!!!!!!!!!!

變量的輸入

input()內(nèi)置函數(shù),可以實(shí)現(xiàn)在控制臺(tái)中進(jìn)行輸入

所謂的函數(shù),我們可以理解為別人已寫好的代碼,而我們可以進(jìn)行調(diào)用,無需關(guān)系內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。

【實(shí)例2】超市買香蕉

banana_price = float(input("place input banana's price(¥):"))    # 將從鍵盤輸入的數(shù)據(jù)轉(zhuǎn)換成浮點(diǎn)類型(小數(shù))
banana_weight = float(input("place input banana's weight(kg):"))    # 將從鍵盤輸入的數(shù)據(jù)轉(zhuǎn)換成浮點(diǎn)類型(小數(shù))
amount = banana_price * banana_weight    # 計(jì)算總金額
print('amount:', amount)
—— place input banana's price(¥):2.5
   place input banana's weight(kg):5
   amount: 12.5

內(nèi)存(未完整)

a = 1
a = 2
b = a    # b和a同時(shí)指向2
a = 3    # a跑了,指向3
print(b)    # 只剩b指向2
print(a)    # a指向3
# —— 2
# —— 3

c = [1, 2, 3]
d = c
c.append(4)
print(d)
print(c)

格式化字符串(格式化輸出)

  • 使用%格式化操作符進(jìn)行格式化輸出(明確輸入的數(shù)據(jù)類型)
# 1. 使用%格式化操作符進(jìn)行格式化輸出(易出錯(cuò))
# 格式:
# print('格式化字符串' % 變量)
# 例如:print('%s' % '雪碧')
# print('格式化字符串' % (變量1, 變量2, ...))
# 例如:print('%s,%d,%f,...' % ('雪碧', 3, 3.3, ...))
# %s    字符串
# %d    有符號(hào)的十進(jìn)制數(shù)
# %f    浮點(diǎn)數(shù)
# %%    輸出%本身

# 注意:%d的使用情況
student_number = 1
print('我的學(xué)號(hào)是%06d' % student_number)
# —— 我的學(xué)號(hào)是000001
print('我的學(xué)號(hào)是%6d' % student_number)
# —— 我的學(xué)號(hào)是     1
print('我的學(xué)號(hào)是%011d' % student_number)
# —— 我的學(xué)號(hào)是0000000001
print('我的學(xué)號(hào)是%11d' % student_number)
# —— 我的學(xué)號(hào)是         1
# 結(jié)論:%d要分情況討論,非零數(shù)前含有0時(shí),會(huì)在輸入的數(shù)字前補(bǔ)上n-1個(gè)零,否則會(huì)留n-1個(gè)空格。

# 注意:%f的使用情況
print('香蕉的單價(jià)為%000000000000.2f元/斤' % (00000.1))
—— 香蕉的單價(jià)為0.10元/斤
print('香蕉的單價(jià)為%.0000000000002f元/斤' % (0000.1))
—— 香蕉的單價(jià)為0.10元/斤
print('香蕉的單價(jià)為%.2f元/斤' % (0000.1))
—— 香蕉的單價(jià)為0.10元/斤
print('香蕉的單價(jià)為%.2f元/斤' % (1))
—— 香蕉的單價(jià)為1.00元/斤
print('香蕉的單價(jià)為%.1f元/斤' % (1))
—— 香蕉的單價(jià)為1.0元/斤
print('香蕉的單價(jià)為%.10f元/斤' % (1))
—— 香蕉的單價(jià)為1.0000000000元/斤
結(jié)論:%.f要分情況討論,當(dāng)為小數(shù)點(diǎn)前或小數(shù)點(diǎn)后非零數(shù)位置時(shí),對(duì)數(shù)本身沒有任何影響。
  • 使用format()進(jìn)行格式化輸出(無需考慮數(shù)據(jù)類型)
# 2. 通過{}進(jìn)行格式化輸出,代替?zhèn)鹘y(tǒng)的%
# 格式:
# print('{}{}...{}'.format(a, b, ...))
# {}內(nèi)可以是任意的數(shù)字類型或非數(shù)字類型的數(shù)據(jù)
# 例:print('我叫{},今年{}歲了。'.format('雪碧', 20))

# ***拓展***
# --------------
# 格式:
# {模板字符串}.format(逗號(hào)分隔的參數(shù))
str1 = '{}曰:學(xué)而時(shí)習(xí)之,不亦說乎。'.format('孔子')
print(str1)
—— 孔子曰:學(xué)而時(shí)習(xí)之,不亦說乎。
# 模板字符串中含有多個(gè)槽時(shí)且沒有指定序號(hào),則會(huì)按照槽出現(xiàn)的順序分別對(duì)應(yīng)參數(shù)
str2 = '{}曰:學(xué)而時(shí)習(xí)之,不亦{}。'.format('孔子', '說乎')
print(str2)
—— 孔子曰:學(xué)而時(shí)習(xí)之,不亦說乎。
# 可以通過format()參數(shù)的序號(hào)在模板字符串槽中指定參數(shù)的使用,參數(shù)從0開始編號(hào)(類似于索引)
str2 = '{1}曰:學(xué)而時(shí)習(xí)之,不亦{0}。'.format('說乎', '孔子')
print(str2)
—— 孔子曰:學(xué)而時(shí)習(xí)之,不亦說乎。

【練習(xí)2】輸出“公孫離的等級(jí)為:15”這句話

name = '公孫離'
grade = 15

# 拼接字符串形式輸出:
print(name+'的等級(jí)為:'+str(grade))
—— 公孫離的等級(jí)為:15
# 使用%進(jìn)行字符串的格式化輸出
print('%s的等級(jí)為:%d' % (name, grade))
—— 公孫離的等級(jí)為:15
# 使用format()進(jìn)行字符串的格式化輸出
print('{}的等級(jí)為:{}'.format(name, grade))
—— 公孫離的等級(jí)為:15
# 結(jié)論:
# 1. 輸出結(jié)果一樣,哪種方便用哪種,當(dāng)輸出的數(shù)比較多且復(fù)雜時(shí)會(huì)使用后面兩種。
# 2. 第一種方式比較粗暴且不好用(要把非字符串的統(tǒng)統(tǒng)進(jìn)行強(qiáng)制類型轉(zhuǎn)化為字符串類型),
#    第二種方式要區(qū)分好數(shù)據(jù)類型,
#    第三種方式的優(yōu)點(diǎn)在于無需區(qū)分?jǐn)?shù)據(jù)類型,直接調(diào)用輸出即可
# 3. 推薦使用第三種方式(最常用且最不易出錯(cuò))
# 4. 以后會(huì)介紹更加便捷的方法,請(qǐng)期待 ~

【練習(xí)3】課后習(xí)題1

# 定義字符串變量name,輸出我的名字叫小明,請(qǐng)多多關(guān)照!
# 定義整數(shù)變量student_no,輸出我的學(xué)號(hào)是000001
# 定義小數(shù)price、weight、money,輸出蘋果單價(jià)9.00元/斤,購(gòu)買了5.00斤,需要支付45.00元
# 定義一個(gè)小數(shù)scale,輸出數(shù)據(jù)比例是10.00 %

name = '小明'
print('我的名字叫%s請(qǐng)多關(guān)照!' % name)
student_no = 1
print('我的學(xué)號(hào)是%06d' % student_no)
price = 9.00
weight = 5.00
money = price * weight
print('蘋果單價(jià)%.2f元/斤,購(gòu)買了%.2f斤,需要支付%.2f元' % (price, weight, money))
scale = 10.00
print('數(shù)據(jù)比例是%.2f%%' % scale)
—— 我的名字叫小明請(qǐng)多關(guān)照!
   我的學(xué)號(hào)是000001
   蘋果單價(jià)9.00元/斤,購(gòu)買了5.00斤,需要支付45.00元
   數(shù)據(jù)比例是10.00%

【練習(xí)4】課后習(xí)題2-1——個(gè)人名片(使用%格式操作符)

"""在控制臺(tái)一次提示用戶輸入:姓名、公司、職位、電話、電子郵箱"""
name = input('請(qǐng)輸入名字:')
company = input('請(qǐng)輸入公司:')
title = input('請(qǐng)輸入職位:')
phone = input('請(qǐng)輸入電話:')
email = input('請(qǐng)輸入郵箱:')

print('*' * 50)
print(company)
print()
print('%s(%s)' % (name, title))
print()
print('電話:%s' % phone)
print('郵箱:%s' % email)
print('*' * 50)

【練習(xí)5】課后習(xí)題2-2——個(gè)人名片(使用format())

"""在控制臺(tái)一次提示用戶輸入:姓名、公司、職位、電話、電子郵箱"""
name = input('請(qǐng)輸入名字:')
company = input('請(qǐng)輸入公司:')
title = input('請(qǐng)輸入職位:')
phone = input('請(qǐng)輸入電話:')
email = input('請(qǐng)輸入郵箱:')

print('*' * 50)
print(company)
print()
print('{}({})'.format(name, title))
print()
print('電話:{}'.format(phone))
print('郵箱:{}'.format(email))
print('*' * 50)

效果如下(練習(xí)4和練習(xí)5):

請(qǐng)輸入名字:雪碧
請(qǐng)輸入公司:巨大動(dòng)力
請(qǐng)輸入職位:CEO
請(qǐng)輸入電話:7533
請(qǐng)輸入郵箱:2398344557@qq.com
**************************************************
巨大動(dòng)力

雪碧(CEO)

電話:7533
郵箱:2398344557@qq.com
**************************************************

變量的命名

--- 標(biāo)識(shí)符
  • 是程序員自己命名的變量名
  • 原則上,標(biāo)識(shí)符的命名要有”見名知意”的效果,盡量不要隨意起名
# bad命名:
c = '東軟'
en = '9527'
# good命名:
company = 'neusoft'
employNumber = '9527'
  • 標(biāo)識(shí)符可以由字母、下劃線、數(shù)字組成
  • 不能以數(shù)字開頭
  • 不能與保留字(關(guān)鍵字)重復(fù)
--- 保留字(關(guān)鍵字)
  • 關(guān)鍵字就是Python中內(nèi)部已經(jīng)定義好的標(biāo)識(shí)符
  • 具有特殊的功能和含義
  • 不允許定義和關(guān)鍵字相同的標(biāo)識(shí)符
  • 保留字(關(guān)鍵字)如下:
# 查看方式
import keword
print(keyword.kwlist)
# 輸出如下:

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

  • 變量的命名規(guī)則
    目的:規(guī)范的命名是為了增強(qiáng)代碼的可讀性,其他人及自己對(duì)代碼的識(shí)別
    注意:Python中的標(biāo)識(shí)符是嚴(yán)格區(qū)分大小寫的

【錯(cuò)誤示范】

userName = 'xuebi'
print(username)
—— NameError: name 'username' is not defined
# 1. 下劃線命名法:
# 原則:每個(gè)單詞都要小寫,單詞直接使用_鏈接
first_name = 'joe'
qq_number = '888888'
# 2. 駝峰式命名法:
# 小駝峰:第一個(gè)單詞從小寫字母開始,后續(xù)單詞首字母大寫
firstName = 'Robbt'
# 大駝峰:每個(gè)單詞首字母都才去大寫的方式
FirstName = 'Juliet'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容