Day1-基础学习

  学习Python开发的第一天,初次整理Python开发笔记,没有多少知识储备,只能缺胳膊少腿的记录部分知识点,希望往后查漏补缺完善知识点,还可以起到复习的作用!!!

 

目录结构:

    1.Python能做什么?
    2.Python 的优缺点
    3.Python2跟Python3的区别
    4.Python第一个小程序
    5.Python变量及数据类型 
    6.变量\字符编码
    7.运算
    8.注释
    9.格式化
    10.模块
    11.for循环
    12.if-else 判断
    13.While 使用
    14.三次用户登录锁定
    15.三级目录

 

 

1.Python能做什么?

 

1.网络应用---包括web网站 、服务器后台服务等,在这方面Python有优秀的web框架如Django\Tornado\Flask等,网络服务框架有著名的Twisted,异步通信有牛X的eventlet.
2.科学运算---随着NumPy、SciPy、matplotlib、ETS等众多程序库的开发,Python越来越适合于做科学计算。与科学计算领域最流行的商业软件MATLAB相比,Python是一门真正的通用程序设计语言,比MATLAB所采用的脚本语言的应用范围更广泛,有更多程序库的支持,适用于Windows和Linux等多种平台,完全免费并且开放源码。虽然MATLAB中的某些高级功能目前还无法替代,但是对于基础性、前瞻性的科研工作和应用系统的开发,完全可以用Python来完成。
3.GUI程序---python提供了多个图形开发界面的库,包括PyQt,WxPython,自带的有Tkinter,这些库允许Python程序员很方便的创建完整的、功能健全的GUI用户界面。
4.系统管理工具---Python可以是做运维人员最喜欢用的语言了,可以用它来轻松的开发自动化管理工具、监控程序等,事实上现在很多开源软件也都是用Python开发的,如用于IT配置管理的SaltStack\Ansible, 做虚拟化的OpenStack,做备份用的Bacula等。
5.其它程序---你知道吗?Python 用来写爬虫也是很拿手的,还有做游戏,之前看社区里有个哥们花了不到300行代码就实现了《愤怒的小鸟》的游戏,还可以用来做嵌入式开发、做驱动程序等,总之,Python能做的事情还是非常多的,好好学吧,很快你就会fall in love with this great lan
 

  

2.Python 的优缺点

1.Python的定位是“优雅”、“明确”、“简单”---所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
2.开发效率非常高---Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
3.高级语言---当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
4.可移植性---由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
5.可扩展性---如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
6.可嵌入性---你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

  

【缺点】

1.速度慢---Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.1s,用Python是0.01s,这样C语言直接比Python快了10s,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。
2.代码不能加密---因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
3.线程不能利用多CPU问题---这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。
  

  

3.Python2跟Python3的区别

 

  (1)编码 Py3.X源码文件默认使用utf-8编码,即是支持中文

 

4.Python第一个小程序

 

    例子1:编写小程序

 

[root@yumserver ~]#python -V   ##查看系统Python版本

Python 2.6.6

[root@yumserver ~]# cat hello.py          ###每个程序都要以.py结尾
#!/usr/bin/env python                ###定义编辑器类型为python
print("hello world")                      ###和shell脚本的echo,java,printf是一个意思
[root@yumserver ~]# chmod +x hello.py     ###Linux执行需要定义+x权限
[root@yumserver ~]# ./hello.py
hello world
[root@yumserver ~]#python hello.py        ###可以直接使用python执行文件

     

     例子2:猜年龄的小游戏

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
guess_age = 15
for i in range (3):
    guess_age_num = int(input('请输入您猜的年龄:'))
    if guess_age_num == guess_age:
        print("恭喜您猜对了")
        exit()
    elif guess_age_num < guess_age:
        print("抱歉您年龄猜小了,往大的数字继续猜")
    else:
        print("抱歉您年龄猜大了,往小的数字继续猜")

 

5.Python变量及数据类型 

  Python的基本数据类型有5种:

  (1) 整型:任意大小的整数,在程序中的表示方法和数学上的写法完全一样   

  (2) 浮点型:浮点数也就是小数

  (3) 字符串:字符串是以‘’或者“”括起来的任意文本,比如‘abc’,“abc”

      如果字符串包含‘’或者“”使用转义字符\来标示,比如:

        ‘I\'m\ "ok\"!’【内容是:I'm "ok"!】

      补充:\n标示换行;\t标示制表符;字符\本身也需要转义,标示为\\

  (4) 布尔值:布尔值和布尔代数的表示完全一致,一个布尔值只有True,False两种值

  (5) 空值:空值是Python里面一个特殊的值,用None表示;None不能理解为0,因为0是有意义的,而None是一个特殊的空值

 

 

6.变量\字符编码

    变量:标识数据的名称(引号都是字符串)

    变量的命名方式:

      (1)不能数字开头,变量不能有空格

      (2)只能是字母,数字,下划线的任意组合

      (3)变量的开头不能是数字

      (4)关键字不能声明变量名称

 

7.运算

    (1) 算术运算

 

 

    (2)比较运算

 

 

    (3)赋值运算

 

 

【编辑器编写】
#!/usr/bin/env python
# -*- conding:utf-8 -*-
name = "Alex"
name1 = name
print(name,name1)
name = "chenfengjie"
print(name,name1)

