1. python之数据类型

当我们学习一门语言时,通常我们最先接触的就是数据,变量以及一些常用的如print()这样的函数,那我们就首先从一个先例子来感受一下一个基础的python实例。

r=input('请输入温度:')
if r[-1] in ['c','C']:f=1.8*eval(r[0:-1])+32                  #eval函数将字符串转换为去掉引号后的内容print("转换后的温度{:.2f}f".format(f))
elif r[-1] in ['f','F']:c=(eval(r[0:-1])-32)/1.8print("转换后的温度{:.2f}c".format(c))    #输出小数点后两位的浮点数
else:print("格式错误")

我们来分析一下这段程序的所能实现的功能:温度转换。

第一句

首先它通过一个input()函数来获取用户输入的一个温度值,最后跟上温度单位,由于这段程序就是将两个不同格式的温度进行转换,那么我们就可以从输入的最后一个单位F还是C来确定。由于从外部输入的是一串字符串,对于字符串我们有索引切片的功能来取出我们想要的部分。
注:索引切片就是正向就从0开始计数,逆序就从-1开始计数,包头不包尾。

第二句

我们接下来看到第二句,他的意思就是取出最后一位看看是否是摄氏度的单位。这句话用到了判断语句if与列表,下面我们稍微对其了解一下。if 语句的用法就是if+条件+:,后面跟这个条件下需要执行的语句。当有其他需要判断的条件时就使用elif+条件。如果说剩下的都归为同一类与主if不同时就使用else。

这句话还包含了另一个涉及到的知识点就是它使用了列表。列表就是一个[]里面加入各种元素用逗号分隔。他给我的感觉就像是一个数组,只是,里面的内容不限于数字,还可以有其他的内容,且可以混着来。如果我们想直到在这个列表中是否有某一个元素,那么我们可以使用in来判断。这里我们需要补充一下:鸭子类型:“如果他走路像鸭子,叫声像鸭子,那他就是鸭子。”我对这部分的理解就是如果我给X这个变量赋值10,那么X就是整型量。反之我们看在C语言编程中,如果我们需要创建一个变量,我们首先得声明这个变量的类型,然后再给它赋值。

第三句

这一句就是数值转换操作,具体我们来看一下它里面用到了一个切片索引功能r[0:-1]按照我们在第一句中解释的,正0负-1,包头不包尾,那么他所代表的内容就是这一串字符串去掉末尾的全部内容,也就是要转换的数据。

其次他还使用到eval()函数。eval() 函数用来执行一个字符串表达式,并返回表达式的值。这个函数,在我看来就是如果一个字符串他是有数字或者表达式构成,那么该函数就能够将这串字符串去掉引号,变为该数值或者表达式来运算。于是,在这里他就是取出输入的数字部分,将他转化为数字量,如这边就可能是浮点数(根据输入的内容来定),并参与到运算中。

第四句

第四句就是很常见的print函数能够将指定内容输出。那么我们就来看看输出的内容有什么特别之处。
format函数:我对于他的理解就是,他一共有两种作用,一种就是选择需要的内容放置到指定位置。例如: “{1} {0} {1}”.format(“hello”, “world”) 他的意思就是前面一个引号就是要输出的字符串,{}就代表了需要从format中取的指定值,于是他最后的输出就是’world hello world’。还有一种用法就是如实例中,取小数点后面几位的操作。
补充:print中有个end参数,这个参数就是在指定的字符串显示后才输出。

至此,程序就分析完了,下面语句和之前都是一样的,不再一一赘述,因此下面我们再补充一点这个程序还未涉及到的一些数据类型。

补充

我们需要知道一个变量拥有三个重要特征

  1. id:反应变量值的内存地址
  2. type:变量的类型
  3. value:变量的值

于是,由这三个特性,我们有两种比较变量的方法:

  1. is:这个方法是比较这两的id是否相同。让我们回想一下在C语言中一个变量是怎么产生的。首先我们需要在内存中寻找一个存储空间,接着我们就将想要的数据通过数据总线传输到里面并对这一空间取名。这个地址空间我们就能间接的看作是这数据的id。因此就会存在即使两个变量值一样但他们却不是同一个id的情况。然而,对于py来说,情况少许有些不同。在py编译器中存在有一个名为小整数池的东西。他里面存放了一些常用的整数。因为我们说过py是动态类型的程序设计语言,就是说他只需要使用一个赋值符号,就创建了一个变量。这样以后要用到相同的值就不需要重新申请空间,直接将申请过的在小整数池中的赋给这个变量。
  2. ==:这个方法就是比较两个变量的内容是否是相等的。

