数据类型

image.png

最常用的数据类型有三种——字符串(str)、整数(int)和浮点数(float)

字符串str:用引号括起来的文本,不论是 ‘富贵’ 还是’1+2’都是字符串。

整数型int:没有小数点的数字,比如 30,-30

浮点型float:带小数点的数字,比如 30.0,-30.0 ,在科学计数法中,会试用E(或e)来表示10的指数,如e2表示102

3.6e2 = 3.610 = 360.0 3.6e-2 = 3.610= 0.036

布尔值bool:True、False,这里注意他们的写法,如果写成true或TRUE都是错误的,必须是首字母大写。如果不确定一些值的类型可以使用 print(bool(0)) 进行查看。下面给出一些常见的布尔类型:

  1. bool(0) # 整数0被转化为Flase
  2. bool(1) # 非0整数为true
  3. bool('') #(空字符串)被转化为Flase
  4. bool(' ') # 其他非空字符串被转化为true
  5. bool([]) # 空列表被转化为Flase
  6. bool({}) # 空字典被转化为Flase
  7. bool("False") # 其他非空字符串被转化为true
  8. bool(None) # 和0一样,是Flase,但是一定是开头大写

另外浮点数的计算会出现误差,因为计算机在运行计算的时候,会先把计算数值转化成二进制(0和1组合),然后再进行计算然后取整,所以计算时候就会有小尾巴。如何对十进制转二进制有兴趣,可以点击查看

如果你不知道一个值属于什么类型,我们可以用 print(type(“x”)) 可以查询变量的数据类型,比如:

  1. print(type('3'))
  2. print(type(3))
  3. print(type(3.0))
  4. 结果是:
  5. <class 'str'>
  6. <class 'int'>
  7. <class 'float'>

我们知道了数据类型之后,我们该如何进行计算呢?

数学计算

python的计算优先级与平时一样(先乘除后加减,先括号内后括号外)

  1. #常规的四则运算
  2. print(10+3.0) # 结果13.0,当有浮点数参与,结果是浮点数
  3. print(10-3.0) # 结果7.0
  4. print(10*3)
  5. print(10/2) 结果 5.0 # 除法结果总是浮点数
  6. print(0.1+0.2-0.3) #结果是 5.551115123125783e-17 这就是上面说的小尾巴
  7. # //和%的结果永远是整数
  8. print(5//2) #整除 结果是2,不四舍五入,只留整数部分。
  9. print(5 % 2) #取余数,返回是1,看不懂怎么计算可以看下面的详解
  10. print(4 % 2) #取余数,没有余数返回值0,可以%2是否为0判断奇偶数
  11. print(5**2) #幂,返回是5的2次幂 结果25
  12. print(round(2.9)) #四舍五入 结果是3
  13. print(abs(-2.9)) #取绝对值,结果是2.9
  14. # 特殊运算符的先后顺序(从左到右)**、* / % //、+ -
  15. print(20.5 % 2**3//4)
  16. =20.5%8//4
  17. =4.5//4
  18. =1
  19. # 复合赋值运算 + - * / %
  20. a =a+5 等于 a+=5

小技巧:可以通过 help(abs) 来获取用法.

函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:

  1. a = abs # 变量a指向abs函数
  2. print(a(-1)) # 所以也可以通过a调用abs函数
  3. f = float
  4. print(f(666)) # 结果666.0

取余问题(%)详解:https://cloud.tencent.com/developer/article/1737074?from=information.detail.python%20%E5%8F%96%E4%BD%99%E6%95%B0

数据拼接

数据的拼接使用的是加号,并且它们都必须是字符串类型。

不同类型的数据不能直接拼接,比如 ‘我’+3+’岁’ 就是错误的表达,必须把3变为字符串或者使用转义字符。比如下面第4行,ac是字符串,b是整数,所以需要str()转换为字符串进行拼接。

  1. a = '我'
  2. b = 3
  3. c = '岁'
  4. print(a+str(b)+c)
  5. # _____________________________________________________
  6. # 下面是同样实现空格效果的两种写法:
  7. first = "jiao"
  8. last = "chenglong"
  9. # 第一种:常规的空格
  10. full1 = first + " " + last
  11. # 第二种:使用格式化字符串f实现
  12. full2 = f"{first} {last}"
  13. # 打印出来
  14. print(full1)
  15. print(full2)


数据转换

前面我们已经介绍了数据的三种类型,所以现在应该清楚他们的缩写,比如字符串 str,整数 int ,浮点数 float 。那他们能否互转呢?答案是可以的,但是也有一些限制。

str() 转换成字符串

str()函数,不管这个数据是中文、数字、标点还是火星文,只要放到括号里,就能成为字符串类型。

  1. print(str(number))
  2. print('007')
  3. #也可以用引号转换
  4. number = '007'
  5. #他们两个结果是一样的

int() 转换成整数
**
int()函数,要注意整数是进行直接取整,小数是去掉小数末尾(没有四舍五入),但是对于文字类和小数字符串类型是无法转化的。

注意:int()函数无法转换小数形式的字符串,只能通过浮点数转然后在用int。

  1. #整数类字符串 结果是3,请记住只有整数类字符串可以转
  2. print(int('3'))
  3. #浮点数 结果是3,直接去掉尾数而非四舍五入
  4. print(int(3.8))
  5. #字符串和小数类字符串无法转换
  6. print(int('富贵'))
  7. print(int('3.6'))
  8. #小数类字符串正确的转化方法:先转float,然后在使用int,结果是3
  9. print(int(float('3.6')))

float() 转换成浮点数
**
请注意文字类字符串是不可能转换成浮点数的。

  1. #浮点数字符串 结果是3.0和3.5
  2. print(float('3'))
  3. print(float('3.5'))
  4. #文字类字符串无法转换
  5. print(float('富贵'))

**
来一道烧脑题吧:(根据下面前三行的变量,写出要的结果。)}试着我们上面学过的拼接和类型转换,完成下面的习题。要求答案是 “人工智障说:3.8+1等于4 ”。

我们来分解一下,因为‘人工智障说:3.8+1等于’这个已经有了是c赋值的,我们只需要拼接就行,关键是4是怎么来的,(3.8+1或者3,8取整+1)然后取整对不对,因为’3.8’是小数类字符串不能取整(上个例子第9行),所以只能用浮点数3.8+1进行取整,这时候答案是4,但又考虑到和c的文字进行拼接,所以又转换成字符串。

  1. a = '3.8'
  2. b = 1
  3. c = '人工智障说:3.8+1等于'
  4. #下面是答案,先不要看,试着自己想想。
  5. print(c+str(int(float(a)+b)))

这里遗忘最多的就是 ‘3.8’ 看起来是浮点数,其实是字符串,并且只能转换为浮点数。

格式化字符串 f “…”

F-string(Python 3.6+)

适用于3.6以上的版本

  1. age = 36
  2. result = f"小明今年{age}岁了!"
  3. print(result)

format

  1. age = 36
  2. name = '小明'
  3. result = "{}今年{}岁了!".format(name, age) # 不给值,会自动按照顺序填入
  4. print(result) # 小明今年36岁了!
  5. age = 36
  6. name = '小明'
  7. result = "{1}今年{0}岁了!".format(agename) # 给值,会按照填的顺序填入
  8. print(result) # 小明今年36岁了!

%(已弃用)

它包含 %s 字符串显示 、%f 浮点数显示、%d 整数显示(注意哦,整数不是%i)。因为没有上面的灵活,并且会让代码看起来很乱,已经不用了。只做了解,看到别人这样的写法知道什么意思。

用法都是先占位后给变量,如果是多个,用括号并且一一对应的关系排列。

  1. age = 36
  2. name = '小明'
  3. print('小明今年%d岁了!' % age)
  4. print('%s今年%d岁了!' % (name, age))

格式化数字 {pi:.2f}

image.png
点击可以查看图片来源

简化版

  1. pi = 3.1415926
  2. # F-string(Python 3.6+)
  3. # 冒号之后跟小数点,4代表保留四位,f表示float浮点数,这里得出的结果是会四舍五入
  4. result = f"圆周率{pi:.4f}是一个无限循环小数"
  5. print(result) # 圆周率3.1416是一个无限循环小数
  6. # format
  7. result = "圆周率{:.2f}是一个无限循环小数".format(pi)
  8. print(result) # 圆周率3.14是一个无限循环小数

完整版

  1. # 以下几个参数必须在精度(小数点)之前设置
  2. # 【宽度】设置两段的间距
  3. pi = 3.1415926
  4. result = f"圆周率{pi:50.4f}是一个无限循环小数"
  5. print('\n')
  6. print(result)
  7. # 【符号】有 + -两种符号,没什么用
  8. pi = 3.1415926
  9. result = f"圆周率{pi:+20.4f}是一个无限循环小数"
  10. print(result)
  11. pi = 3.1415926
  12. result = f"圆周率{pi:-20.4f}是一个无限循环小数"
  13. print(result)
  14. # 【对齐】,默认向右对齐:左对齐(<)右对齐(>)居中显示(^)
  15. pi = 3.1415926
  16. result = f"圆周率{pi:<30.4f}是一个无限循环小数"
  17. print(result)
  18. result = f"圆周率{pi:>30.4f}是一个无限循环小数"
  19. print(result)
  20. result = f"圆周率{pi:^30.4f}是一个无限循环小数"
  21. print(result)
  22. # 【填充】把左右空白区域用什么字符填充,常用星号
  23. pi = 3.1415926
  24. result = f"圆周率{pi:*<50.4f}是一个无限循环小数"
  25. print(result)
  26. # 【类型 - 百分数】
  27. pi = 3.1415926
  28. result = f"圆周率{pi:%}是一个无限循环小数" # 直接加百分号
  29. print(result)
  30. pi = 3.1415926
  31. result = f"圆周率{pi:.2%}是一个无限循环小数" # 2位小数的百分号
  32. print(result)
  33. pi = 3.1415926
  34. result = f"圆周率{pi:.0%}是一个无限循环小数" # 0位小数的百分号
  35. print(result)
  36. # 【类型 - 其他进制】
  37. pi = 25
  38. result = f"二进制 +# {pi:#b}"
  39. print(result)
  40. pi = 25
  41. result = f"二进制 {pi:b}"
  42. print(result)
  43. pi = 25
  44. result = f"八进制 +# {pi:#o}"
  45. print(result)
  46. pi = 25
  47. result = f"八进制 {pi:o}"
  48. print(result)
  49. pi = 25
  50. result = f"十六进制 +# {pi:#x}"
  51. print(result)
  52. pi = 25
  53. result = f"十六进制 {pi:x}"
  54. print(result)
  55. # 上面我们用的都是 F-string,也可以使用format,前面给类型,后面占位
  56. pi = 3.1415926
  57. pipi = 3.6666
  58. result1 = "圆周率{:.2f}".format(pi)
  59. print(result1)
  60. # 如果是多个值会默认从前往后带入,也可以给序号
  61. result2 = "圆周率{0:.2f}+{1:.2f}".format(pi, pipi)
  62. print(result2)
  63. result3 = "圆周率{1:.2f}+{0:.2f}".format(pi, pipi)
  64. print(result3)

结果是:
image.png