导语
之前的分享中简单的说了运算符合基本的数据类型,这里继续来分享运算符和基本数据类型。并且使用PyCharm进行开发
文章目录
- 回顾
- 运算符
- 基本数据类型
- 数字(整数类型)(int)
- 字符串(str)
- capitalize() 表示首字母大写
- casefold()与lower();
- def center(self, width, fillchar=None)
- def count(self, sub, start=None, end=None)
- def endswith(self, suffix, start=None, end=None)
- def startswith(self, prefix, start=None, end=None)
- def find(self, sub, start=None, end=None)
- def index(self, sub, start=None, end=None)
- def format(self, *args, **kwargs)
- def format_map(self, mapping)
- def isalnum(self, *args, **kwargs)
- 总结
回顾
在之前的操作过程中,提到了运算符分别是+、-、*、/、%、//、** 。下面分析一下其中比较难理解的两个 % 和 //
number = 9%2;
print(number)
number = 9//2;
print(number)
首先来分析一下上面两个运算的结果
做一个简单的分析对于%来讲取到的结果是1,对于// 来讲取到的结果是4
补充
那么除了上面的提到的一些运算符,对于字符串或者其他类型的数据,还有两个操作
in 表示包含在里面
not in 表示不包含在里面
下面就通过字符串操作来测试一下上面这两个操作。下面这段代码表示要给字符串,在其他语言中都有一个概念就是字符的概念,那么在Python中没有字符的概念,将所有引号引起来的东西都称为是字符串。
name = "我是大帅哥"
在Python中使用in,not in表示这个字符串是否在其中。
if "我" in name:
print("OK")
else:
print("ERROR")
结果OK
if "倪辉" in name:
print("OK")
else:
print("ERROR")
结果ERROR
if "我是大" in name:
print("OK")
else:
print("ERROR")
结果OK
if "我大" in name:
print("OK")
else:
print("ERROR")
结果ERROR
通过上面的结果可以得出一个结论,字符串的子序列才能被in 测试包含在字符串中,如果是逆序或者是其他顺序的话则表示不包含。
not in 正好表示相反的操作。
运算符
引入新的数据类型 布尔值(bool)
布尔值,只有两个值真或者假。如果是真的时候表示为TRUE,假的时候用FALSE表示。如下表示一个死循环。
while True:
print("死循环")
if 1==1:
print("1")
else:
print("2")
if True:
print("1")
else:
print("2")
会发现上面两个结果运行的效果是一样的。也就是说IF后面的条件其实它的本质就是一个布尔值。不管最后的结果如何只要是一个TRUE或者是FALSE就可以。通过下面代码可以看到其实1==1 就是一个bool类型的数据。
v = 1==1;
print(type(v))
判断条件
v = 1==1;
print(v);
v = 1>1;
print(v);
v = 1<1;
print(v);
v = 1>=2;
print(v);
v = 3<=1;
print(v);
v = 1!=1;
print(v)
通过上面的判断条件可以知道,其实在任何条件下只要可是一个bool值的条件都可以用来做判断操作,判断操作所能出现的操作结果只能是 TRUE 或者是FALSE
除了上面的判断之外还有一个比较重要的点就是not,如果结果为TRUE,那么not TRUE就表示FALSE,如果结果为FALSE那么not FALSE就表示TRUE。
其实在Python中与其他语言一样有很多的运算符,主要有以下的一些
算数运算符(在之前的博客中总结过)
运算符 | 操作说明 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取模 |
// | 取商 |
** | 幂运算 |
比较运算符
运算符 | 操作说明 |
---|---|
== | 等于 |
!= | 不等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
赋值运算符
运算符 | 操作说明 |
---|---|
= | 赋值运算 |
+= | 加法赋值运算 |
-= | 减法赋值运算 |
*= | 乘法赋值运算 |
/= | 除法赋值运算 |
%= | 取模赋值运算 |
//= | 取商赋值运算 |
**= | 幂赋值运算 |
逻辑运算符
运算符 | 操作说明 |
---|---|
and | 逻辑与 |
or | 逻辑或 |
not | 逻辑非 |
成员运算符
运算符 | 操作说明 |
---|---|
in | 指定序列在其中 |
not in | 指定序列不在其中 |
在介绍Python的运算符的时候并没有介绍到对应的优先级。如果编写了一个复杂的运算操作,那么它的执行顺序就是从左到右,如果想按照自己的意愿去进行操作,那么就要使用到()。
user = "nihui"
pwd ="123"
v = user =="nihui" and pwd == "123" or 1==2 and pwd =="123123" and 1==1
print(v)
结果为TRUE
基本数据类型
数字(整数类型)(int)
在Python中,每一种数据类型都具有自己类型的操作功能,例如不同的角色实现实现不同的功能等,例如
a = 123;
v = a.bit_length()
print(v)
输出结果为7,表示所能使用的字节数有几位。可以看看如下的几个效果
a = 12;
v = a.bit_length();
print(v)
输出结果 4
a = 1;
v = a.bit_length();
print(v)
输出结果 1;
在Python3里面不管有多大的数字都使用int类型来表示,在Python2 中int是由一定的范围的,如果超过这个范围就会变为long(长整型),表示它所表示的范围是很长的。在Python3中所有的整型都是int类型
a = 111;
class int(object):在这个类中所有的操作函数都是表示的内容在所有整型中都是通用的。
int()
在之前的分享中出现过这样的一个问题。字符类型类型转换错误。
number = input("请输入一个数字:");
count = 0;
sum = 0;
while(count<=number):
sum = sum+count;
count=count+1;
print(sum)
运行上面的程序会发现报错了。
请输入一个数字:10
Traceback (most recent call last):
File "/Users/nihui/PycharmProjects/Learn/day10/s2.py", line 68, in <module>
while(count<=number):
TypeError: '<=' not supported between instances of 'int' and 'str'
Process finished with exit code 1
为什么会报错就来解决一下,在输入结束之后做如下的一个操作
number = input("请输入一个数字:");
number = int(number)
count = 0;
sum = 0;
while(count<=number):
sum = sum+count;
count=count+1;
print(sum)
这就是int的作用将字符类型的数据转换为Int类型的数据。下面举一个比较简单的例子
a = "123" ## 字符串
b = int(a); ## 字符类型的数据转换为int类型
b = b+1000;
但是如果是下面这个样子的话是否可以转换呢?答案是否定的。这里转换的时候回出错
a = "123a" ## 字符串
b = int(a); ## 字符类型的数据转换为int类型
b = b+1000;
补充!在Python中可以使用type来判断对应数据类型是什么
注意
num = "0011"
a = int(num,base=2)
print(a)
通过上面这种方式可以设置数据类型转换。
bit_length() 表示当前数字二进制用位来表示
a = 12;
print(a.bit_length())
字符串(str)
任意以引号引起的数据被称为字符串,下面就来看看字符串中有那些操作
capitalize() 表示首字母大写
test = "nihui"
v = test.capitalize()
print(v)
casefold()与lower();
它两个都是用来将字母变为小写,但是casefold()功能更加强大,它对于任意的对应关系都可以转换为小写
test = "niHui"
v1 = test.casefold();
print(v1)
v2 = test.lower();
print(v2)
def center(self, width, fillchar=None)
对于函数操作来说,如果传入的参数带有等号的时候表示这个参数可以传入参数也可以不传入参数,但是如果没有等号的时候表示这个参数是必须传入的。
test = "nihui"
v = test.center(20);
print(v)
输出结果
test = "nihui"
//设置内容并居中显示
//第一个参数表示宽度
//第二个参数表示填充字符
v = test.center(20,"*");
print(v)
def count(self, sub, start=None, end=None)
表示从哪个位置开始查找对应的子字符串,如下,
test = "nihuinihui"
v = test.count("i")
print(v)
上面代码显示的结果是4,也就是表示字符串中出现 i 的次数。
def endswith(self, suffix, start=None, end=None)
表示这个字符串是以什么字符结尾
test = "nihui"
v= test.endswith("ui")
print(v)
def startswith(self, prefix, start=None, end=None)
表示字符串以什么字符串开头
test = "nihui"
v = test.startswith("n")
print(v)
def find(self, sub, start=None, end=None)
表示从开始向后查找,找到第一个匹配的字符串之后,就不再往后查找了。并且返回其存在的位置。如果需要指定位置,表示> 或者是>=
test = "nihuinihui"
v = test.find("ih")
print(v)
def index(self, sub, start=None, end=None)
表示查找对应的位置,但是这个函数如果找不到的话就会报错
test = "nihuinihui"
v = test.index("ui")
print(v)
def format(self, *args, **kwargs)
格式化,将一个字符串中的占位符,替换为指定的值,可以指定多个。
test = "I am {name}"
print(test)
v = test.format(name="nihui")
print(v)
测试结果
利用占位符的方式进行操作,按照顺序进行填充
test = "I am {0} ,age {1}"
v =test.format("nihui",24)
print(v)
def format_map(self, mapping)
与上面函数的作用是一样的,只不过在这里传入参数的时候需要传入一个字典。
test = "I am {name} , age {a}"
v = test.format_map({"name":"nihui","a":24})
print(v)
def isalnum(self, *args, **kwargs)
判断字符串中只是包含数字或者字母,都是字母或者都是数字都可以。
test = "sdfa289_"
v = test.isalnum();
print(v)
总结
到这里字符串的一部分操作已经总结完了,对于基本数据类型字符串的操作还有很多敬请期待。