集群类型

  1. 列表:有序,能够使用索引对应相应的值,使用index()可以查看
  2. 集合:使用{}来包围元素,它最大的特点就是不重复
  3. 字典类型:他是使用键值key来与字典中的元素相关联,因此他是无序的
  4. 元组:与列表很相似,但是,他一旦创建就不能够更改。

注:集合的创建需要使用到set()函数,用add或remove来增减其中的内容。其他类型就像是普通生成一个变量的方式一样,只有元组的生成方式最简单:在元素后面加个‘,’就行。

注2:因为元组一经生成就无法改变,那么,我们就能运用这一特性,用来存储比如说一个人定制服装的信息,那么每个人生成一个元组,元组数据还不会变。另外,元组他还是有序的,它能够给不同位置的数据标号,那么:假设有呢么一个元组:data=(‘张三’,44,45)那么我们可以给用name,clothes,jeans=data来拆分这个元组,将他们赋值给这三个变量,但元组本身是不会变的。

注3:当我们想要在c语言中交换两个变量的值时,通常还需要一个中间变量进行转存。但如果是汇编就可以使用XCH指令,在python中也差不多,我们只需要使用x,y=y,x来实现。

运算符

  1. 指数运算:指数运算有两种方法,第一种就是pow函数,他的第一个数字代表了底,第二个数字代表了次数;另一种就是**也能达到同样的目的,可以通过下面代码自己演示。
    注:如果*用在了字符串上就是让这个字符串重复的次数,并生成一个新的字符串。
c=pow(2,4)
d=2**4
print(c,d,sep=',')
  1. 浮点数:浮点数比较特殊,详细可以参看浮点数算术标准。简单来说就是对于小数,他的末尾存在有不确定的尾数,也就是说,在python中的小数是无限接近但是并不相等的,因此我们就需要人为的把尾巴抹掉采用round函数,第二个值就是取到小数点的后几位。
s=round(0.3000939,5)
print(s)   #round 四舍五入,第二个数为保留小数点后几位
  1. 复数类型
    复数类型其实没什么特别的,就举一个小例子认识认识:
#复数类型   只需要和数学一样写即可
z=1.23+34j
a=z.real
b=z.imag
print(a,b)
  1. 数值运算
    数值运算有加减乘除,这些我们都已经非常熟悉,下面我们就稍微介绍两个特殊的
a1=abs(-3)        #取绝对值
a2=divmod(45,4)   #商余 将商和余数存在一个数组中都返回出来
b1=6//4           #取整数部分
b2=7%6            #取余数
print(a1,a2,b1,b2)
  1. 强制类型转换:当我们从键盘得到一个输入,这个输入就是一个字符串形式。如果说我们在程序中需要的并不是字符串形式而是具体的数值,那么就需要用到强制类型转换。
    注:如果说输入是个小数,但是我们需要的是整数,我们不能够一下子用int进行强制类型转换,正确的做法就是先强制转化为浮点数再将其转化为整型量。
a5=int('23')
a6=float('12.34')
a7=complex('3+3j')
print(a5,a6,a7)

最后,我们通过一个具体的例子,温习一下

例:如果说我们有一个竞争对手他的修炼程度已经达到了37.78,而我们则是要从零开始进行修炼,假设我们周一到周五努力修炼,周六周日休息会退步0.01,那么我们平时要修炼多少才能在一年的时间赶上他现在的进度。

def dp(df):dayup=1for i in range(365):if i%7 in [0,6]:dayup=dayup*(1-0.01)else:dayup=dayup*(1+df)return dayup
dayfactor=0.01
while dp(dayfactor)<37.78:dayfactor =dayfactor+0.01
print("工作日的修炼参数是:{:.3f}".format(dayfactor))

垃圾回收机制
垃圾回收
1.引用计数:直接引用+间接引用(容器,就是说,先引用了列表,在引用那个变量)
就是说,能够引用到这个变量的方式?
看id就能知道引用的是否为同一个值,如果说一个值没有引用,那么他就是垃圾

列表中只存放索引以及对应的值的地址空间

引用:能访问到该变量的方式就是引用
思考:如果
x=10
l=[‘a’,‘b’,x]
x=123
那么输出这l其中的第三位会改变吗?
答案是不会

2.标记-清除
一个变量真正形成的过程就是他会在内存中划分两个区,一个叫栈区用来存放变量地址,另一个叫作堆区用来存放变量的值
del就是将变量地址与变量值解除关系,但不一定删除变量值,只有当变量值的引用计数为0时才会将它当作垃圾回收

