一.  变量,输入输出

1.1 数值

1.1.1 整型

1.1.2  浮点型

1.1.3  abs,int,round函数

1.1.4  表达式

1.1.5  Py中数据对象的存储 

1.2  字符串

1.2.1  字符串表示

1.2.2  索引以及切片

1.2.3  字符串常用操作

1.3  输入输出函数

1.3.1  input函数

1.3.2  print函数

1.3.3  格式化输出

二、 列表,元组,文件

2.1  列表

2.1.1  列表的定义

2.2.2  列表操作函数

2.2  元组

2.3  文件

2.3.1  打开文件

2.3.2  关闭文件  

2.3.3  文件读

2.3.4  文件写

三、控制流结构

3.1  Python新增逻辑表达运算符

3.1.1  ASCII码与字符的转换  

3.1.2  in 与 sort

3.1.3  自定义排序

3.2  循环结构和分支结构

3.1.1  while的用法

3.1.2  for的用法

3.1.3  分支结构

四、函数

4.1 函数的定义以及参数作用域

4.1.1  函数的定义

4.1.2   函数骚操作

4.2   自定义多优先级排序 



一.  变量,输入输出

1.1 数值

     这里没有像C语言一样,int四个字节,long long 八个字节,float单精度 ,double双精度,这种分别,python只有整型和浮点型。 

1.1.1 整型

    这里的int就是整数的意思,没有范围。因为没有数据类型所以,数据的定义直接a = 1。

    int(变量名字) 可以实现强制数据类型转化为整数。

                        

C语言及python编程题经典100例 c语言基础学python_字符串

1.1.2  浮点型

     此处的浮点型也没有双精度,单精度之分,例如a = 3.14

                                                                    

C语言及python编程题经典100例 c语言基础学python_字符串_02

1.1.3  abs,int,round函数

    abs()函数可以返回数字的绝对值。例如:

                                                                  

C语言及python编程题经典100例 c语言基础学python_元组_03

   int()函数可以实现数字的强制类型转换,转换为整型。注意此处int()是函数,不像C语言(int)a可以实现强制类型转化。例如:

                                                                    

C语言及python编程题经典100例 c语言基础学python_优先级_04

    round()函数可以实现浮点数的四舍五入结果,round(n,r) 为n保留r为小数,四舍五入后的结果。例如:

                                                                 

C语言及python编程题经典100例 c语言基础学python_元组_05

1.1.4  表达式

    像C语言一样,可以实现加减乘除,这里Py新增了一下几种种运算符:

    **  是乘方的意思,不过复杂度是O(n)的,内部实现没有使用快速幂算法优化。

                                                                         

C语言及python编程题经典100例 c语言基础学python_优先级_06

    //  是求商部分,也就是除法运算向下取整后的结果。 由于Py一个变量没有int和float之说,所以想得到整数要么使用int()函数要么使用 // 运算。

                                                                     

C语言及python编程题经典100例 c语言基础学python_字符串_07

1.1.5  Py中数据对象的存储 

                                                                           

C语言及python编程题经典100例 c语言基础学python_字符串_08

    当执行第一行代码后,系统开辟空间存储数字5,然后n相当于一个引用。

    当执行第二行代码后,系统重新开辟空间存储数字6,更改n的引用位置。

    此处是有别于C语言的。

    至于闲置内存的回收由Py的某个进程负责。

                                            

C语言及python编程题经典100例 c语言基础学python_优先级_09

1.2  字符串

1.2.1  字符串表示

单引号或双引号括起来的整体。例如:

     ‘ Hello Python! ’       ,         " Hello  Python! " 

    字符串可以直接赋值给变量。例如:     

                                                                        

C语言及python编程题经典100例 c语言基础学python_字符串_10


1.2.2  索引以及切片

       同C语言,字符串具有从0开始的索引,到  len-1  结束。不同的是字符串也有反向索引,字符串的最后一个下标为-1,倒数第二个为-2,等等

      字符串也有切片的功能,a[m:n] 即为,下标为n开始到下标为m的前一个。a[m: ]为从m截取到最后。

                                                                                    

C语言及python编程题经典100例 c语言基础学python_元组_11

1.2.3  字符串常用操作

     len()函数返回字符串长度,例如:

                                                                           

C语言及python编程题经典100例 c语言基础学python_字符串_12

   upper() / lower( ) 返回字符串转化为 大 / 小 写字母组成。调用后并不影响字符串本身

                                                                           

C语言及python编程题经典100例 c语言基础学python_字符串_13

    rstrip()函数可以去除末尾空格

                                                           

