变量(Variable)+标识符+保留字(关键字)

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

在Python中,每个变量在使用前必须进行赋值,变量赋值以后,该变量才会被创建,否则会报错。

情况一:定义了变量而没有对其赋值,引用该变量后,输出的是空值;
情况二:没有定义且没有赋值,引用不存在的变量时,直接报错。

定义一个变量就像申请一个教室,学生可以进来,也可以离开,是一个可变换的过程(not写死)。

格式:变量名 = 值 (等号为赋值符号,等号两边各留一个空格,美观)
  • 中文变量命名:
名字变量 = "雪碧"
print(名字变量)
—— 雪碧
# 结论:中文变量命名只能在Python3中使用,但是不推荐
  • 英文变量命名:

【实例1】学生注册

# 定义变量
studentNumber = '9527'    # 定义学生学号
studentPassWard = '709394'    # 定义学生密码
# 使用print()内置函数输出
print(studentNumber)    # 单独输出studentNumber
print(studentPassword)    # 单独输出studentPassword
—— 9527
   709394
# -----------------------------------------------------------------------
# ***拓展***

# 1. 一次输出多个变量,中间用逗号隔开,可解决自动换行问题,例:print(a, b, c, ...)
print(studentNumber, studentPassWard)    # 输出studentNumber和studentPassword
—— 9527 709394
# 2. 每次输出都是默认换行的,如果不需要换行,可以将end参数设置为''
print(studentNumber, end='')    # 默认end='\n',不需要时换成end='',即输出结果与一次输出多个变量形式相似,只是变量之间没有空格隔开
print(studentPassWard)
—— 9527709394
# 3. 在Python2.x版本中,print并不是一个函数。写法是print "",例:print "hello world"
# 所以,判断代码使用的版本的最直接方法,就是看print的格式,所以在网上粘贴时复制到本地时要注意格式的变换,否则会报错。
# -----------------------------------------------------------------------
# ***拓展***

# 代码缩进
# python是使用缩进例组织代码块的,也是官方强制要求的,例如以下声明是会报错的:
    studentNumber = '9527'
print(studentNumber)
—— IndentationError: unexpected indent
# 或:
studentNumber ='9527'
    print(studentNumber)
—— IndentationError: unexpected indent
# 结论:必须为同一级,否则会报错

【练习1】超市买菜

# 定义黄瓜的价格
ccb_price = float(input("please input ccb's price(¥) : "))
# 定义购买重量
weight = float(input("please input ccb's weight(kg) : "))
# 计算金额
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. 变量保存的数据
  3. 变量存储数据的类型
  4. 变量的内存地址(标识)

【练习2】定义变量保存小强的个人信息

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
# 结论:Python在定义变量时不需要指定变量类型,变量在运行过程中,Python解释器会自动推导出变量的精确类型,这就是动态语言的特色之一
# 动态语言包括python、javascript、sql等
# 静态语言包括c++、c#等
# -----------------------------------------------------------------------
# ***拓展***

# 单步调试:debug
#选中开始语句,在前面标记,然后按F8,或右键,或文件右键,进行单步调试
#MainThread:主线程

debug显示效果如下:


debug测试如下png

变量可按照类型分为数字类型和非数字类型

  • 数字类型:整型int、浮点型float、布尔型bool
  • 非数字类型:字符串、列表、元组、字典、集合

可以使用tpye()内置函数查看变量的数据类型。
内置函数在Python中直接调用即可,无需进行其他操作。
常见的内置函数有:input()、type()、int()、...

不同变量之间的运算

# 1. 在Python中数字类型变量可以直接进行算术运算
# 如果变量是布尔型的话:True ---->1、False ----> 0
# i = 10
# f = 10.1
# b = True
# print(i+f+b)    # 自动类型转行,转换成浮点数(系统自动选择精确度最高的)
# —— 21.5
# -----------------------------------------------------------------------
# ***拓展***

# 一行声明以上的变量(即一一对应)
i, f, b = 10, 10.1, True
print(i+f+b)    # 类型自动转换,即全部转化成了精确度最大的浮点数(系统会优先选择精确度最大的数)
—— 21.1
# -----------------------------------------------------------------------
# ***拓展***

# Python中交换变量的值的最快方法:
x = 1314
y = 520
x, y = y, x    # 直接调换变量的位置然后重新赋值即可
print('x=', x, 'y=', y)
—— x= 520 y= 1314

字符拼接

# Python中,字符串之间可以用“+”加号进行拼接,生成新的字符串
first_name = '雪碧'
last_name = '最骚'
print(first_name + last_name)    # 输出两个变量拼接后的结果
—— 雪碧最骚
# -----------------------------------------------------------------------
# ***拓展***