3.分代回收
垃圾回收是需要历遍所有的存储空间,也就是说会花费很长时间。因此就引入了,如果某一个变量每次检测都是有用的就把他作为常用的变量,后面就可以不用那么频繁的扫描。

浅学python——数字类型相关推荐

  1. [转载] python数字类型(一)

    参考链接: Python数字,类型转换和数学 我们直接进入正题,下面来展开说一下python的基本数据类型 python的数据类型可以大致分为两类,第一类是数字类型,第二类是非数字类型. 今天我们就先 ...

  2. python的四种内置数字类型_浅析Python数字类型和字符串类型的内置方法

    一.数字类型内置方法 1.1 整型的内置方法 作用 描述年龄.号码.id号 定义方式 x = 10 x = int('10') x = int(10.1) x = int('10.1') # 报错 内 ...

  3. python数字类型-python数字类型

    在python中,数据采用了对象的形式(无论是python内置对象还是使用python工具和像C语言自行创建的对象). Python数字类型工具:整数和浮点数 复数 固定精度的十进制数 有理分数 集合 ...

  4. 4j是合法python数字类型_python数字类型

    在python中,数据采用了对象的形式(无论是python内置对象还是使用python工具和像C语言自行创建的对象). Python数字类型工具:整数和浮点数 复数 固定精度的十进制数 有理分数 集合 ...

  5. python内置类型方法_浅析Python数字类型和字符串类型的内置方法

    一.数字类型内置方法 1.1 整型的内置方法 作用 描述年龄.号码.id号 定义方式 x = 10 x = int('10') x = int(10.1) x = int('10.1') # 报错 内 ...

  6. python数字类型floatcomplexint_浅谈python 四种数值类型(int,long,float,complex)

    Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下. 数字数据 ...

  7. python数字类型怎么学,python的数字类型学习之数据类型

    1.在python中,数字并不是一个真正的对象类型,而是一组类似类型的分类.它支持通常的数字类型,还能够可以通过常量直接创建数字,还可以处理数字表达式. 2.数字常量: (1)整数和浮点数常量 (2) ...

  8. python数字类型-Python数字类型及其操作

    数字类型 Python 语言提供了3种数字类型:整数.浮点数和复数. 布尔型 In addition, Booleans are a subtype of integers. 整数类型(int)与数学 ...

  9. python数字类型-Python数字类型有哪些

    python中数字类型有分为如下几种类型:整型 - int 长整型 - long 浮点型 - float 复数型 - complex Python是一种弱类型语言,所以变量都是不需要提前声明,可以直接 ...

最新文章

  1. Linux网络那点事(CentOS、Ubuntu、Kali)
  2. 解决 MSChart控件 X轴坐标显示不全的问题
  3. 马斯克的脑机接口公司Neuralink否认研究人员虐待猴子
  4. Vmware 中Windows和虚拟机共享文件--VMware-tools补丁安装
  5. *17.解释一下最小生成树
  6. HYSBZ/BZOJ 1038 [ZJOI2008] 瞭望塔 - 计算几何
  7. 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(nginx配置篇章)
  8. SQLServer 生成当前日期备份
  9. IDEA:No SLF4J providers were found.
  10. 诞生至今,大数据的真正含义到底是什么?
  11. matlab repmat_利用MATLAB实现KNN
  12. VNPY - 事件引擎
  13. 敏感关键词 词库_关键词优化难度分析怎么做?老鸟如何一键筛选优质关键词(悬赏1元)...
  14. 小程序“头脑王者” 因违规被微信下架整改 小程序不可逾越的红线
  15. 翻译:理解特征工程(2)-分类数据
  16. 单片机蓝桥杯——PWM呼吸灯
  17. 解决MAC OS X不识别Kindle Fire
  18. Inversion of Java Interview - 计算机网络篇
  19. [转载] 约瑟夫问题的数学方法(O(n))
  20. vue+openlayers图形交互,实现多边形绘制、编辑和保存

热门文章

  1. Spring2.5+Struts1.3.8+JPA(Hibernate实现)整合之三
  2. T3在2K以上分辨率报错
  3. DVWA--Insecure CAPTCHA(不安全的验证码)(全难度)
  4. VSCode搭建Go开发环境(2020-04-13更新)
  5. 记录我的第一篇博客,【新手向】微信小程序云开发
  6. Java基本小练习1
  7. Keil5汇编语言之模拟仿真
  8. QT 使用自定义输入法
  9. lenovo 部分打印机 PPD 文件
  10. es6深入浅出学习笔记