C语言及python编程题经典100例 c语言基础学python_C语言及python编程题经典100例_14

1.3  输入输出函数

1.3.1  input函数

    input(提示输入信息),返回值为输入的字符串,碰到Enter为止    

                                                       

C语言及python编程题经典100例 c语言基础学python_C语言及python编程题经典100例_15

   很像C语言的gets函数,经常配合split(),int(),float () 使用。

1.3.2  print函数

     同C语言 ‘  \  ’为转义字符。

    print(val1 , val2 , val3) , 输出以空格分割的三个变量,并且自动换行

    print(val1, val2 , val3 , sep = '+') , sep参数可以改变分割的字符

    print(val1, val2,  val3, end = ""),  end参数可以改变终止的换行符

                                                               

C语言及python编程题经典100例 c语言基础学python_优先级_16

    这里有一个很厉害的函数eval( ),记不记得C语言打表达式求值的死亡大模拟,这个函数可以直接求表达式的值

                                                   

C语言及python编程题经典100例 c语言基础学python_优先级_17

1.3.3  格式化输出

       print(  字符串.ljust(w) )   输出字符串向左对齐,字宽为w

       print( 字符串.rjust(w) )输出字符串向右对齐,字宽为w

       print( 字符串.center(w) )输出字符串居中,字宽为w


二、 列表,元组,文件

2.1  列表

任意的类型。

2.1.1  列表的定义

    列表的定义为a = [ "qwe" , 123 , 3.14 ] 

                                                            

C语言及python编程题经典100例 c语言基础学python_优先级_18

2.2.2  列表操作函数

    len()函数返回列表的元素个数。

                                                                  

C语言及python编程题经典100例 c语言基础学python_元组_19

    max( ) / min( ) / sum() 返回列表的最大值  /  最小值  /  和。(必须都为数值)                                                     

                                                           

C语言及python编程题经典100例 c语言基础学python_优先级_20

    列表 . count(查找元素)返回所查找元素的数目

                                                                 

C语言及python编程题经典100例 c语言基础学python_优先级_21

    列表 . append(末尾插入对象)

                                                                         

C语言及python编程题经典100例 c语言基础学python_优先级_22

    列表 . insert (插入位置,插入元素)

                                                                        

C语言及python编程题经典100例 c语言基础学python_字符串_23

    split(s1)函数 ,将字符串以s1分割存入列表,返回一个列表。

                                                                

C语言及python编程题经典100例 c语言基础学python_字符串_24

    s1. join(列表)函数,可以看作 split()的反函数,将列表中的元素用s1分割,

                                                                   

C语言及python编程题经典100例 c语言基础学python_字符串_25

2.2.3  列表的复制

    在Py中列表名可以看作一个空间的引用,所以当我们要复制列表的时候不可以直接list1 = list2,如果修改list1,同样list2会被修改。

                                 

C语言及python编程题经典100例 c语言基础学python_字符串_26

                  

C语言及python编程题经典100例 c语言基础学python_C语言及python编程题经典100例_27

2.2  元组

    元组是不可改变的有序序列。也可以像字符串一样切片。

    元素的定义为 a = (val1  ,  val2  ,  val3 )  或者  a = val1  ,  val2  ,  val3

                                                                   

C语言及python编程题经典100例 c语言基础学python_C语言及python编程题经典100例_28

    Py 里交换元素可以 x , y = y , x   实际上是为元组赋值

                                                                     

C语言及python编程题经典100例 c语言基础学python_字符串_29

2.3  文件

2.3.1  打开文件

    file = open( “ 文件路径 ” ,权限 )

    file 为文件句柄 

                                                              

C语言及python编程题经典100例 c语言基础学python_优先级_30

2.3.2  关闭文件  

    打开文件后一定要有关闭操作。

    file.close( )

2.3.3  文件读

    file.read()

2.3.4  文件写

    file.write()              返回写入文件字符的数目。

    注意:键入file.close()才会真正写入文本。

           

C语言及python编程题经典100例 c语言基础学python_元组_31

C语言及python编程题经典100例 c语言基础学python_元组_32


三、控制流结构

3.1  Python新增逻辑表达运算符

3.1.1  ASCII码与字符的转换  

    因为Py中没有char这个类型,所以想要实现ASCII码和数字之间的转换也需要函数。

    ord('A')   返回字符的ASCII码

    chr(65)   返回ASCII码为65的字符 

                                                                        

C语言及python编程题经典100例 c语言基础学python_优先级_33

3.1.2  in 与 sort

    C语言原有的Py都有,但是新增了几个十分便利的

    in   是个二目运算符,返回结果为前者是否为后者子串或者子元素,同样也有not in。

                                                           

C语言及python编程题经典100例 c语言基础学python_优先级_34

                                                                 

C语言及python编程题经典100例 c语言基础学python_字符串_35

    

 

    sort   列表排序函数,和C语言#include<algorithm> 中的sort 功能一样,调用更便捷。例如:

                                                        

C语言及python编程题经典100例 c语言基础学python_元组_36

   但是sort要求列表元素都为数值或者字符串。

3.1.3  自定义排序

    在C语言中要想自定义,需要重载运算符,或者手写比较函数,Py中调用更为方便。

    list . sort ( key = 第一优先级 )

    可以实现自定义排序

    reverse参数可以设置逆序还是正序。

    list . sort( key = 第一优先级 , reverse = True)

                                                        

C语言及python编程题经典100例 c语言基础学python_元组_37

    sort函数直接对原来的列表进行了修改,sorted函数不对原列表修改,而且返回排序后的列表

                                                  

C语言及python编程题经典100例 c语言基础学python_元组_38

   

还有多优先级并且升降序不同,要自己定义的时候,需要用到functools模块,在后边函数的时候会重点提到。

 

3.2  循环结构和分支结构

子语句与父语句保持四个空格的缩进。

3.1.1  while的用法

    while  表达式 :

        函数体

                                                        

C语言及python编程题经典100例 c语言基础学python_优先级_39

3.1.2  for的用法

    如果遍历元素为数字的话:  和C语言for(int i = n;i < m ; i++){    函数体   }

     for i in range ( n , m ):

          函数体  

                                                   

C语言及python编程题经典100例 c语言基础学python_C语言及python编程题经典100例_40

n = int(input("Input n : "))

for i in range (1,n+1):
    for j in range(1,n-i+1):
        print(" ",end = "")
    for j in range(1,2*i):
        print("*",end = "")
    print("")

   

C语言及python编程题经典100例 c语言基础学python_字符串_41

如果要实现for(int i = n ; i <= m ; i += s) 这样的功能,可以使用for i in range (n , m , s)

                                                    

C语言及python编程题经典100例 c语言基础学python_C语言及python编程题经典100例_42

 for也可以直接遍历字符串或者列表值。

                                                   

C语言及python编程题经典100例 c语言基础学python_元组_43

for也可以行读文件 for line in 文件句柄:  (记得关文件)

3.1.3  分支结构

    if  语句   就是      if  表达式  :

    else    变成了      elif 表达式 :

    else                     else : 

 记住子语句与父语句四个空格缩进就好。

四、函数

                          (因为C语言的函数和Py的函数十分相似,所以这里重点讲Py的cmp_to_key。)

4.1 函数的定义以及参数作用域

4.1.1  函数的定义

    函数的定义不像C语言要确定一个返回值类型,因为在Py中没有严格的变量类型的区分。

    只需要使用def  关键字即可定义。同时参数也不需要指明类型,返回值也没有类型,非常简单。

                                                                    

C语言及python编程题经典100例 c语言基础学python_元组_44

 

    

4.1.2   函数骚操作

    Py 可以返回多个参数,其实相当于返回值是一个元组,赋值的也是个元组

                                                       

C语言及python编程题经典100例 c语言基础学python_C语言及python编程题经典100例_45

   同时还可以按照参数名传参数,很骚的东西,感觉没什么大用。

4.2   自定义多优先级排序 

    在Py3中手写cmp函数被取消了,必须要使用function函数中的cmp_to_key()函数进行多优先级排序。

    cmp_to_key ( mycmp ) 中 mycmp 就是自定义的手写函数。

    参数为要排序元素

如果满足条件后,val1  排在后边 返回 1 ,排在前边返回 -1,如果完全相等返回0,这个返回0 不可以像C语言自定义排序那样不写,否则函数无效。

   例如:先按照分数高低排,分数一样按名字字典序排序

import functools
def cmp1(n1, n2):
    if(n1[1] > n2[1]):
        return -1
    elif(n1[1] < n2[1]):
        return 1
    else:
        if(n1[0] > n2[0]):
            return 1
        elif(n1[0] < n2[0]):
            return -1
        else:
            return 0


a = [['lili',96],['xiliang',90],['hailu',94],['hailong',94]]
print(sorted(a, key=functools.cmp_to_key(cmp1)))

 

                              

C语言及python编程题经典100例 c语言基础学python_C语言及python编程题经典100例_46

一个手写cmp函数可以解决一切sort优先级问题。