1、数值 和字符串的讲解

           1.1、数值 有int 、 float、Decimal(更精确的小数)、Fraction(分数)

 整数int是不带小数的  age = 20 

                       浮点型是float,是表示小数的 f = 3.14 , f = 0.3 , f = .3    ,第二个和第三个的结果是一样! 问题就是:浮点型的精度不够, 是因为计算机硬件存储结构里面描述浮点型精度的时候的特性造成的!

                       数值表达式:直接输入一个数值!那叫字面值。还可以参加数值运算。

python中字符串一个字母就代表长度为1吗_双引号

    '{0}' , 表示一个占位符,  而'f = {0:.2f}'.format(3.3333)的意思是讲3.3333这个数字传进去!并且保留两位小数,以浮点型。

     整数的运算,特别注意的整数的除法:比如 10/4 输出2.5 那么我们只想要这个整数2的时候,我们就需要使用 //  两个除号来计算了!  整数取整的时候,还可以使用 import math 包下面的一个函数 floor , 这是一个向上取整的函数。看一下floor函数的图形解读:都是往左移:

   

python中字符串一个字母就代表长度为1吗_字符串_02

那么我们可以可以往中间移动呢?也是可以的!这时候使用 math.trunc()这个是往中间移动:

python中字符串一个字母就代表长度为1吗_浮点型_03

那我们真的想要四舍五入怎么办呢?我们要使用round这个关键字。  round(3.14)得到3 。 round(3.94)得到4.  。 这个不是来自math模块!而是使用的全局函数round() 。 

整型:无限精度,仅受限于内存与计算机配置   我么你是一般使用的是 0o  8进制  、0x 16进制 、0b  2进制。 oct(数值)转化成八进制。hex(数值)转化成为16进制。bin(数值)转化成2进制。

Decimal模块:更精确的数值:

           1.1、字符串(str):

     声明的时候,‘’     “”    “”“”“”     单引号、双引号、三引号、都是一样的效果。  当单双引号冲突的时候,我们需要转义: \
常见的转意符:\        \'      \'' (对双引号转义)  \n   (转行)    \b   (退格键)    \t     \a
路径的使用:path = ‘C:\\abc\\xyz.txt’ 。不能使用\a ,它本身就是一个转义符,所以报错!我们可以使用\\ 来表示,或者还是 我们可以使用path = r'C:\abc\xyz.txt'  来写 ,前面加上一个r来 申明为原始的意思。可以忽略转意符。
   “”“”“” 三引号的其实就是一个说明文档

 for循环最后什么都不写的时候会默认的使用 “/n” 结束,当想要自己指定结束分隔符的时候 就要使用这种格式:print(c , end=“,”); 这个是以“ , ”为分隔符结束。
   s=“asdfg” ,
      s[0:4]  从下标为0的开始切割 ,到下标为4 ,但是不包括四的那个字母结束。
      s[-1],得到最后一个。还还可以sp[len(s) -1 ], 也能得到最后一个。麻烦的方法。
       s[:]是从头到尾都取出来。
      s[::2]是从头取到尾,然后隔一个开始取,每次步长值为2.
      s[::-1],是从右往左开始取。就是反转字符串。
      ord(‘字符’) :得到该字符在ASCLL表对应的数字。
      chr(数字):该数字对应的字符。
python以一个字符串进行切割:
    s = 'www.baidu.com'
    print(s.rsplit('.'))
    output:
    ['www', 'baidu', 'com]

python 中split()使用多符号分割:

     In [1]: import re

     In [2]: words = '我,是。一个?程序?人员'

      In [3]: wordlist = re.split(',|。|?',words)

      In [4]: print(wordlist)

    output:
      ['我', '是', '一个', '程序', '人员']

  字符串可以*一个数字!但是不能够相加。
  字符串不支持原位改变。在赋值一次改变就行。
   比如h="hello"  想要将e改为a 。 那就 h1 = h.replace('e','a')   , 这个就是一个内存指向的问题。
  

格式化字符串:
      a = 1 
      b = 2
      a , b = 1, 2
      交换字符:  a , b = b , a  (简便)。
     '{0} => {1}'.format(2,1)   output: 2 =>1 。 
    '{name} => {salary}'.format(name = 'tom' , salary = 90000)    也可以写变量名。
    

  strname.split()
  strlname.startswith("http://") :判断该字符串是否以双引号中的自动换开头。 output : true   or   flase。
  strname.endswith("http://"):判断该字符是否以括号中的内容结尾的!
  strname.find('http://'):判断该字符中是否包含括号中的字符。 返回该字符的位置。 如果没有则返回-1

 

3.布尔型: 在python中 bool型是int类型的1.或者0使用
isinstance(True,int)   这个函数的意思就是某一个对象是否为某一个类型的实例。返回出来True,True ==1 为true 。flase == 0 返回true 。

--------------------------------------------------------------------------------------------------------------------------------

2、list的学习

   list跟字符串不一样,它是支持原位改变的。
     s = 'www.baidu.com'     
     s1 = lsit(s) .
   这样就将s 装进数组里面 赋值给了s1.
      s = ' '.join(s1)
  这样就又把s1 数组 转变成了字符串了。那个是一个空的 ' ' ,如果我们想指定自己的分割符隔开!写进去就行

  list任意对象的有序集合。通常索引下标访问元素, 是一个可变长度的。属于可变序列。
 '字符串' in listname   :判断该字符串是否在改list中。
   for  strc in listname:        //解释:将listname中的数据全部遍历出来放再strc这个中。
      print(strc)                 //解释 : 注意首行缩进四个空格。

 

list的列式推导:需求:我现在想要将一个列表的值都平方一下!
    list1 = [1,2,3,4,5,6,7]     list2 = [i ** 2 for i in list1]   

    lsit1[2:4] = [222]    //解释:将list1中的从第二个下标开始的数字! 到第四个下标(不包括第四个),替换成222.

    list1.append(7) 。追加lsit1列表一个元素,   list1。extend([1,4,6,3]) 。 extend是追加一个列表。

    lsit1.sort()  排序     lsit1.reverse()  反转   list1.pop  :弹出来最后面的数字。 del(list1[0]): 删除该列表的第一个元素。 list1.index(数字) 。 找出该数字所在的位置。  lsit1.count(5) 统计5在list1中出现的次数。

  lsit1赋值给list2的时候,直接list1 = list2 的话!修改list1 list2也会修改!如果我们不想这么做的话!那么我们就是使用
list2 = list1.copy()   或者是 list2 = list1[:]   创建出来一个副本!