# 数字和字符串之间不能进行链接,会报错:
print(first_name+'的学号为:'+ 9527)
——TypeError: can only concatenate str (not "int") to str
# 解决方法一:
print(first_name+'的学号为:'+str(9527))    # 使用str()内置函数将int类型的数据强制转化为str类型的数据
—— 雪碧的学号为:9527
# 解决方法二:
print(first_name+'的学号为:'+'9527')    # 用单引号或者双引号直接把其他类型的数据转化为字符串类型的数据
—— 雪碧的学号为:9527
# -----------------------------------------------------------------------
# +++举一反三+++

# int()    # 强制转化为整型的数据
# float()    # 强制转化为浮点型的数据
# bool()    # 强制转化为布尔型的数据
# str()    # 强制转化为字符串类型的数据
# list()    # 强制转化为列表类型的数据
# tuple()    # 强制转化为元组类型的数据
# dict()    # 强制转化为字典类型的数据
# np.array()    # 强制转化为矩阵(括号里一般为列表)
# -----------------------------------------------------------------------
# ***拓展***

# 字符串类型可以和整数使用*号,可以达到重复拼接字符串的效果(即输出多少遍)
print('雪碧'*10)    # 把"雪碧"输出10遍
—— 雪碧雪碧雪碧雪碧雪碧雪碧雪碧雪碧雪碧雪碧
print('!'*15)    # 把"!"输出15遍
—— !!!!!!!!!!!!!!!

变量的输入

input()内置函数,可以实现在控制台中进行输入

所谓的函数,我们可以理解为别人已写好的代码,而我们可以进行调用,无需关系内部的实现细节。

【实例2】超市买香蕉

banana_price = float(input("place input banana's price(¥):"))    # 将从键盘输入的数据转换成浮点类型(小数)
banana_weight = float(input("place input banana's weight(kg):"))    # 将从键盘输入的数据转换成浮点类型(小数)
amount = banana_price * banana_weight    # 计算总金额
print('amount:', amount)
—— place input banana's price(¥):2.5
   place input banana's weight(kg):5
   amount: 12.5

内存(未完整)

a = 1
a = 2
b = a    # b和a同时指向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)

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

  • 使用%格式化操作符进行格式化输出(明确输入的数据类型)
# 1. 使用%格式化操作符进行格式化输出(易出错)
# 格式:
# print('格式化字符串' % 变量)
# 例如:print('%s' % '雪碧')
# print('格式化字符串' % (变量1, 变量2, ...))
# 例如:print('%s,%d,%f,...' % ('雪碧', 3, 3.3, ...))
# %s    字符串
# %d    有符号的十进制数
# %f    浮点数
# %%    输出%本身

# 注意:%d的使用情况
student_number = 1
print('我的学号是%06d' % student_number)
# —— 我的学号是000001
print('我的学号是%6d' % student_number)
# —— 我的学号是     1
print('我的学号是%011d' % student_number)
# —— 我的学号是0000000001
print('我的学号是%11d' % student_number)
# —— 我的学号是         1
# 结论:%d要分情况讨论,非零数前含有0时,会在输入的数字前补上n-1个零,否则会留n-1个空格。

# 注意:%f的使用情况
print('香蕉的单价为%000000000000.2f元/斤' % (00000.1))
—— 香蕉的单价为0.10元/斤
print('香蕉的单价为%.0000000000002f元/斤' % (0000.1))
—— 香蕉的单价为0.10元/斤
print('香蕉的单价为%.2f元/斤' % (0000.1))
—— 香蕉的单价为0.10元/斤
print('香蕉的单价为%.2f元/斤' % (1))
—— 香蕉的单价为1.00元/斤
print('香蕉的单价为%.1f元/斤' % (1))
—— 香蕉的单价为1.0元/斤
print('香蕉的单价为%.10f元/斤' % (1))
—— 香蕉的单价为1.0000000000元/斤
结论:%.f要分情况讨论,当为小数点前或小数点后非零数位置时,对数本身没有任何影响。
  • 使用format()进行格式化输出(无需考虑数据类型)
# 2. 通过{}进行格式化输出,代替传统的%
# 格式:
# print('{}{}...{}'.format(a, b, ...))
# {}内可以是任意的数字类型或非数字类型的数据
# 例:print('我叫{},今年{}岁了。'.format('雪碧', 20))

# ***拓展***
# --------------
# 格式:
# {模板字符串}.format(逗号分隔的参数)
str1 = '{}曰:学而时习之,不亦说乎。'.format('孔子')
print(str1)
—— 孔子曰:学而时习之,不亦说乎。
# 模板字符串中含有多个槽时且没有指定序号,则会按照槽出现的顺序分别对应参数
str2 = '{}曰:学而时习之,不亦{}。'.format('孔子', '说乎')
print(str2)
—— 孔子曰:学而时习之,不亦说乎。
# 可以通过format()参数的序号在模板字符串槽中指定参数的使用,参数从0开始编号(类似于索引)
str2 = '{1}曰:学而时习之,不亦{0}。'.format('说乎', '孔子')
print(str2)
—— 孔子曰:学而时习之,不亦说乎。

