目录
一.类型的意义
二.动态静态类型
三.程序的输入和输出
输出:
输入:
四.运算符
算术运算符
%
**
//
关系运算符
一.类型的意义
1.区别
- 不同的类型占据不同的内存,单位是字节
- int 默认是4个字节,根据需要动态扩容
- float固定八个字节,因为在python中float是双精度浮点数
- bool占据一个字节
- str字符串类型。python中是没有字符类型的,字节不确定
2.操作
不同的类型可以进行的操作也是不同的。
- int / float可以 + - * / 但是不能用len求长度
- str可以+ ,不能- * /
二.动态静态类型
动态类型的特性 ,程序运行过程中变量的类型是可以发生改变的
a = 10
print(type(a))
a = "hello world"
print(type(a))
变量的类型是由变量赋值时的值所决定的。
静态类型
变量在定义好类型后变量的类型始终不变,比如在C/C++/Java中
一个编程语言,是否是动态类型,只取决于运行时,类型是否发生改变,不取决于变量的定义时候是否声明类型
python中也是可以写类型声明的,但是类型还是可以改变的。
a: int = 10
print(a)
只需要在变量的后面加上:和变量的类型。这样方便程序员进行开发,但是只是锦上添花,可写可不写。
虽然动态类型更加的灵活方便,但是更加容易出错,在大型程序的协作开发中,还是静态类型更好。
三.程序的输入和输出
计算机与用户的交互中,会用到控制台,windows系统自带的cmd程序就是控制台,pycharm也自带了控制台,但是我们日常生活中我们几乎不会用到控制台,我们更加常用的是图形化界面,这样更加方便。
输出:
输出就是我们经常使用的print函数进行的
a = 10
print("a = 10")
格式化字符串 : f" { } "也就是f + string此时就可以使用大括号在其中嵌入表达式或者变量。
a = 10
print(f'a = { a }')
输入:
输入就需要我们使用input函数
num = input("请输入一个数字:")
我们在控制台输入值,这个值就会被存在num变量中。
需要注意的是input函数的返回值的类型并不是由你输入的值所决定的,而是字符串类型。
我们根据需要对输入的值进行转换,这时候我们就需要用到类型转换函数。
例题:输入两个值,并求其和。
这里的int()函数就可以将其参数转化为int类型,同理还由float()函数,str()函数。这些都是类型转化函数。
注:input函数其实还自带打印功能,它的参数中加入字符串,就会先打印这个字符串然后再等待用户输入,这个参数是可写可不写的。
四.运算符
运算符也叫操作符,运算符有算术,关系,逻辑,赋值等等运算符。
算术运算符
+ - * / % ** //这些均是算术运算符
先乘方,再乘除,后加减。
大部分操作符都是具有优先级和结合性。而()的优先级非常的高,它会在其他操作符之前运算,所以我们可以使用()来改变操作符的优先级。使其来达到我们所期望的运行顺序。
比如我们如果想要先进行1 + 2但是*的优先级明显更高,所以使用括号就可以使1 + 2先进行运算。
/ 在python中0是不能作为除数的。
虽然在编译阶段不会报错,因为语法上是绝对正确的。但是当程序运行到这一行的时候,就会报错。
这种运行时出现的错误叫做抛出异常。
%
这个符号和/很类似,/得到的是商,而%得到的是余数。
print(10 % 3)
得到结果就是1.
**
**是乘方运算符,在前面的文章中也介绍过。
print(2 ** 3)
它的左操作数就是底数,右操作数就是指数,这里计算的就是2的三次方。
//
这也是个除法,只不过是地板除法, 这种除法,与C语言种的整数除法类似,只会保留整数部分(正数)负数的话会补齐。
print(-3 // 4)
如果是单纯的除法得到的结果是-0.75,而地板除法中负数会自动补齐整数,得到的结果就是-1.
关系运算符
关系运算符顾名思义就是用于比较两个操作数的关系的。关系运算符对应的表达式值是bool类型的。
关系运算符有很多种比如 > < >= <= ==
a = 10
b = 20
print(a < b)
很明显a是小于b的,所以这里会打印True
==就是我们数学中的等号,为了与赋值号=进行区分所以用了两个=,这个是用于判断两边的表达式是否相同的。
关系运算符除了比较数字,字符串也是可以比较的。
而字符串的比较是遵循ASCII值的进行比较的,这里不过多叙述ASCII值
字符串的比较规则可以简化为遵循字典序进行比较
比如‘a’ < 'b' < 'c'.......这样一直进行下去直到遇到'z'
两个字符串会首先比较第一个字符,如果相同,就比较下一对字符,依次进行下去直到遇到不同,或者字符串结尾了
print('abc' > 'abde')
很明显在比较第三个字符的时候c 小于d,所以左边的字符串小于右边的字符串,打印False。
同理这里的字符串比较方式strcmp函数的比较方式一样。这里的字符串比较针对中文是没有意义的,除非用于比较是否相等。