从零开始学Python-day2

发布时间:2019-09-12 07:59:42编辑:auto阅读(1842)

    Python--Day2

    今日一句:距2017年仅剩三月不足,整理思路。希望来年按计划一步一步走下去!


    学习要有定位,明确目标地去学习。---leaves


    python01---基础语法


    运维开发:

        这个岗位最近已经越来越火,作为一个刚毕业没两年的小青年,职位规划与目标都是迷茫的。仅此记录一下日常点滴。


    编程:这本身就很难 ===>需要用心学习的一个技能。


    学习编程的最佳方法【最佳姿势】:

    一、事前准备

        1.准备电脑

        2.找些简单的教程(如:如何用Flask开发网站,如何制作网站爬虫,如何打开文件)

            =====>开始敲代码

        3.学会Python后,才需要结合书(买书建议豆瓣8.0以上)

        4.多练习,熟能生巧。==>书读百遍其义自见。


    二、工具准备

        python编程编辑器  vim    sublime    pycharm 


    三、练习代码

        目标:把python当作工具应用到运维工作中去,成为运维界高手。


    四、Python的优势

        python语言的优势:易学、脚本,功能强大。缺点就是运行速度比java慢


        Python语言:

        1.上手简单;

        2.功能健全;

        3.语言生态系统完善,第三方库多;

        4.有众多大公司成功的案例(豆瓣)。可以应用到脚本、游戏、图形化、Web爬虫等方方面面。


    Python学习之路

    一、(Linux系统下)输入python命令进入交互界面

    [root@xiaowei ~]# python
    Python 2.7.9 (default, Oct 19 2016, 13:38:05) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    
    练习1   输出hello world
    >>>print "hello world"
    hello world
    
    练习2   四则运算
    In [2]: 2 + 4
    Out[2]: 6
    In [3]: 4*2
    Out[3]: 8
    In [4]: print "hello" + "world"
    helloworld



    二、Python的文件执行方法

    (vim 编辑后使用python +文件名运行,但是文件名要以.py后缀结尾)

    [root@xiaowei 01]# vim 01.py

    print "hello world"

    [root@xiaowei 01]# python 01.py

    hello world

    [root@xiaowei 01]#



    三、Python基础知识

    3.1.变量  用来存放数据

        In [8]: x = "hello world "

        In [9]: print x

        hello world


    3.2 语句    ===>一行代码 

        在首行加_*_  coding:utf-8 _*_ 后在.py程序中可以输入保存中文,防止不识别中文报错。

        与用户交互的函数raw_input()和input()

    raw_input()	==>获取用户输入(主要用来测试,实际生产中更多的是从数据库中查询数据。)默认是字符串
    
    input()         ===>需要带原始的数据结构,即输入字符串要带引号。
    
    eg:
    In [2]: x = raw_input("a digit: ")
    a digit: 2
    
    In [3]: type(x)
    Out[3]: str
    
    In [4]: a = input("a digit: ")
    a digit 2
    
    In [5]: type(a)
    Out[5]: int


    3.3 python的数据类型

        数字、字符串、布尔、列表(list)、字典(dict)、元组(tuple)

        逻辑控制    +++>根据情况不同执行不同代码

         循环     ====>一直不停执行 while  if   until


    3.4 四则运算

        /  ===>整除
        %  ===>取余
     eg:
         In [6]: 8/3
         Out[6]: 2
    
         In [7]: 7%3
         Out[7]: 1

    字符串的运算:==>字符串可以相乘和相加

       单双引号没有区别,注意"\"为转义符

        '''三重引号'''===>三重引号忽略所有格式,里边可以使用所有符号

    eg:
    ###转义符的使用
    In [10]: print 'I\'m Bob'
    I'm Bob
    ###字符串相加
    In [11]: 
    In [8]: print "hello  " + "world"
    hello  world
    ###字符串相乘
    In [9]: print "hello " * 4
    hello hello hello hello 
    ###三重引号用法
    In [11]: print '''
        ...: HI  Bob!
        ...: I'm Yaso.
        ...: say"Bay0"
        ...: '''
    
    HI  Bob!
    I'm Yaso.
    say"Bay0"


    3.5 字符串的格式化

        print "hello " +x  + "I am " + str(y) + "years old"。字符串的格式化主要为了解决这种输出繁琐且丑陋的方式

        有两种方式格式化:    (%)和(format)

    eg:
    ###不使用字符串格式化的丑陋拼接。
    In [23]: x = "Leaves" 
    In [24]: y = 3
    In [26]: print "hello " +x  + "I am " + str(y) + "years old"
    hello LeavesI am 3years old
    ###使用%来格式化
    In [27]: print "hello %s ,I am %s years old " %(x,y)
    hello Leaves ,I am 3 years old
    ###使用format来格式化 
    In [29]: print "hello {} ,I am {} years old ".format(x,y)
    hello Leaves ,I am 3 years old
    ##字符串转换为数字类型
    In [31]: a = '13'
    In [32]: print int(a)
    13
    In [34]: print int(a) + 4
    17

    wKiom1gpxcGzfooXAABeNmfOgL0182.png

     

    小练习:让用户输入两个数求平均值
    [root@xiaowei 01]# cat 02.py 
    x = raw_input("first digist: ")
    y = raw_input("second digist: "
    print (int(x)+int(y))/2.0
    [root@xiaowei 01]# 
    [root@xiaowei 01]# python 02.py 
    first digist: 4
    second digist: 5
    4.5


    3.6 流程控制 : 布尔值 True False

        与  and 

        或  or

        非  not


      注意:if  else 可嵌套(嵌套不要超过三层,以保证代码可读性)

    伪代码流程控制

    if  true  还是False:

        如果是True(False)执行这段代码

    else :

        执行False(True)这些行代码

    eg:流程控制
    In [36]: if 2 > 3 :
        ...:     print "condition is  True"
        ...: else :
        ...:     print "condition is false"
        ...:     
    condition is false
    
    ###具体流程控制例子
    In [37]: name = "wd"
    In [38]: age = 22
    In [39]: if name == "wd":
    ...:     if age > 14:
    ...:         print "you are %s years old" % age
    ...:     else :
    ...:         print "Too young"
    ...: else :
    ...:     print "You are {}".format(name)

      

    3.7 循环  while   for

        while、for用来实现循环

        跳出循环  break && continue 。

        break : 中断终止循环

        continue :跳过当前循环,循环没有终止

    ###break举例(跳出循环,中断并终止循环)
    In [57]: i = 0
    In [58]: while True:
        ...:     if i > 5:
        ...:         break
        ...:     print i
        ...:     i += 1
        ...:     
    0
    1
    2
    3
    4
    5
    
    ###continue举例(跳过当前循环,循环没有终止)
    In [59]: arr = ['C','js','python','js','css','js','html', 'node']
    In [61]: for i in arr:
        ...:     if i == "js":
        ...:         continue
        ...:     print i
        ...:     
    C
    python
    css
    html
    node
    
    ##小练习:用户输入数字,判断是不是闰年
    ·如果是100倍数,要被400整除
    ·被4整除
    ·比如1900年不是闰年,2000、2004是闰年
    ·如果不是闰年,提示信息,并继续输入
    [root@xiaowei 01]# cat 07.py 
    while True:
    	if (int(year) % 400 == 0):
    		print "run nian "
    		break
    	elif (int(year) % 100 != 0) and (int(year) % 4 == 0) :
    		print "run nian "
    		break
    	else :
    		year = raw_input("please  input year: ")
    [root@xiaowei 01]#
    优化后代码如下:
    while True:
    	if ((int(year) % 100 != 0) and (int(year) % 4 == 0) ) or (int(year) % 400 == 0):
    		print "run nian "
    		break
    	year = raw_input("please  input year: ")
    [root@xiaowei 01]#



    while循环伪代码

    while 情况1:

        代码会一直被执行,直到情况1为False

    eg:
    In [40]: i = 1
    In [41]: while i <= 20 :
    ...:     print i
    ...:     i += 1
    ...:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    ####让用户一直输入数字,如果输入的是0,终止程序,打印所有数字的和并求出平均值
    [root@xiaowei 01]# cat 03.py 
    x = raw_input("shu ru shu zi :  ")
    sum = 0 
    num = 0.0
    while x :
    	print "x :" + x
    	sum += int(x)
    	x = raw_input("shu ru shu zi :  ")
    	num = num + 1.0
    	#print num
    print sum/num
    print sum
    [root@xiaowei 01]# 
    [root@xiaowei 01]# python 03.py 
    shu ru shu zi :  1
    x :1
    shu ru shu zi :  2
    x :2
    shu ru shu zi :  3
    x :3
    shu ru shu zi :  
    2.0
    6
    ###
    小练习4:存10000块钱,年利率是3.25%。求多少年后存款可以翻番
    [root@xiaowei 01]# cat 05.py
    n = 10000
    time = 1
    while n < 20000:
    	n = (1+ 0.0325) * n
    	time += 1
    	
    print time ,n
    [root@xiaowei 01]# python 05.py
    23 20210.6986788


    for循环  ==>专门针对list  列表  dict字典等复杂数据结构的

    小练习:遍历列表
    In [46]: arr = ['one',2,'333','four']
    In [47]: for i in arr:
    ...:         print i
    one
    2
    333
    four


    3.8 初识列表和字典

    list   列表 [] ====>有顺序的

    dict字典 {} ===> 没有顺序的 ,结构为key -value  形式(所有数据统计的思路都是这样)

    d = {'name' :"black"}
    n [1]: d = {'name':"black",'age': 12}
    In [2]: print d['name']
    black
    In [3]: d['age'] = 50 		#修改值
    In [4]: d
    Out[4]: {'age': 50, 'name': 'black'}
    In [5]: d['newKey'] = "newValue"		#新增值
    In [6]: d
    Out[6]: {'age': 50, 'name': 'black', 'newKey': 'newValue'}
    
    
    
    ###小练习:所有数据统计的思路都是这样
    统计出列表中arr =['js','C','js','python','js','C','js','python','C','js','python','css',\
    'js','html','node' ]各个字符出现的次数。
    
    
    代码如下:
    In [7]: arr = ['js','C','js','python','js','C','js','python','C','js','python','css','js','html','node' ]
    In [8]: count_d =  {}
    In [9]: for i in arr:
       ...:     if i not in count_d:
       ...:         count_d[i] = 1
       ...:     else :
       ...:         count_d[i]+= 1
    In [10]: print count_d
    {'node': 1, 'C': 3, 'python': 3, 'js': 6, 'html': 1, 'css': 1}
    
    ##小练习:作业
    作业:求一个序列最大的两个值。arr = [1,2,3,6,111,32,433,211,10002,4444,222]
    #!/usr/bin/python 
    arr = [1,2,3,6,111,32,433,211,10002,4444,222]
    max1 = 0
    max2 = 0
    
    for i in arr:
    	if i >= max1:
    		max2 = max1
    		max1 = i
    	elif (i < max1) and (i >= max2):
    		max2 = i 
    	
    print max1, max2
    
    
    [root@www ~]# python zuoye.py 
    10002 4444
    [root@www ~]#



关键字