【练习2】输出“公孙离的等级为:15”这句话

name = '公孙离'
grade = 15

# 拼接字符串形式输出:
print(name+'的等级为:'+str(grade))
—— 公孙离的等级为:15
# 使用%进行字符串的格式化输出
print('%s的等级为:%d' % (name, grade))
—— 公孙离的等级为:15
# 使用format()进行字符串的格式化输出
print('{}的等级为:{}'.format(name, grade))
—— 公孙离的等级为:15
# 结论:
# 1. 输出结果一样,哪种方便用哪种,当输出的数比较多且复杂时会使用后面两种。
# 2. 第一种方式比较粗暴且不好用(要把非字符串的统统进行强制类型转化为字符串类型),
#    第二种方式要区分好数据类型,
#    第三种方式的优点在于无需区分数据类型,直接调用输出即可
# 3. 推荐使用第三种方式(最常用且最不易出错)
# 4. 以后会介绍更加便捷的方法,请期待 ~

【练习3】课后习题1

# 定义字符串变量name,输出我的名字叫小明,请多多关照!
# 定义整数变量student_no,输出我的学号是000001
# 定义小数price、weight、money,输出苹果单价9.00元/斤,购买了5.00斤,需要支付45.00元
# 定义一个小数scale,输出数据比例是10.00 %

name = '小明'
print('我的名字叫%s请多关照!' % name)
student_no = 1
print('我的学号是%06d' % student_no)
price = 9.00
weight = 5.00
money = price * weight
print('苹果单价%.2f元/斤,购买了%.2f斤,需要支付%.2f元' % (price, weight, money))
scale = 10.00
print('数据比例是%.2f%%' % scale)
—— 我的名字叫小明请多关照!
   我的学号是000001
   苹果单价9.00元/斤,购买了5.00斤,需要支付45.00元
   数据比例是10.00%

【练习4】课后习题2-1——个人名片(使用%格式操作符)

"""在控制台一次提示用户输入:姓名、公司、职位、电话、电子邮箱"""
name = input('请输入名字:')
company = input('请输入公司:')
title = input('请输入职位:')
phone = input('请输入电话:')
email = input('请输入邮箱:')

print('*' * 50)
print(company)
print()
print('%s(%s)' % (name, title))
print()
print('电话:%s' % phone)
print('邮箱:%s' % email)
print('*' * 50)

【练习5】课后习题2-2——个人名片(使用format())

"""在控制台一次提示用户输入:姓名、公司、职位、电话、电子邮箱"""
name = input('请输入名字:')
company = input('请输入公司:')
title = input('请输入职位:')
phone = input('请输入电话:')
email = input('请输入邮箱:')

print('*' * 50)
print(company)
print()
print('{}({})'.format(name, title))
print()
print('电话:{}'.format(phone))
print('邮箱:{}'.format(email))
print('*' * 50)

效果如下(练习4和练习5):

请输入名字:雪碧
请输入公司:巨大动力
请输入职位:CEO
请输入电话:7533
请输入邮箱:2398344557@qq.com
**************************************************
巨大动力

雪碧(CEO)

电话:7533
邮箱:2398344557@qq.com
**************************************************

变量的命名

--- 标识符
  • 是程序员自己命名的变量名
  • 原则上,标识符的命名要有”见名知意”的效果,尽量不要随意起名
# bad命名:
c = '东软'
en = '9527'
# good命名:
company = 'neusoft'
employNumber = '9527'
  • 标识符可以由字母、下划线、数字组成
  • 不能以数字开头
  • 不能与保留字(关键字)重复
--- 保留字(关键字)
  • 关键字就是Python中内部已经定义好的标识符
  • 具有特殊的功能和含义
  • 不允许定义和关键字相同的标识符
  • 保留字(关键字)如下:
# 查看方式
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']

  • 变量的命名规则
    目的:规范的命名是为了增强代码的可读性,其他人及自己对代码的识别
    注意:Python中的标识符是严格区分大小写的

【错误示范】

userName = 'xuebi'
print(username)
—— NameError: name 'username' is not defined
# 1. 下划线命名法:
# 原则:每个单词都要小写,单词直接使用_链接
first_name = 'joe'
qq_number = '888888'
# 2. 驼峰式命名法:
# 小驼峰:第一个单词从小写字母开始,后续单词首字母大写
firstName = 'Robbt'
# 大驼峰:每个单词首字母都才去大写的方式
FirstName = 'Juliet'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容