|
一、变量的命名: 1、标识符:开发代码的过程中为变量或函数所起的名称; 2、定义方式: (1)使用赋值语句; (2)赋值语句的左侧的标识符就是变量的名称; -------------------------------- 3、变量命名字符构成:见名知知义; (1)只能由字母、数字、下划线组成; (2)不能以数字开头; (3)不能与关键字重名。 -------------------------------- 4、变量命名规则: 命名规则是为了提高代码可读性而使用惯例; 在定义变量时,为了保证代码格式,在“=”的左右应该各保留一个空格; (1)规则一: a、在定义变量时,名称如果由多个单词组成的,右以按照: b、每个单词都应使用小写,且彼此之间以下划线分割; student_name (2)规则二:驼峰命名法 A、大驼峰:StudentName B、小驼峰:studentName -------------------------------- 4、关键字: (1)关键字是在程序开发之前已经由Python内部定义好标识符; (2)关键字具有特殊的功能及含义; 注:开发者不允许使用与关键字相同的名字的标识符。 (3)关键字的查看方法: >>> import keyword >>> print(keyword.kwlist) -------------------------------- 二、变量的基本使用: 1、程序与变量的关系: 程序是用来处理数据的,变量是用来存储数据的。 2、变量的声明: (1)声明:每个变量在使用前必须赋值,变量赋值以后,该变量才能被创建; (2)格式:变量名 = 值 -------------------------------- 3、调试: (1)定义变量:student_name、student_tel并输出其值。 -------------------------------- 4、本质:声明变量即为变量赋值,在内存中为其分配存储空间; 5、安例 案例一: (1)ipython交互式环境中,定义qq_number及qq_password,交将其值输出; -------------------------------- 案例二: (1)python程序中,定义qq_number及qq_password,交将其值输出; -------------------------------- 小结: Python交互模式与Python程序中输出变量内容的区别; (1)Python交互模式,可以通过变量名称直接输出其值; (2)Python程序中,不能直接使用变量名将其值输出,而要使用解释器函数print()输出到控制台。; -------------------------------- 案例三:超市购物 水果1.5元每斤,购买了2.5斤,并计算同款金额; 总结:变量赋值 (1)其值可以来自具体的数据,如数值、字符串等; (2)其值可以是函数的返回值,如:input()解释器函数; (3)其值可以是表达式计算后的结果。 -------------------------------- 6、pycharm使用技巧: (1)多窗口打开不同代码的情况,第一次运行,当前窗口代码时,在当前右击-->Run 项目名称; (2)关闭当前代码窗口以外的其它所有代码窗口,当前窗口标题右击-->Close Others; (3)调试模式使用: A、在要调试的代码左侧单击生成断点; B、点击工具栏,调试按钮; C、点击控制台窗口“Step Over(F8)”按钮; D、观察代码窗口及控制台窗口的变化: a、当前调试代码行反向显示高亮显示; b、代码窗口左侧被调试行右侧变化; c、控制台窗口输出信息变化; d、程序调试运行完成后以上三个窗口的变化。 -------------------------------- (4)单步调试模式运行超市购物代码: -------------------------------- 案例一: price = 1.5 weight = 2.5 monkey = price * weight print(monkey) -------------------------------- 案例二: price = 1.5 weight = 2.5 monkey = price * weight monkey = monkey-1 print(monkey) -------------------------------- 总结: (1)当前代码结构中:变量名只有在第一次使用时才是定义变量; (2)变量名在同一代码结构中在次出现时,不是定义新的变量而是直接使用之前定义过的变量。 (3)Python中变量值是可以变化的。 -------------------------------- 三、变量的类型: 1、在内存中定义一个变量过程: 变量的名称 = 变量保存的数据 变量存储数据的类型 变量的地址 2、演练案例:个人信息 (1)需求: A、定义变量保存学生的个人信息; B、姓名:张三; C、年龄:20; D、性别:男; E、身高:165cm; F、体重:65kg。 (2)调试方式:单步调试,确认变量中保存的数据类型; # Python中定义变量时,不需要指定数据类型 # 在程序运行时Python解释器会根据=右侧的值自动推导出变量数据类型; # str表示该变量字符串类型 Stu_name = "张三" # int表示该变量为整数类型; stu_age = 20 # bool表示该变量是一个布尔类型,只有真:True与假:False两个值,且区分大小写; gender = True # float表示该变量是一个小数类型,即浮点数; height = 1.60 # 以65.0及65两种情况赋值观察变量weight的类型变化。 weight = 65 print(stu_age) 案例小结:四种数据类型; 3、pycharm扩展: (1)调试区域 A、F9:Resume Player即继续按钮:继续执行程序,即将当前行所在位置及后面的所有代码一次执行完成,exit code 0; B、Shift+F9:调试按钮,进入调试模式; C、Ctrl+F2:Stop 'step'即停止按钮:在当前位置结束调试,直接结束其后程序代码的执行,exit code -1; (2)继续按钮与停止按钮的作用: A、执行二者中的任何一种操作,Debugger控制台区域,都会被清空,代码编辑窗口中表示当前调试所在位置的高度显示条会消失; B、其操作本质为结束,之前未结束的单步调试,以释放被占用的内存区域。 4、变量类型: (1)数字型: A、整型(int):python2.0存在int与long两种,python3.0中整型只有int一种类型; type(2**32) type(2**64)查看返回值,均为int, Python语言数学运算能力极强:如2**1000 B、浮点型(float); C、布尔型(bool):非0即真; D、复数型(complex):主要用于科学计算,如平面场问题、波动问题、电容电感等; (2)非数字类型: A、字符串(str); B、列表(list); C、元组(tuple); D、字典(dict)。 5、查看变量数据类型:type()函数,ipython环境中常用的函数; 四、不同类型变量之间的计算: 1、数字型变量之间可直接进行计算,且会完成结果的自动类型转换; 2、布尔型变量参与自述运算时,遵循如下规则: (1)True值会自动转换为数字1; (2)False值会自动转换为数字0。 练习案例: # 1、定义一个int型变量 var_int = 10 # 2、定义一个float型变量 var_float = 10.5 # 3、定义一个布尔型变量 var_bool = True # 4、int型与float类型运算 result_float = var_int + var_float # 5、int型与bool型运算 result_int = var_int + var_bool # 6、float型与bool型运算 result_float_bool = var_float + var_bool print(result_int,result_float,result_float_bool) 3、字符串型变量之间的+运算:拼接; 4、字符串变量可以与整型变量或整数进行*运算; 5、字符串与数字型变量除上述情况不能进行运算; 五、变量的输入: 1、定义:通过代码获取用户通过键盘输入的信息; 2、场景:应用于采集外部数据输入或采集的情况,如:超市收款、ATM提款机输入密码及金额等; 3、实现:通过函数实现,如解释器函数input()。 4、函数: (1)定义:一个预先编写完成用于完成特定功能,可以通过函数名称直接使用的功能代码块,函数可以是Python语言预定义的,也可以是用户自定义的。 (2)示例:解释器函数print()/input()/type()可直接调用而无需关心内部细节。 5、案例:ATM提款密码,测试input()函数的返回值,ipython环境下: (1)input("输入密码:"),返回值直接输出; (2)user_password = input("输入密码:"),函数返回值存储于变量user_password中,并输出变量值。 6、input()函数格式: 字符串变量 = input("提示信息:") 注:其返回值数据类型为字符串类型 7、类型转换函数: (1)int(x):将字符串x转换为整数类型;“1002” (2)float(x):将字符串x转换为浮点类型:‘3.1415926’、‘1002’ (3)案例: ipython3交互环境测试 A、int("300") B、float("150.50") Python程序:超市购物增强,从键盘输入数字,进行字符串到数字类型转换后存储于变量中。 -------------------------------- 超市购物增强优化代码:使用一个变量存储价格; price = float(input("请输入商品价格:")) -------------------------------- print(float(input("请输入商品的单价:")) * float(input("请输入商品的重量:"))) 六、变量的格式化输出 1、print()函数格式化输出定义: print()函数可以将信息输出至控制台,如果在输出字符串说明信息的同时,将相应变量中的信息一起输出到控制台,就是格式化输出; 2、实现: 使用格式化操作符%,专门处理字符串的格式; 包含%的字符串,称为格式化字符串; %与不同的字符连用,就可以在字符串中输出所对应的不同格式的变量值。 3、格式化字符串及其含义: %s:在字符串中所在的位置上插入字符串类型的变量值; %d:在字符串中所在的位置上输出有符号十进制整数,默认小数点后输出6位,%06d表示输出整数值显示的位数,不足的倍数以0填充,如果整数的实际位数是超出六位,则显示全部长度; %f:表示在字符串中所在的位置上输出浮点数,%6.02f表示整个小数的长度为6小数点后只显示两位小数,不足的部分整数位左补空格,小数位右补0; %%:在字符串中所在的位置上输出%; 4、print()函数格式化输出的语法格式: print("格式化字符串" % 变量1) print("格式化字符串" % (变量1,变量2,......)) 5、练习案例: # 定义一个name变量,其输出“大家好,我是老刘。” name = "曹操" print("大家好,我是%s。" % name ) # 定义一个student_no,输出”学号是0000001“ student_no = int(input("请输入您的学号:")) print("学号是%08d" % student_no) # 定义一个小数,数据占比10%,如:0.9 90% var_float = 0.9 print("您综合学科优秀率为%.00f%%" % (var_float*100)) # 定义单位 price = float(input("请输入商品的单价:")) # 定义重量 weight = float(input("请输入商品的重量:")) # 计算应付金额 money = price * weight # 输出应付金额 print("水果单价%.02f元/斤,共计%.02f斤,需支付%.02f元" % (price, weight, money))
七、字符串操作: 1、截取字符串语法: (1)每次截取一个字符:下标法 >>> str1 = "abcdefg" >>> str1 'abcdefg' >>> str1[0] 'a' >>> str1[3] 'd' >>> 注意: 字符串每一个字符都一个数字,用于标记当前字符在字符串的位置,这个数字称字符的下标。 通过字符串名称加下标可以访问字符串的任意一个元素,其格式如下: 字符串变量名[要访问的字符的下标] 获取字符串长度的函数:len(字符串变量) >>> str1 'china' >>> len(str1) 5 (2)遍历字符串中的每一个字符: 需求:定义字符串str1,其值为“china”,使其按如下方式输出 c h i n a 代码示例: # 定义一个字符串str1 str1 = "china" print("字符串的原始为:%s" % str1) # 进行遍历字符串,提取每一个元素; # 循环变量初始化 print("开始切割逐行输出字符串") i = 0 # len(str1)表示字符串的长度,字符串最后一个字符的下标值比字符长度小1 while i < len(str1): print(str1[i]) i = i + 1
需求练习:输入一个字符串变量,其值为unsuccessful,只输出success这个部分。 str1 = "unsuccessful" i = 2 while i < len(str1) - 3: # end=''表示取消每次循环输出一个字符后的换行操作 print(str1[i],end='') i += 1
2、字符串的切片操作: (1)定义:即指通过下标截取一个字符中指定部分的内容; (2)格式:字符串数据[起始值:结束值:步长值] (3)案例:定义串,其值为'abcdefg' A、从中截取'ab' >>> str1 = 'abcdefg' >>> str1[0:2] 'ab' >>> str1[:2] 'ab' B、从中截取'cde' >>> str1[2:5] 'cde' C、从中截取'efg' >>> str1[:-3] 'abcd' >>> str1[-3:] 'efg' D、从中截取'aceg' >>> str1[::2] 'aceg' E、从中截取'bdf' >>> str1[1::2] 'bdf' F、从中截取'adg' >>> str1[::3] 'adg' G、将字符串反转显示str1,输出gfedcba >>> str1[::-1] 'gfedcba' >>> str1[-1:-8:-1] 'gfedcba' 注意:切分方向问题: (1)将一个字符从左向右切片时,该字符的下标0到len(str-1),结束下标值=起始值+截取个数 (2)将一个字符从右向左切片时,该字符的下标-1到-len(str)-1,结束下标值=起始值-截取个数 (3)步长值: A、控制切分进行方向,以起始值为基准,下标的变化方向: a、步长值为正数,则下标向右递增; b、步长值为负数,则下标向左递减; B、控制切片字符,默认值为1,即连续进行切分,大于1时按指定的值进行间隔性切片。 3、遍历字符串: (1)方式:循环 (2)示例: **********************************************************************************************************
打印自己的学生卡 ******************************
姓名:张三 性别:女 电话:13339******** 专业:软件开发 ****************************** print()函数操作字符串
需求:收银软件:某人去超市买水,1.5元/瓶,10瓶,统计并输出该人应支付多少钱?
升级: 您购买了10瓶水,每瓶1.5元,共计15元。
指定整数的输出宽度,如果整数的长度小于指定的输出宽度,左侧高位补0填充,如果整数的实际长度大于指定的宽度,以整数的实际长度输出。
In [35]: num = 200
In [36]: print("num变量的值是%d" % num) num变量的值是200
In [37]: print("我的学号是%d" % num) 我的学号是200
In [38]: print("我的学号是%08d" % num) 我的学号是00000200
In [39]: num = 123456789
In [40]: print("我的学号是%08d" % num) 我的学号是123456789
In [41]:
关于小数据精度控制:小数位数; In [41]: flo = 3.14 (1)进行浮点数格式化输出时,默认小数据部分保留六位 In [42]: print("圆周率的值为:%f" % flo) 圆周率的值为:3.140000 (2)%.2f:只有点的右侧有数时,表示小数的部分的位数,其余原样输出; In [43]: print("圆周率的值为:%.2f" % flo) (3)%8.2f:左侧的数表示小数整体输出宽度,右侧的数据表示小数位数; In [44]: print("圆周率的值为:%8.2f" % flo) 圆周率的值为: 3.14 (4)%6.f:只左侧有数字的时候,对小数进行截断操作,并且数字表示整数的输出宽度。 In [45]: print("圆周率的值为:%6.f" % flo) 圆周率的值为: 3 In [49]: print("圆周率的值为:%4.f" % flo) 圆周率的值为: 3
In [50]: print("圆周率的值为:%6.f" % flo) 圆周率的值为: 3 In [51]: pi = 3.14
In [52]: print("圆周率的值:%6.2f" % pi) 圆周率的值: 3.14
In [53]: print("圆周率的值:%.3f" % pi) 圆周率的值:3.140
In [54]: print("圆周率的值:%5.f" % pi) 圆周率的值: 3
In [21]: v1 = 100
In [22]: v2 = "chian"
In [23]: v3 = 40.5
In [25]: print("中公{}教{}育{}实训".format(v1,v2,v3)) 中公100教chian育40.5实训
In [19]: print("中公{0}教育{1}威海{2}实训{3}".format(v ...: 1,r,str1,flo1)) 中公100教育5威海威海实训31.5 说明: 1、在格式化字符串中使用{}做为格式化符替代原来%s; 2、如果在{}内部指定了数字序号,从左侧以0开始依次递增标记; 3、此方式可以插入任意类型的数据到指定的格式化字符串中。
In [58]: str1 = "china"
In [59]: for char in str1: ...: print("当前字母是:{}".format(char)) ...: 当前字母是:c 当前字母是:h 当前字母是:i 当前字母是:n 当前字母是:a
In [60]: # 定义一个字符“china,同行输出,tab间隔。
In [61]:
关键点:print()函数中end="" In [62]: print("chain",end="\n") chain
In [63]: print("chain",end="")
# 需求:在同一行输出字符,并字符间以tab间隔; str1 = "chain"
需求: c -----h -----a -----i -----n ----- 遍历结束
for i in str1:
print(i, end="\t") # end=""参数用于控制所有内容输出完成后,行尾光标定位,默认值为“\n” print("-"*5, end="")
print("\n遍历结束")
In [63]: print("chain",end="") chain In [64]: str1 = "hello word hello world hell weihai"
In [65]: # 查看'weihua'在str1是否存在及开始位置。
In [66]: str1.find("weihai") Out[66]: 28
In [67]: print(str1.find("weihai")) 28
In [68]: str1.find("china") Out[68]: -1
In [69]: # index查看"weihai"在str1中的是否存在及开始位 ...: 置
In [70]: str1 Out[70]: 'hello word hello world hell weihai'
In [71]: str1.index("weihai") Out[71]: 28
In [72]: str1.index("china") ------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-72-7517cc53a232> in <module>() ----> 1 str1.index("china")
ValueError: substring not found
In [73]: # count()统计某个子串在字符串中出现的次。
In [75]: str1 Out[75]: 'hello word hello world hell weihai'
In [76]: str1.count("hello") Out[76]: 2
In [77]: str1.count("l",15,len(str1)) Out[77]: 3
In [78]: # repalce()替换字符串指定的内容,并且可以指定 ...: 目标子串被替换的次数。
In [79]: str1 Out[79]: 'hello word hello world hell weihai'
In [80]: str1.replace(" ","-") Out[80]: 'hello-word-hello-world-hell-weihai'
In [81]: str1.replace("-","*",1) Out[81]: 'hello word hello world hell weihai'
In [82]: str1.replace(" ","-") Out[82]: 'hello-word-hello-world-hell-weihai'
In [83]: str1 Out[83]: 'hello word hello world hell weihai'
In [84]: str2 = str1.replace(" ","-")
In [85]: str2 Out[85]: 'hello-word-hello-world-hell-weihai'
In [87]: str2.replace("-","*",1) Out[87]: 'hello*word-hello-world-hell-weihai'
In [91]: str1 Out[91]: 'hello word hello world hell weihai'
In [92]: str1.split(" ") Out[92]: ['hello', 'word', 'hello', 'world', 'hell', 'weihai']
In [93]: len(str1.split(" ")) Out[93]: 6
In [94]: str1 Out[94]: 'hello word hello world hell weihai'
In [95]: str1.split(" ",3) Out[95]: ['hello', 'word', 'hello', 'world hell weihai'] |