zoukankan      html  css  js  c++  java
  • 自学Python Day_03


    Python擅长的领域

    • web开发
      • DjangopyramidTornadoBottleFlaskWebPy
    • 网络编程
      • TwistedsRequestsScrapyParamiko
    • 科学技术
      • SciPyPandaslpython
    • GUI图形开发
      • wxPythonPyQTKivy
    • 运维自动化
      • OpenStackSaltStackAnsible腾讯蓝鲸

    二进制编码

    • ASSICII码 每个字符统一需要8个bit来储存

    计算机容量

    • 1位=1bit
    • 8bit=1byte=1字节
    • 1024bytes=1kbytes=1KB
    • 1024KB=1MillionBytes =1MB=1兆
    • 1024MB=1Gigabytes
    • 1024GB=1TB
      -024TB=1PB

    编程语言

    • 编程语言就是一套与计算机交互的语法规则。学习编程就相当于学习语法规则。
    • C语言是操作系统的开发语言
    • C++是C语言的加强版
    • Java虚拟机,支持跨平台
    • PHP纯web开发语言
    • Python刚开始被作为脚本语言
    • C#即C sharpe
    • ruby跟Python相似
    • perl语言,在Unix上开发的语言,做文字处理
    • shell脚本语言,简单易学,基于Unix、Linux,做简单的系统管理任务,运维人员必学
    • erlang函数式编程,面向并发的编程语言
    • go开源编程语言
    • JavaScript最广泛的语言,主要写前端的语言
    • nodejs后端语言,全栈式的语言
    • vb微软的脚本语言,bat脚本
    • lua是nginx脚本语言

    语言类型

    • 编译型
      • 全部翻译,再执行,翻译即编译,此类型的有C、C++等
    • 解释型
      • 边执行边翻译,此类型的语言有Python、PHP、Java、C#、Perl、Ruby、JavaScript

    Python版本选择

    • python2.x
      • 默认编码为ASSIC,不支持中文
    • python3.x
      • 默认编码为UNICODE,默认支持中文
      • 不兼容python2.x
      • 核心语法调整,更易学
      • 新特性默认值在3.x上有
    • unicode 万国码,支持所有国家和地区。向下兼容GB2312、GBK
    • UTF—8是unicode的拓展集,可变长的字符编码集
    • 支持中文的第一张表——GB2312

    当使用Python2.x在Windows的cmd运行代码时,如果有中文,将会出现乱码。因为Windows使用的是GBK编码,所以要在代码前声明使用哪种编码。在代码前面加上#!-*- coding:utf-8 -*-。除此之外,在输出变量时,还要在变量前加上u即声明使用unicode编码。

    例:

    #!-*- coding:utf-8 -*-
    print u"我是坏坏!"
    

    环境变量

    此电脑–>属性–>高级系统设置–>环境变量–>系统变量–>找到Path变量,编辑。在环境变量后面加上Python的安装路径,每个路径之后用隔开。修改后保存。

    • D:Program FilesPython35Scripts;
    • D:ProgramFilesPython35;
    • D:Program FilesPython27

    执行py程序方式

    • 交互器,缺点程序不能永久保存,主要用与简单的语法测试相关
    • 文件执行

    变量

    • 为了存储程序运算过程中的一些中间结果,为了方便日后调用
    • 命名规则
      • 要具有描述性
      • 变量名只能_,数字,字母组成,不可以是空格或特殊字符(#?<.,¥$*!~)
      • 不能以中文为变量名
      • 不能以数字开头
      • 保留字符是不能被使用
    • student_number //python官方推荐命名规则
    • studentNumber //驼峰体,微软程序用的较多

    常量

    • 不变的量。如pie = 3.141592653…
    • 在Python里面所有的变量都是可变的
    • 用全部大写的变量名来代表此变量为常量

    Python中没有常量,所有的量都是可以改变的

    变量重新赋值

    我们先来看一个列子

    name = "bad"
    
    name2 = name
    print(name,name2)
    
    name = "jay"
    print(name)
    print(name2)
    

    那么上面的程序,在重新给name赋值以后,name2的值会不会也发上变化呢?

    其实是不会的。在给name赋值的时候,相当于是划分了一块地方,叫bad。而name指向badname2通过name找到bad,也指向bad

     
     
    name
    bad
    name2

    当重新给name赋值时,只是新划了一块地方,叫jayname指向jay,而name2还是指向bad不变。

     
     
    name
    jay
    name2
    bad

    运行结果:

    bad bad
    jay
    bad
    

    内存释放

    内存,即上面划分badjay的地方。那么如果一直定义变量,内存使用完了怎么办?这就需要将内存释放。

    在Python中,不需要专门去释放内存,当定义的值不被变量指向,就会自动释放内存。取消指向有两种方法,一种是删除变量;一种是重新指向新的值。

    • del name
    >>> name="bad"
    >>> name
    'bad'
    >>> del name
    >>> name
    Traceback (most recent call last):
      File "<pyshell#6>", line 1, in <module>
        name
    NameError: name 'name' is not defined
    

    为了方便理解,定义的变量就像是一个门牌号。而内存就是一栋大楼。定义的值就是大楼中的小房间。定义变量时,就是把门牌号挂到指定的房间门上。当不需要再使用这个房间的时候,我们可以使用两种方法释放这房间。

    • del name即直接把门牌号拆下来,然后楼管(Python的内存回收机制)就会把房间回收了
    • name = "jay"即把门牌号拆下来,装到别的房间去

    注释

    • 对代码进行说明或是不执行哪一段代码时,需要使用到注释。
    • 注释分类:
      • # 单行注释,也可以放在代码后,作为代码说明
      • ''' 多行注释,可以使用三个单引号或者三个双引号,将需要注释的多行内容引起来

    用户输入

    :用户输入名字和年龄,打印出名字和年龄。

    name = input("your name:")  #将输入的数据赋值给name
    age = input("your age:")  #将输入的数据赋值给age
    
    print(name,age)  #输出变量name,age
    

    运行结果:

    your name:bad
    your age:20
    bad 20
    

    :用户输入姓名和年龄,打印出用户的姓名以及还能活多久。

    death_age = 80  #定义一个变量为80
    
    name = input("your name:")  #输入用户姓名
    age = input("your age:")  #输入用户年龄
    
    print(type(age))
    
    print("Your name:",name)  #打印出用户姓名
    
    print("You can still live for:",death_age-int(age),"year")  #不使用int()将会报错
    
    # 将三个字符串拼接
    print("You can still live for:"+ str(death_age-int(age)) +"year")  #不使用str()将会报错
    
    • 所有带单引号,双引号的都为字符串
    • int 整数(insteger),str字符串(string)
    • +为拼接符
    • input接受的所有数据都是字符串,即便输入的是数字,也依旧会被转换为字符串处理
    • 最后打印时,death_age是整数型,age是字符串,无法进行加减运算,所以要对age的数据类型进行转换
    • int(age)是将字符串类型的age转换为整数型,同理str()可以将整数型转换为字符串类型
    • print(type(age))是打印出变量的类型
    • 可能遇到以下报错
      • TypeError: unsupported operand type(s) for -: ‘int’ and ‘str’ #不支持int'str'-运算,这因为没有将age转换为整数型
      • TypeError: can only concatenate str (not “int”) to str #只能将字符串连接到字符串,这是因为我们将字符串与数字进行了拼接

    运行结果:

    your name:bad
    your age:20
    <class 'str'>
    Your name: bad
    You can still live for: 60 year
    You can still live for:60year
    

    if语句

    :定义一个数字,用户输入猜的数字,猜对了则输出"Yes,You are Right",猜错了则输出"Sorry,You are Warning"

    my_num = 20
    
    guess_num = int( input("请输入您猜的的年龄:") )
    
    #伪代码,仅提供思路
    '''
    if guess_num == my_num then
        print("Yes")
    else
        print("No")
    '''
    
    if guess_num == my_num:
        print("Yes,You are Right!")
    else:
        print("Sorry,You are Warning!")
    
    • 伪代码并不是真正的代码,仅提供思路
    • 程序中判断值是否相等用==
    • if一行代码结束后后需要添加:else之后相同
    • print前面需要打四个空格,或者一个Tab进行缩进。只有Python必须缩进
    • 可能会出现的报错:
      • IndentationError: expected an indented block缩进错误,期待一个缩进块。这里是因为没有缩进,所以报错。
      • SyntaxError: invalid syntax语法错误。if:else:是连用的,不能分开
      • IndentationError: unindent does not match any outer indentation level缩进错误,非缩进不匹配任何外部缩进级别。使用了tab或四个空格,但是其他缩进使用的不是tab或四个空格。

    Tab是不等于四个空格的,在notpad++里选择视图–>显示符号–>显示空格与制表符,就可以看到Tab(即制表符)和空格是不同的。缩进可以不用输入四个空格,只要所有的缩进保持一致,都是一个空格或者多个,都可以。但是不建议,建议使用Python官方推荐的使用四个空格。

    运行结果:

    请输入您猜的的年龄:20
    Yes,You are Right
    请输入您猜的的年龄:30
    Sorry,You are Warning!
    

    :用户输入一个成绩,90以上输出A,80-90输出B,60-80输出C,60一下输出不及格!

    score = int( input("请输入你的成绩:") )
    
    if score > 90:
        print("A")
    elif score > 80:
        print("B")
    elif score > 60:
        print("C")
    else:
        print("不及格!")
    
    
    • Python只匹配一个选项,匹配到之后,就不会再继续向下匹配

    练习:

    • 编写登录入口
      • 输入用户名、密码
      • 认证成功后显示欢迎信息
      • 输错三次后锁定

    可以先自己尝试动手写一下,写出自己的思路。这里的代码可能不是最简的,有更好的可以留言指出。

    user_name_true = "jay"
    user_password_true = "1234"
    
    for i in range(3):
        user_name_input = input("请输入你的用户名:").strip()
        user_password_input = input("请输入你的密码:")
        if user_name_input != user_name_true or user_password_input != user_password_true:
                if i >= 2:
                    print("The account!")
                    break
                else:
                    print("Try again!You have ",2-i, "chance!")
                    i += 1
        else:
            print("Welcom!")
            break
    

    运行结果1:

    请输入你的用户名:jay
    请输入你的密码:111
    Try again!You have  2 chance!
    请输入你的用户名:aaa
    请输入你的密码:1234
    Try again!You have  1 chance!
    请输入你的用户名:jay
    请输入你的密码:1234
    Welcom!
    

    运行结果2:

    请输入你的用户名:jay
    请输入你的密码:111
    Try again!You have  2 chance!
    请输入你的用户名:bad
    请输入你的密码:1234
    Try again!You have  1 chance!
    请输入你的用户名:bad
    请输入你的密码:111
    The account!
    
    • 还有个要求是在账户锁定之后,无法再进行登录。再次运行代码也依旧无法再进行登录,输出The account!有能力的可以自己尝试一下实现这个要求。
    • 提示是可以将锁定的账户写入到文件中。奈何我还是个小白,也没能实现,只能读取文件内容,写内容到文件中去,属实有些为难我了。
    • 提供的思路是将锁定的用户写入文件,在输入用户名之后,先判断这个用户是否在文件中。自己可以多加尝试。

     

    以上内容均属原创,如有不详或错误,敬请指出。
    
    本文作者: 坏坏
  • 相关阅读:
    Day10 python基础---函数进阶
    Day9 python基础---函数初识
    Day8 python基础
    Day7 python基础
    Day6 python基础
    Day5 python基础
    Day4 python基础
    Day3 python基础
    TensorFlow学习笔记5-概率与信息论
    TensorFlow学习笔记6-数值计算基础
  • 原文地址:https://www.cnblogs.com/bad5/p/12424280.html
Copyright © 2011-2022 走看看