zoukankan      html  css  js  c++  java
  • Python基础一


      上周六开始在老男孩学习python,以前一直没有写blog的习惯,作为python新手,还是有必要记录点东西,权当复习使用吧。

      直接写干货了,什么python发展史就略过了。

      python执行过程是从py代码读取内容通过python虚拟机转化为机器码,然后发送给cpu执行的,所以python从某些方面来讲是没有c快的,但python贵在语言简洁干练,记得在Alex老师讲课时,曾经有python、c、java、PHP、C#各种语言打印hello world的比较,明显python和PHP要比其他语言简洁很多。

    一、python2和3的区别

    这里有详细的2和3的区别,说下明前大概知道的吧

    1.print语法:


         2.X: print "The answer is", 2*2 

         3.X: print("The answer is", 2*2) 

         2.X: print x,                              # 使用逗号结尾禁止换行 

         3.X: print(x, end=" ")                     # 使用空格代替换行 

         2.X: print                                 # 输出新行 

         3.X: print()                               # 输出新行 

         2.X: print >>sys.stderr, "fatal error" 

         3.X: print("fatal error", file=sys.stderr) 

         2.X: print (x, y)                          # 输出repr((x, y)) 

         3.X: print((x, y))                         # 不同于print(x, y)! 


     

    2.字符串:Python 2有两种字符串类型:Unicode字符串和非Unicode字符串。Python 3只有一种类型:Unicode,简化了程序员的操作,不必再为是否中文而担心。

    3.交互语法:

    user=raw_input('输入用户名') #python2
    user=input('输入用户名') #python3

    另外,python中input输入的永远为字符串(string),这就有了某些情况,比如用用户输入为数字时,需要用int()转化:

    user=input('输入用户名') #python3
    if user.isdigit():
        print('数字:%s'%user)
        print('%s的下一位:%s'%(user,int(user)+1))
    else:
        print('不是数字')

    其中isdigit()用来判断字符串是否为数字组成,用法:

    #!/usr/bin/python
    str = "123456";  # Only digit in this string
    print str.isdigit();
    
    str = "this is string example....wow!!!";
    print str.isdigit();
    

      返回值为:

    True
    False

    二、用户交互中的非明文密码输入

    在用户进行密码交互的时候,由于密码是使用非明文输入的,所以使用getpass,注意getpass为一个模块,需要import

    import getpass
    user=input('input the user name:')
    pwd=getpass.getpass('input the password of %s:'%user)

    三、占位符:

    上面代码中,%s是占位符,也叫字符串的格式化。整数是%d,浮点数为%f,但%s可包括所有,为啥不用%s...还少记了东西,好懒...

    print中引号内的%s个数要与引号外面的%()中的变量个数相同。

    四、变量:

    变量赋值需要用“=”,后面的字符串需要加引号,数字可不加

    name='ccorz'
    print('name:%s'%name)
    name2=name
    print('name2:%s'%name2)
    name='shane'
    print('''
    name:%s
    name2:%s'''%(name,name2))

    执行结果为:

    name:ccorz
    name2:ccorz
    
    name:shane
    name2:ccorz

    注意其中name和name2的值,结果不同的原因,是因为变量赋值后是指定到内存中的,变量取值是基于内存地址,并非变量。

    变量的起名,只能是以字母开头,有一些关键字不能作为变量名称,如下:

    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

    名称较长的可以用首字母大写(也叫驼峰命名),或者"_"下划线来分开,以便其他程序员记忆。

    五、python中的换行打印

    python中,如果需要打印多行,在一个print可用三对单引号或者三对双引号标识,例如上面代码中的最后一个print动作。

    六、注释

    当行注视:# 被注释内容

    多行注释:""" 被注释内容 """

    七、模块

    模块是python经常用到的东西,非常强大,有标准库和第三方库,比如sys os time 之前提到的getpass等等。

    >>> import os
    >>> os.system('ls -a')
    .                 ..                ReadMe            menus.py          menus_process.png
    0

    最后的0是执行linux命令后返回的值。如果直接调用linux命令并返回结果,可用popen:

    >>> import os
    >>> output=os.popen('ls -a')
    >>> print(output.read())
    .
    ..
    ReadMe
    menus.py
    menus_process.png
    
    >>> 

    os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。

    八、数据类型

    python的数据类型有:

    1.数字:包括整形,长整形,浮点型,复数,None(空值)

    2.布尔值:0(真)或者1(假),布尔值一般用来做判断,比如:

    has_money=Fales
    if has_money:
        print('发工资'

    3.字符串:

      字符串是用单引号或者双引号括起来的任意文本,如果字符串中本身包含单引号或者双引号怎么办,那就用“”反斜杠转义字符。

      需要注意的是,python中还能用r' '表示引号内部字符串默认不转义

    r'I'm ok,lol'

    4.列表

    列表使用中括号,元素用逗号隔开

    name_list=['shane','alex','gao','ccorz']
    len(name_list)  #列表元素的个数
    name_list[2] #索引号为2的对应元素,注意索引号从0开始
    name_list[-2] #倒数取第二个元素

    列表切片

    name_list[0:3]  #从列表中取从索引0到3之前的元素,但不包含索引号为3的元素
    name_list[:3]   #同上
    name_list[:-3] #取从0到倒数第3个元素,不包含倒数第三个
    name_list[-3:]  #取最后3个元素
    name_list[1:8:2] #从1到8取,包括第8个,隔1个取一个,后面的2是步长,基本是-1取就好
    name_list[::3] #从头到尾取,隔两个取一个

    列表增删改查

    name_list.append('cheng')   #列表中增加元素
    name_list.pop()        #删除最后一个元素,并显示该元素
    name_list.remove('cheng')   #删除叫'cheng'的元素,如果列表中有多个'cheng',删除从左边数的第一个'cheng'
    name_list[2]    #取索引为2的元素
    name_list[2]='mayun'     #将索引为2的值改为'mayun'
    name_list.insert[2,'guodegang']    #插入一个新元素,索引号为2
    name_list.count('alex')    #统计元素的个数
    name_list.extend(name_list2)    #把新列表合并到name_list列表中,新列表元素在后面增加
    name_list.sort()      #列表排序
    name_list.reverse()    #将列表反转排序
    del nanme_list[3:8]    #删除索引号3到8的元素,不包括8
    tuple(name_list)      #将列表转化为元组

    5.元组

    元组是不可变的,取值方法和列表一样

    names=('alex','bob','tracy')
    names=('alex',)  #当元组中只有一个元素时,后面加“,”逗号,以免把括号当成数学公式使用
    names[0]  
    names[-1]
    name[1:3]

    6.字典

    ①字典是以key:value的方式存储的,key必须唯一

    ②字典的特点是无序,每次打印回显顺序会不同

    ③字典用大括号标识,key和value用冒号对应,数据组之间用“,”逗号隔开

    例如:

    info={'name':'ccorz',
          'job':'IT',
          'company':'ali',
          'age':'18',
          'map':{'china':'beijing','american':'huafu'}
    
    }
    print(info)
    print(info.items())
    
    for i in info.items():
        print(i)

    执行结果:

    {'age': '18', 'job': 'IT', 'company': 'ali', 'name': 'ccorz', 'map': {'american': 'huafu', 'china': 'beijing'}}
    dict_items([('age', '18'), ('job', 'IT'), ('company', 'ali'), ('name', 'ccorz'), ('map', {'american': 'huafu', 'china': 'beijing'})])
    ('age', '18')
    ('job', 'IT')
    ('company', 'ali')
    ('name', 'ccorz')
    ('map', {'american': 'huafu', 'china': 'beijing'})

    操作

    info.pop('age')    #删除key为age的数据组
    info.popitem()    #随机删除一条数据,如果字典为空会报错
    del info('age')    #同上,删除key为age的数据组
    info['job']      #查看key为job的value
    info['job']='sale'   #将key为job的value改为sale,如果没有,创建key为job,value为sale的记录
    info.items()    #将字典的key,value转换为列表的形式显示,将字典info中所有键值对以dict_items的形式返回(Python 2中d.iteritems() 返回一个针对键值对的迭代器对象,Python 3中没有 iteritems 方法了)
    info.has_key('name')  #判断字典中是否有name的key,python3中改为使用 in 判断
    info.get('name')  #查找key,如果有返回其value,如果没有返回None
    info.clear()    #清空字典
    info.fromkeys(['a','b','c'],'tst') #根据列表创建字典对应的key,默认对应的value为'tst'
    info.setdefault('age','23')  #如果列表中有age,返回其value值18,如果没有age的key,创建age,value为23,返回value的值23
    info.update(dict2)  #用字典dict2更新info,如果key有冲突,dict2的key对应的value覆盖info中的value。如果不冲突,那就创建相应的记录

    九、数字运算

    数据运算:


    +  加法  

    -  减法

    *  乘法

    /  除法

    %  取模,求余,左边的除以右边的,得到的余数的返回值

    **  求幂

    //  取整除,左边除以右边,等到的整数部分


    算术运算


    ==  判断是否相等

    !=  判断是否不相等

    <>  同上

    >  判断是否大于

    <  判断是否小于

    >=  是否大于等于

    <=    是否小于等于


    赋值运算


    =  赋值,右边赋值给左边变量

    +=  a+=b  a=a+b

    -=  a-=b  a=a-b

    *=

    /=

    %=

    **=

    //=


    逻辑运算:and, or, not

    关系运算:in, not in

    验证运算:is,is not

    十、判断

    if...elif...else,挺简单的,只要注意缩进和判断条件后面的分号即可。

    十一、循环

    while

    for

    循环不难,注意缩进即可。

    for用在遍历文件、字典、列表等较多

    while True 用在无限循环较多

    while True:
        pass
    for i in range(10):
        pass
    flag==0:
    while flag==0:
        pass
    while i < 10:
        pass

    break 跳出循环

    continue 跳过本次,继续下一次循环

  • 相关阅读:
    EF Core使用笔记(基于MySql数据库)
    开发环境---->服务器(数据库迁移Migration)
    正向代理和反向代理
    Linux基础命令
    Git + Docker + Jenkins自动化部署web到Linux(Centos)
    poj3320(尺取法)
    poj3061(尺取法)
    51nod 1092(lcs)回文字符串
    51nod1268(基础dfs)
    51nod-1459-迷宫游戏
  • 原文地址:https://www.cnblogs.com/ccorz/p/5483042.html
Copyright © 2011-2022 走看看