Python的变量及简单类型
1. 变量
在Python编程中,变量是用来存放值或对像的容器。变量的名称可以自定义,但需遵循一定的规范,否则可能会引发一些错误。Python的变量可以分为数字、字符和对象三种。
1.1 变量的命名及使用
遵守变量的命名规则和命名指南,可以避免不必要的错误,提高代码的可读性和易理解性。其命名规则如下:
(1)变量名只能包含字母、数字和下划线。但是不能以数字打头。例如,定义一个表示姓名的变量,可以定义为:name1、_name、name_1等,但一定不能定义为1_name、1name等。
(2)变量名不能包含空格,但可以用下划线来分割其中的单词。例如,定义一个变量为goods_list 可行,但是不能定义为goods list ,这样可能会引发一些意外的错误。
(3)变量名不能使用Python的关键字和函数,也不能使用Python保留的特殊单词。例如,不能使用print当作变量名。
(4)变量名应简短,并且具有一定含义,让别人一看就知道大概的意思。例如,name比n好;student_name比s_n好;name_length比length_of_person_name好。
(5)变量名中尽量不要使用小写字母i和大写字母O,因为它们很容易被误看为1和0。
注意:虽然Python中变量名可以使用大写字母,但目前大家都习惯用小写字母来命名,因此,尽量也避免使用大写字母来命名变量。
1.2 使用变量时避免命名错误
当我们运行Python程序时,如果程序有错,Python解释器会给我们提供一个traceback。traceback是一条记录,指出了解释器尝试运行代码时,在代码的多少行的什么地方报错了。
例如:
当我们执行以上代码时,就会提示以下错误:
从上图,我们清楚的知道,代码的第2行的‘mesage’ 没有被定义。我们检查一下代码,发现打印的变量mesage 少了一个字母s,不是我们的在第一行定义的变量message。
1.3 字符串
所谓字符串就是一系列字符。在Python中,用引号括起来的都是字符,其中引号 可以是单引号,也可以是双引号。
例如,
1.3.1 字符串的大小写
在实际应用中,有时我们需将字符串的首字母大写,或者字符串所有字母都大写或小写。
例如,我们有一个字符串name = "xiao wei",现在以各种形式打印如下:
(1)字符串name中每个单词的首字母大写,用函数title():
(2)字符串name所有字母大写,用函数upper():
(3) 字符串name所有字母小写,用函数lower():
1.3.2 字符串的拼接
在许多情况下,我们需将几个字符串拼接到一块。
例如,我们分别用不同的变量存储姓和名的字符串,然后将其拼接为完整的姓名。
1.3.3 制表符和换行符的应用
在字符串中,有时我们需要添加一些空白,此时可以使用制表符或换行符实现。
例如,要在字符串中添加制表符,可以使用字符组合\t:
例如,要在字符串中添加换行符,可使用字符组合\n:
1.3.4 删除空白
在程序中,有时额外的空白往往会给人带来迷惑,也可能导致数据无法被显示出来。所以有时删除字符串左右的空白显得尤其重要。我们可以使用函数lstrip(),rstrip(),strip() 。
例如,需要删除字符串中左边的空白,可以使用函数lstrip():
例如,需要删除字符串中右边的空白,可以使用函数rstrip():
例如,需要删除字符串中左右边的空白,可以使用函数strip():
1.3.5 字符串中避免语法错误
语法错误是一种时不时会遇到的错误。程序包中包含非法的Python代码时,就会导致语法错误。
例如,在使用单引号括起来的字符串中,如果包含撇号,就会导致错误。因为Python解释器会将第一个单引号和撇号之间的内容看作一个字符串,而将余下的文本看作是Python代码,从而引发错误。在Python中,字符串既可以用单引号括起来,也可以使用双引号。但是,当字符串中存在撇号时,只能使用双引号。
单引号和双引号的错误使用:
单引号和双引号的正确使用:
1.3.6 Python2 中的print语句
在Python 2 中,print语句的语法跟Python3 有些不同,它 不需要把要打印的内容放到括号中。
例如,我们在Python 2中打印“Hello python 2.7 world!”:
1.3.6 字符串的常规操作
在Python中,我们对字符串的操作使用比较多,现将字符串的常规总结一下:
1 name = "my \tname is {name} and i am {year} old" 2 3 print(name.capitalize()) # 首字母大写 4 print(name.count("y")) # 统计字母出现的次数 5 print(name.center(50,"-")) #居中打印50个字符,不够的在两端补充“-” 6 print(name.endswith("un")) #判断字符串以什么结尾,若结果为真,返回True,否则返回False 7 print(name.expandtabs(tabsize=20)) # 将tab键转换为多少个字符,即打印多个tab字符 8 print(name.find("name")) #返回字符串所在的位置,即下标、索引 9 print(name[name.find(name):9]) #字符串切片10 print(name.format(name='yun',year=26)) # 字符串格式化输出一,用等号赋值11 print(name.format_map({ 'name':'yun','year':'26'})) # 字符串格式化输出,用字典赋值12 print(name.index("name")) # 根据某字符查找其在字符串中的索引,即下标13 print(name.isalnum()) # 是否包含阿拉伯数据,单字符中不能有特殊符号14 print('abc123'.isalnum())15 print('abc123\t'.isalnum()) # 是否包含阿拉伯数据,单字符中不能有特殊符号16 print('abA'.isdecimal()) # 判断是否为数字,是返回True,否则返回False17 print('123'.isdecimal())18 print('1A'.isdigit()) # 判断是不是数字19 print('a1A'.isidentifier()) #判断是不是一个合法的标识符20 print('s 1A'.isnumeric()) #判断是不是一个数字21 print('33'.isnumeric())22 print('My Name Is'.istitle()) #判断首字母是否大写23 print('my Name Is'.istitle()) #判断首字母是否大写24 print('My name is'.isprintable()) # tty file,drive file 基本不可以打印25 print('My Name Is'.isupper()) # 判断是否大写26 print('AAAAA'.isupper()) # 判断是否大写27 print('+'.join(['a','b','c'])) # 用什么连接起来28 print(''.join(['a','b','c'])) # 用什么连接起来29 print(','.join(['a','b','c'])) # 用什么连接起来30 print(name.ljust(50,'*')) # 打印长度为50的字符串,不够在右边用”*“填充31 print(name.rjust(50,'-'))# 打印长度为50的字符串,不够在左边用”-“填充32 print('Yun'.lower()) # 转为小写33 print('Yun'.upper()) # 转为大写34 print('\nYun')35 print('\nYun'.lstrip()) # 去右边的空格36 print('Yun\n'.rstrip()) # 去左边的空格37 print('\nYun\n'.strip()) # 去掉左右空格38 print(' Yun\n'.strip())39 p = str.maketrans("abcdef",'123456') # 对应替换 ,前后个数得一样多40 print("Yun Qtian".translate(p))41 print('Yun'.replace('Y','y')) # 字符替换42 print('Yun Qtian'.rfind('t')) # 从左向右,找到该字符所在的位置,并返回该位置43 print('Yun Qtian'.split('Q')) # 以某字符为分割符,分成多个元素44 print('Yun Qtian'.split(' ')) # 以某字符为分割符,分成多个元素45 print('1+2+3+4'.split('+'))46 print('1+2\n+3+4'.splitlines()) # 以空格分割47 print('Yun Qtian'.swapcase()) # 大小写互换48 print('yun qtian'.title()) # 首字母大写49 print('yun qtian'.zfill(50)) # 打印50字符,不够的在左边用0填充
1.4 数字
在编程中,经常使用数字来记录游戏得分、便是可视化数据、存储Web应用信息等。
1.4.1 整数
在32位系统上,整数的位数为32位,取值范围为-2**31~2**31-1,即 -2147483648 ~ 2147483647。
在64位系统上,整数的位数为64位,取值范围为:-2**63~2**63-1,即 -9223372036854775808~9223372036854775807 。
在Python 2.2 开始,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今Python中不需要用字母L来标识数据是否为long(长整型)。所以 在Python中,输入的整数都会被默认为字符型。
例如,我们输入a的值26,b的值12,我们需要用input()来输入26和12,并将其相加。
(1)我们直接输入a和b的值,不做认为出来,其结果如下:
从上面的运行结果可知,并没有实现我们想要的a和b相加,而是将其拼接到一起,下面我们来看看其类型究竟是什么。
(2)用type()函数查看a和b的类型:
从上图可知,Python解释器默认将我们输入的a和b的整数当做了字符,所有我们打印a加b的时候,就被当做字符串拼接。那么我们该如何实现a和b相加呢?
(3)用int()函数强行转型。如下图所示:
在Python中,可对整数执行加(+)、减(-)、乘(*)、除(/)运算等,并且在终端回话中,Python直接返回运算结果。
在Python中,使用两个乘号表示乘方运算。
Python还支持运算次序,因此可以在同一个表达式中使用多种运算,还可以使用括号来修改运算次序。
1.4.2 浮点数
python中将带小数点的数字都称为浮点数。你只需输入你想要使用的数字即可,Python通常都会按你所期望的方式处理它们:
注意:Python运算结果中包含的小数位数可能不是确认的,这是所有语言都存在的问题,没必要担心。就现在而言,暂时忽略多余的小数位数即可。实际运用中我们再根际实际需要对其进行处理。
1.4.3 使用函数 str() 避免类型错误
在Python中,当你输入的值是整数(int)的变量,Python不知道这个正式是数值,还是字符。因此,可以调用str()函数,将非字符串值表示为字符串:
例如,错误的使用:
例如,正式使用:
1.4.4 Python 2 中的整数
在Python 2 中,将两个整数相除得到的结果稍有不同。整数相除的结果只包含整数部分,不进行四舍五入,且小数部分直接删除。若要避免这种情况,必须保证至少有一个操作数是浮点数,这样结果也将是浮点数。
例如:
1.5 注释
在大多数编程语言中,注释都是一项很有用的功能。代码中,一个好的注释,可以帮忙你更好的理解程序功能,也能有利于排查问题,方便后期的维护。
1.5.1 如何编写注释
在Python中,单行注释用井号(#)标识,井号后面的内容都会被Python解释器忽略。多行注释前后分别用3个单引号括起来。
例如,单行注释:
例如,多行注释:
1.5.2 该编写什么样的注释
编写注释的主要目的是描述代码要做什么,以及是如何做的。在开发项目期间,我们应该对各个部分如何协调工作了如指掌,但过一段时间后,有一些细节我们就可能记不清楚了。很多情况请,我们都是通过看代码的逻辑来了解程序的实现功能及业务逻辑。此时,如果代码没有注释,代码看起来就非常费劲。相反,一个清晰的代码注释,可以帮助你快说理清代码的来龙去脉,大大节省了不必要浪费的时间。
因此,在编程过程中要养成在代码中编写清晰、简洁的注释的良好习惯。