【print显示】
C:\Users\cfj\AppData\Local\Programs\Python\Python35\python3.exe C:/Users/cfj/PycharmProjects/基础/day1/hello.py
Alex Alex
chenfengjie Alex
Process finished with exit code 0

    

    字符格式:

      (1)ASCII:无法将世界上的各种文字和字符全部表示出来,无法显示中文

      (2)Unicode:统一字符

      (3)UTF-8:对Unicode的压缩与优化

#!/usr/bin/env python      ###显示说明这是python编辑器读取
# -*- conding:utf-8 -*-      ###在Python2.0以前若要写入中文,需要该行字符,不然无法识别中文

 

8. 注释

   (1)“#”:代表注释单行

    (2)  三个单引号或者三个双引号注释一段语句(Python中单引号跟双引号都是一样作用,Shell还是有区别)

 

    例子1:注释多行

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''                  ###注释
name = "您好!世界"
print(name)
'''            ###注释

     

             例子2:打印多行字符

 

【编辑器编写】 

#!/usr/bin/env python # -*- coding:utf-8 -*- mes=''' name = "您好!世界" print(name) ''' print(mes) 【print显示】 C:\Users\cfj\AppData\Local\Programs\Python\Python35\python3.exe C:/Users/cfj/PycharmProjects/基础/day1/test1.py name = "您好!世界" print(name) Process finished with exit code 0

 

9.格式化

     例子1:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

name = input("name:")
age  = input("age:")
job  = input("job:")
salary = input("salary:")
info = ''' - - - - - info of %s - - - - - - Name:%s Age:%s Job:%s Salary:%s ''' %(name,name,age,job,salary) print(info)

  

 10.模块

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#import sys       ###模块sys
#print(sys.path)  ###打印环境变量
#print(sys.argv)  ###编辑器打印出脚本绝对路径;外部执行打印相对路径

import  os        ###模块os
cmd_res = os.popen("dir").read()    ###若是没有添加.read()这个后缀,则打印出来的结果只是一个内存的字符,无法读懂;”dir“是window系统的命令行查看系统目录

  

 

 11. for循环

     例子1:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

for i in range(3):
    print("---",i)
    for j in range(3):
        print(j)

  

     例子2:

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-

for i in range(0,14,3):   ###这个3代表着0-14数字之间每3个数字打印一次
    if i< 7:
        print(i)
    else:
        print("welcome")

 

  

12. if-else 判断

 

      例子1:

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-

count = 0
guangdong = '广东'
shandong = '山东'
for i in range(4):
    if count <3:
        provice = input('请来自哪个省份?provice:')
        if provice == guangdong:
            print("原来您是广东人!欢迎!")
            break
        elif provice == shandong:
            print("原来您是山东人!欢迎!")
            break
        else:
            print("请您输入正确的省份")
        count =count +1
        continue
    else:

        print("抱歉,您输入的次数过多了,稍后再试!")

 

13. While 使用

     例子1:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

count =0
while True:       ###当是真的时候就执行下面的程序
    print("count",count)
    count +=1
    if count==3:  ###当计数达到3的时候就退出程序
        break

  

 14.三次用户登录锁定

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-

user = 'cfj'
passwd   = 'redhat'
count = 0                  ###定义计数器
for i in range(4):
    if count <3:              ###计数器是在3以内的执行下面操作
        username = input("请输入您的账户:")
        with open('black_user.txt','r') as black:      ###读取黑名单
            for j in black.readlines():
                if username in j.strip():
                    print("对不起,您的用户名已锁定,暂时不允许使用!")
                    exit()
                else:
                    continue
        password = input("请输入您的密码:")
        if username == user and password == passwd:
            print("欢迎登录数据业务系统")
            break
        else :
            print("输入的账户或者密码错误")
        count += 1
    else:
        print("登录的次数超过三次,账户已被锁定")
        f = open('black_user.txt','a')        ###在black_user.txt黑名单上添加登录次数超过三次的用户,此文件需要提前创建
        f.write('%s\n'%username)
        f.close()

 

15.三级目录

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-

data = {
    '广东':{
        '深圳':{
            '南山':{},
            '福田':{},
            '宝安':{},
        },
        '河源':{
            '东源':{},
            '紫金':{},
            '和平':{},
        },
    },
        '福建':{
             '福州':{
                 '台江区':{},
                 '马尾区':{},
                 '晋安区':{},
             },
             '三明':{
                '建宁':{},
                '宁化':{},
                '明溪':{},
             },
    }
}
back_last = False
while not back_last:
    for i in data:
        print(i)
    choice1 = input("请选择所需要省份:")
    if choice1 in data:

        while not back_last:
            for j in data[choice1]:
                print(j)
            choice2 = input("请输入所选城市:")
            if choice2 in data[choice1]:
                choice6 = input("选择b退回上一级,选择q退出,输入y继续往下执行")
                if choice6 == 'b':
                    break
                elif choice6 == 'q':
                    back_last = True
                else:
                    pass
                while not back_last:
                    for k in data[choice1][choice2]:
                        print(k)
                    choice3 = input("请输入所选地区:")
                    if choice3 in data[choice1][choice2]:
                        choice7 = input("选择b退回上一级,选择q退出,输入y继续往下执行")
                        if choice7 == 'b':
                            break
                        elif choice7 == 'q':
                            back_last = True
                        else:
                            pass
                            print("welcome")
                            exit()

  

 

 

  

posted @ 2017-02-10 16:04  善战者求之于势  阅读(322)  评论(0)    收藏  举报