Python学习日记(二)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-1 06:04   212   0

一、变量的命名:
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']

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP