python程序设计:基本数据类型

python程序设计:

棒棒糖【交流:qq:3307629938】

代码统一缩进和对齐(简单明确,规范)

数据相关及其组织:

什么是数据:

  • 数据(data)是信息的表现形式和载体

  • 能看到的,都是数据;能理解的,都是信息;能联系的,才是知识;会用的呢,才是能力;用成了的,就是本事!

  • 对现实世界实体和概念的抽象

  • 大数据:Volume,Velocity,Variety,Value,Veracity

  • python是最热门的大数据分析处理语言

多种多样的数据类型:

  • 描述事物大小,次序的数值类型;
  • 事物各方面特性的文本字符串类型
  • 事物时间属性的日期时间类型

数据类型归纳:

  • 简单(基本)类型用来表示值:
    整数:int;浮点数:float;字符串:str;逻辑:bool;复数:complex;
  • 容器类型用来组织值:
    列表:list;元组:tuple;集合:set;字典:dict;
  • 数据类型之间可以相互转化

对数据进行组织:

  • 对大量数据进行处理时,需要建立各种各样的数据组织,一遍提高计算的效率!
  • 组织形式:
    没有组织
    标签式组织数据
    队列,栈,树,图等;

计算和控制流:

计算和流程:

  • 对现实世界处理和过程的抽象
  • 各种类型的数据对象,可以通过各种运算组织成复杂的表达式
>>> a = ("abc"+"bcd")
>>> b = a*3
>>> print(a,b)
abcbcd abcbcdabcbcdabcbcd
>>> import math
>>> math.sqrt(12)
3.4641016151377544

运算语句:

  • 将表达式赋值给变量进行引用
  • 赋值语句用来实现处理和暂存(表达式计算+调用+赋值)
>>> s = math.sqrt()
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    s = math.sqrt()
TypeError: sqrt() takes exactly one argument (0 given)
>>> s = math.sqrt
>>> s(2)
1.4142135623730951
>>> s(12)
3.4641016151377544
>>> s = math.sqrt(12)
>>> s
3.4641016151377544

控制流语句:

  • 顺序结构(组织语句描述过程)

    在这里插入图片描述

  • 条件分支(if)
    在这里插入图片描述

  • 循环结构(for,while)
    在这里插入图片描述

定于语句:def,class

  • 用来组织语句,把一系列运算语句集合起来给一个名字
  • 描述一个包含一系列处理过程的设计单元,主要为了源代码的各种复用
def sum(lis):        
sum_step = 0        
for i in lis:            
    sum_step +=1        
 return sum_step
 print(sum)
 a = [12,12,23,23]
 b = sum(a)
 print("sum of lis:%d"%(b))
<function sum at 0x001BF7C8>
sum of lis:4
  • 可以定义函数,类等“代码对象”

  • 调用函数或者类,也可以得到数据对象,python里所有可调用的事物称为callable

  • 函数定义+类定义

基本类型:数值+复数+逻辑值+字符串

整数类型:int【数值】

  • 特点:不限制大小+常见的运算表格:

在这里插入图片描述

  • 大小判断+连续比较判断:
>>> 23<45<32
False
>>> 23<45<56
True
>>> 7>4>=4
  • 数的进制:二,八,十,十六进制:几进制就逢几进一;
  • 二进制:0 1 10 11 100 101 111 1000

  • 八进制:0 1 2 3 4 5 6 7 10

  • 十六进制:0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a

在这里插入图片描述

  • 整数的各种进制的表示:
  • python语言中可以直接用二进制,八进制,十六进制来表示整数,只要前面加一个前缀用以标识几进制即可;
  • 十进制decimal:无前缀数字,123
  • 二进制:binary:0b前缀,0b10110
  • 八进制:octal:0o前缀,0o557
  • 十六进制:hexadecial:0x前缀,ox16f

浮点数类型:

  • 操作与整数类似

  • 浮点数收到17位有效数字的限制

  • 特性:进制转化导致精度误差

>>> 4.2+2.1
6.300000000000001

复数类型:

  • 复数之间只能比较是否相等
>>> (1+2j) == (3+4j)
False
>>> 1+2j) <= (3+4j)
SyntaxError: invalid syntax
  • 求平面两个点的距离:
>>> (1+2j).imag
2.0
>>> (1+2j).real
1.0
>>> abs((3+3j)-(4+4j))
1.4142135623730951

更多的数学函数:

  • 数学常数:

圆周率:pi,自然对数的底e等

  • 数学函数:

三角函数,对数,最大公约数,最小公倍数等

>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

import math ----dir(math):可以查询不同的数学函数;math模块:用来计算 整数和浮点数;

笛卡尔坐标和极坐标之间的转化
cmath模块:专门用来计算浮点数;

Python 提供对于复数运算的支持,复数在 Python 中的表达式为 C==c.real+c.imag* j,复数 C 由他的实部和虚部组成。对于复数,Python 支持它的加减乘除运算,同时提供了 cmath 模块对其他复杂运算进行支持。cmath 模块和 Python 中的 math 模块对应, math提供对于实数的支持。

>>> import cmath
>>> dir(cmath)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
>>> import cmath
>>> a = 1+2j
>>> print(cmath.polar (a))
(2.23606797749979, 1.1071487177940904)
>>> (b,c) = cmath.polar(a)
>>> print(cmath.rect(b,c))
(1.0000000000000002+2j)

polar 函数对一个输入的笛卡尔形势的复数进行计算,输出为一个二元组,第一个值为a的模值, 第二个为幅度值。 rect() 函数对输入的模和幅度值进行计算输出笛卡尔表示。

判断与真值:【逻辑值】

逻辑(bool)类型:

  • 逻辑值仅仅包括真(true)/假(false)两个;
  • 用来配合if/while等语句做条件判断;
    在这里插入图片描述

逻辑运算:

“或”:or:两个值只要有一个为真,计算结果为真;‘与’,and,两个值必须都为真,计算结果为真;‘非’,not,连接的一个真值,非假为真,非真为假【单目运算,作用于一个逻辑类型的真值】
and和or是双目运算,作用于两个逻辑类型的真值;
优先级:单目运算永远最高;not>and>or【最好的方式,是用括号括起来】

各种类型对应的真值:

  • 整数,浮点数和复数类型:
    0是“假”,所有非0的数值都是“真”;

  • 字符串类型:
    空串(“”)是“假”,所有非空串都是“真”;

  • 所有序列类型(包括字符串):
    空序列是“假”,所有非空的序列都是“真”;

  • 空值None:
    表示“无意义”或者“不知道”,也是“假”

文本的表示:【字符串】

  • 字符串就是把一个个文字的字符“串起来”的数据
  1. 文字字符包括含有拉丁字母,数字,标点符号,特殊符号,以及各种语言文字字符;
  2. 双引号和单引号都可以表示字符串,但必须成对;
  3. 多行字符串用三个连续的单引号表示
print(
"""
在地狱中,
保持淡定地前行,
是产品人的常态!
若不能掌握几门核心的能力,
就等待着被命运按在地上摩擦的感觉!——棒棒糖
'''
)


  1. 特殊字符用转义符号“\”表示
    在这里插入图片描述
  • 字符串的编号:
    第一个字符编号为0,第二个为1,倒数第一个为-1,倒数第二个为-2;用这种整数编号可以从字符串中抽取任何一个字符;

字符串和名字的区别:

  • 字符串是数据本身,名字是数据的标签;名字和字符串是“名”和“值”之间的关系;

  • 一个字符串数值可以关联多个名字+一个名字在同一时刻只能关联一个字符串数值+字符串数值只能是字符串类型,名字可以关联任意类型的数值

常见的字符串操作:

  • len()函数:获取字符串长度
  • 切片(slice)操作:s[start?step];
>>> a = "007棒棒糖"
>>> a[0:4]
'007棒'
>>> a[0:6]
'007棒棒糖'
>>> a[0:6:2]
'07棒'
  • 判断字符串内容是否相等(==),判断字符串是否包含某个字符串(in)
>>> a = "007棒棒糖"
>>> 007 in a
SyntaxError: invalid token
>>> "007" in a
True
>>> 007 == a
SyntaxError: invalid token
>>> "007" == a
False
  • +:将两个字符串进行连接,得到新的字符串
    • (乘号):将字符串重复若干次,生成新的字符串
>>> a = "hello"
>>> b ="world"
>>> a+b
'helloworld'
>>> a*3
'hellohellohello'
  • 删除空格
  1. str.strip:去掉字符串前后的所有空格,内部的空 格不受影响
>>> a = "     \n   abc abc 123    \t   \n"
>>> print(a,a.strip())
     
   abc abc 123    	   
 abc abc 123
 # 注意:删除了字符串前后所有的空格,包括\n,\t;但字符串中间的空格,并没有被删除
  1. str.lstrip:去掉字符串前部(左部)的所有空格
>>> str = "     this is string example....wow!!!     "
>>> strl = "88888888this is string example....wow!!!8888888"
>>> print(str.lstrip())
this is string example....wow!!!     
>>> print(strl.lstrip("8"))
this is string example....wow!!!8888888
>>> print(str.lstrip(),strl.lstrip("8"))
this is string example....wow!!!      this is string example....wow!!!8888888
  1. str.rstrip:去掉字符串后部(右部)的所有空格
  • 判断字母数字: str.isalpha:判断字符串是否全部由字母构成 +str.isdigit:判断字符串是否全部由数字构成 + str.isalnum:判断字符串是否仅包含字母和数字, 而不含特殊字符
>>> a = "123"
>>> b = "apple"
>>> c = "123apple"
>>> d = "123+apple"
>>> print(a.isalpha)
<built-in method isalpha of str object at 0x00DC9980>
>>> a.isalnum()
True
>>> a.isalpha()
False
>>> a.isdigit()
True
>>> b.isalpha()
True
>>> c.isalnum()
True
>>> d.isalnum()
False

字符串是一种序列:

split:分割;join:合并 upper/lower/swapcase:大小写相关 ljust/center/rjust:排版左中右对齐 replace:替换子串

>>> " you are my sunshine".split(" ")
['', 'you', 'are', 'my', 'sunshine']
>>> "+".join(['', 'you', 'are', 'my', 'sunshine'])
'+you+are+my+sunshine'
>>> "abc".upper()
'ABC'
>>> "ABC".lower()
'abc'
>>> "AbC".swapcase()
'aBc'
>>> "hello world".center(20)
'    hello world     '
>>> "Tom smiled,Tom cride,Ton shouted".replace("Tom","Rose")
'Rose smiled,Rose cride,Ton shouted'
  • 序列(sequence):能够按照整数顺序排列的数据
  • 序列的内部结构:
  1. 可以通过从0开始的连续整数来索引单个对象;
  2. 可以执行切片,获取序列的一部分;
  3. 可以通过len函数来获取序列中包含多少元素;
  4. 可以用加法“+”来连接为更长的序列;
  5. 可以用乘法“ * ”来重复多次,成为更长的序列;
  6. 可以用“in”来判断某个元素是否在序列中存在;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值