• Python基础一


    1、python的出生和应用

      python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。  

    (龟叔:2005年加入谷歌至2012年,2013年加入Dropbox直到现在,依然掌握着Python发展的核心方向,被称为仁慈的独裁者)。

      2017年7月的TIOBE排行榜,Python已经占据第四的位置, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。

    2、Python2.x 与Python 3.x的不同

    第1处不同:

    Python2.x:源码重复,不规范,而且python2.7到2020年将不再更新维护

    python3x:整合源码,更清晰简单优美。

    第2处不同:

    Python2x:默认的编码是ascii(ascii码只有英文、数字、字符),解决方式:# -*- encoding:utf-8 -*-

    Python3x:默认的编码是utf-8

    指定解释器: #!/usr/bin/env python

    # -*- encoding:utf-8 -*-

    第3处不同:

    Python2x:有long、int类型(print 'abc'   print('abc') 这两种方式都支持)

    Python3x:没有long、int类型(print('abc'))

    第4处不同:

    Python2x:raw_input()   input() 只能输入数字类型

    Python3x:input 

    备注:input 出来的数据类型全部是字符串。

    3、python语言的划分&Python分类

    python语言的划分:

    编译型:将你的代码一次性全部编译成二进制,然后在运行。

    缺点:开发效率低,不能跨平台。

    优点:执行效率高。

    代表:c语言

    解释型:当程序开始运行时,将代码一行一行的解释成二进制,执行。

    缺点:执行效率低。

    优点:开发效率高,可以跨品台。

    代表:python语言

    python分类:我们学习的就是cpython

                                                            python规则

    cpython   jpython    其他语言python      pypy :将你的代码一次性转换成字节码010101这种方式传给操作系统

    cpython   转换成c语言的字节码010110,传给操作系统。  jpython转换成java的字节码传给操作系统。       

                                                            操作系统

    4、变量&常量

    4.1、变量是什么?

    变量:把程序运行的中间结果临时的存到内存里,以便后续的代码调用。

    4.2、变量定义的规则

    变量名只能是字母、数字或者下划线的任意组合,变量名的第一个字符不能是数字,关键字不能声明为变量名

    python中的关键字:

    ['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']

    4.3、常量

    常量即指不变的量,例如pai 3.141592653..., 或在程序运行过程中不会改变的量

    举例:常量一般是大写,放到内容的顶部:AGE_OF_OLDBOY = 56(约定俗成全部大写的变量为常量。放到文件最上面。)

    5、注释

    单行注释:#

    多行注释:‘’‘被注释的内容 ’‘’

    6、基础数据类型

    什么是数据类型?

      我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。Python中常用的数据类型有多种,今天我们暂只讲3种, 数字、字符串、布尔类型

    6.1、整数类型(int)。

    int(整型)

    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

    在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

    long(长整型)

    跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。

    注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。

    注意:在Python3里不再有long类型了,全都是int

    6.2、字符串类型(str)。

    在Python中,加了引号的字符都被认为是字符串!

    那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合

    msg = "My name is Alex , I'm 22 years old!"

    多引号什么作用呢?作用就是多行字符串必须用多引号

    msg = ''' 今天我想写首小诗, 歌颂我的同桌, 你看他那乌黑的短发, 好像一只炸毛鸡。 ''' print(msg)

     字符串拼接:字符串可以相加、相乘,不可以减和除

    6.3、布尔值(True,False)

    布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断

    7、格式化输出(2种方法,一个注意事项)

    第一种方法:

    #格式化输出 %表示占位符(想替换哪儿,把%符占住) 后面接:s d(s代表字符串str,d代表数字类型)

    #ps str -- > int str全部由数字组成 ‘1234’ (字符串转换成数字,前提str全部由数字组成)

    #ps int -- > str str(int) (整型转换诚字符串)

    #第一种表现形式:(input用户交互)

    # name = input('请输入你的名字:')

    # age = input('请输入你的年龄:')

    # job = input('请输入你的工作:')

    # hobby = input('请输入你的爱好:')

    # msg1 = ''' ------------ info of %s -----------

    # Name : %s

    # Age : %d

    # job : %s

    # Hobbie: %s

    # ------------- end -----------------

    # ''' % (name,name,int(age),job,hobby)

    # print(msg1)

    #第二种方法:

    # dic = {'name':'老男孩','age':45,'job':'Teacher','hobby':'吹'}

    # msg1 = ''' ------------ info of %(name)s -----------

    # Name : %(name)s

    # Age : %(age)d

    # job : %(job)s

    # Hobbie: %(hobby)s

    # ------------- end -----------------

    # ''' % dic

    # print(msg1)

    # msg2 = '我叫%s,今年%s,学习进度5%%' % ('太白',23)

    # print(msg2)

    #注意事项:

    5%这里面的%必须再加一个,因为这样就转义了,不然会默认成是占位符,年龄%d和%s都可以,因为如果写成是字符串,数字也可以能替换

    msg1='我的名字是%s,我的年龄是%d,学习进度是5%%' % ('小燕子',25)

    print(msg1)

    我的名字是小燕子,我的年龄是25,学习进度是5%

    现有一练习需求,问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式

    ------------ info of Alex Li ----------- Name : Alex Li Age : 22 job : Teacher Hobbie: girl ------------- end -----------------

    你怎么实现呢?你会发现,用字符拼接的方式还难实现这种格式的输出,所以一起来学一下新姿势

    只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦

    name = input("Name:") age = input("Age:") job = input("Job:") hobbie = input("Hobbie:") info = ''' ------------ info of %s ----------- #这里的每个%s就是一个占位符,本行的代表 后面拓号里的 name Name : %s #代表 name Age : %s #代表 age job : %s #代表 job Hobbie: %s #代表 hobbie ------------- end ----------------- ''' %(name,name,age,job,hobbie) # 这行的 % 号就是 把前面的字符串 与拓号 后面的 变量 关联起来 print(info)

    %s就是代表字符串占位符,除此之外,还有%d,是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字啦

    age : %d

    我们运行一下,但是发现出错了。。。

    说%d需要一个数字,而不是str, what? 我们明明输入的是数字呀,22,22呀。

    不用担心 ,不要相信你的眼睛我们调试一下,看看输入的到底是不是数字呢?怎么看呢?查看数据类型的方法是什么来着?type()

    name = input("Name:") age = input("Age:") print(type(age))

    执行输出是

    Name:Alex Age:22 <class 'str'> #怎么会是str Job:IT

    让我大声告诉你,input接收的所有输入默认都是字符串格式!

    要想程序不出错,那怎么办呢?简单,你可以把str转成int

    age = int( input("Age:") ) print(type(age))

    肯定没问题了。相反,能不能把字符串转成数字呢?必然可以,str( yourStr )

    问题:现在有这么行代码

    msg = "我是%s,年龄%d,目前学习进度为80%"%('金鑫',18) print(msg)

    这样会报错的,因为在格式化输出里,你出现%默认为就是占位符的%,但是我想在上面一条语句中最后的80%就是表示80%而不是占位符,怎么办?

    msg = "我是%s,年龄%d,目前学习进度为80%%"%('金鑫',18) print(msg)

    这样就可以了,第一个%是对第二个%的转译,告诉Python解释器这只是一个单纯的%,而不是占位符。

    8、基本运算符

    运算符

      计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算

    算数运算

    以下假设变量:a=10,b=20

    比较运算

    以下假设变量:a=10,b=20

    赋值运算

    以下假设变量:a=10,b=20

    逻辑运算

    针对逻辑运算的进一步研究:

      1,在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。

    例题:

    判断下列逻辑语句的True,False。

    1,3>4 or 4<3 and 1==1 2,1 < 2 and 3 < 4 or 1>2 3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1 4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6

    6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6

      2 ,  x or y , x为真,值就是x,x为假,值是y;

                 x and y, x为真,值是y,x为假,值是x。

     

    例题:求出下列逻辑语句的值。

    8 or 4 0 and 3 0 or 4 and 3 or 7 or 9 and 6

    in,not in :

    判断子元素是否在原字符串(字典,列表,集合)中:

    例如:

    #print('喜欢' in 'dkfljadklf喜欢hfjdkas') #print('a' in 'bcvd') #print('y' not in 'ofkjdslaf')

     9、if语句:(5种)

    格式:

    if 条件:

    结果

    第1种:

    # if 2 > 1 :

    # print(666)

    第2种:

    # if 2 < 1:

    # print(666)

    # else:

    # print(555)

    第3种:

    #3 多种条件选一个结果

    # num = int(input('猜一下数字:'))

    # if num == 6:

    # print('请你吃饭')

    # elif num == 3:

    # print('请你喝酒')

    # elif num == 1:

    # print('请你大保健')

    第4种:

    4 多种条件必选一个结果

    # num = int(input('猜一下数字:'))

    # if num == 6:

    # print('请你吃饭')

    # elif num == 3:

    # print('请你喝酒')

    # elif num == 1:

    # print('请你大保健')

    # else:

    # print('没机会了.....')

    第5种:嵌套(不要嵌套太多,三四层就够了,如果嵌套太多,就该想想其他办法)

    if 条件:

      if 条件:

        pass

          if  ...

    10、while循环(无限循环)

    格式:

    while 条件:

    结果

    例子:

    # while True:

    # print('凉凉')

    # print('斗地主')

    # print('社会摇')

    如何终止循环:

    1、改变while后面的条件 2、使用break

    # count = 1

    # while count <= 100:

    # print(count)

    # count = count + 1

    # count = 1

    # flag = True

    # while flag:

    # print(count)

    # count = count + 1

    # if count == 101:

    # flag = False

    # count = 1

    # sum = 0

    # while count < 101:

    # sum = sum +count

    # count += 1

    # print(sum)

    #while 关键字:break,continue

    #break 结束循环。

    #continue 跳出本次循环,继续下一次循环。

    # while True:

    # print(333)

    # print(5455)

    # print(222)

    # break

    # print(888)

    # print(666)

    # while True:

    # print(333)

    # print(222)

    # continue

    # print(888)

    # print(666)

    #while else:如果while循环,被break打断,则不走else

    # count = 1

    # while count < 5:

    # print(count)

    # count += 1

    # else:

    # print('循环正常完毕')

    11、逻辑运算符

    #逻辑运算符

    #运算符计算顺序:() > not > and > or

    #前后都是比较运算 2 > 1 and 3 < 4 or 4 > 5 and 2 < 1

    # print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) # True

    # print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # False

    #前后都是数字

    '''x or y if x is True,return x,else return y 备注:and的运算与之相反

    int ---> bool 非0为True,0为Flase

    '''

    # print(3 or 2)

    # print(2 or 6)

    # print(0 or 6)

    # print(3 and 5)

    结果为:

    3

    2

    6

    5

    # print(1 > 2 or 3 and 4 > 5) 结果为:False

    12、for循环(有限循环)

    #dict

    dic = {'name':'alex','age':12,'python21':['张三','李四']}

    # print(dic['name'])

    #list: []

    # li = [1,2,3,'alex']

    # print(li[3])

    #for 循环 有限循环。

    li = [1,2,3,'alex']

    s = 'fdsagfdagasd'

    # for i in s:

    # print(i)

    # for i in s:

    # if i == 'a':pass

    # print(i)

    # else:

    # print(666)

    '''

    13、初始编码。(中国汉字有九万多,不到十万)

    电报:滴滴滴 滴滴 滴

    电脑:存储文件,传输文件,010101010

    asiic:8位 == 1个字节 ,表示一个字符。(你看到的内容的最小组成元素就是一个字符)  ,ascii码最多只能表示256种可能。(asiic码只包含:字母、数字、特殊字符,没有中文)

    A: 01000001

    万国码:unicode 把所有国家的语言包含进去。(65536种可能)

    A : 01000001 01000001 两个字节表示一个字符。

    中:01000101 01000001 两个字节表示一个字符。

    万国码改版:(2**32种可能,所有文字都包含,但是目前的全球才2**21种可能,所以资源浪费)

    A : 01000001 01000001 01000001 01000001 四个字节表示一个字符。

    中: 01000101 01000001 01000101 01000001 四个字节表示一个字符。

    存在问题:浪费资源。

    unicode升级成utf-8:

    utf-8:最少用8位表示一个字节,最少用一个字节表示一个字符。

    A: 01000001 一个字节

    欧洲文字:01000001 01000001 两个字节

    亚洲:中:01000001 01000001 01000001 三个字节.

    utf-16 最少用16位表示一个字符。

    gbk:国标。(只针对中国的文字)

    A: 01000001 一个字节

    中:01000101 01000001 两个字节表示一个字符。

    单位的转化:

    8bit 1bytes

    1024bytes == 1kb

    1024kb == 1mb

    1024mb == 1Gb

    1024Gb == 1Tb

    密码本:中文与二进制的对照本

    走 00000001

    新 00000101

    开 00010101

    一 00001011

    家 00000011

    001001001001001001001001001001

    14、基础数据类型的简单介绍。

    dict:{'name':'alex','age':12,'python21':['张三','李四....']}

    键:int,bool,str,tuple().

    dic = {'name':'alex','age':12,'python21':['张三','李四....']}

    dic['name']

    课后作业:

    #用户登陆(三次机会重试)

    #input username password

    #while i

    #可以支持多用户登录

    li = [{'username':'alex','password':'SB'},

    {'username':'wusir','password':'sb'},

    {'username':'taibai','password':'男神'},

    ]

    #客户输入了三次机会,都没成功,给它一个选择,让它在试试

    # Y 再给他三次机会...不输入了,print('臭不要脸.....')

    # dic = {True:'alex',False:'SB'}

    # dic = {(1,2,3):'alex',(2,3):'SB'}

    # dic[(1,2,3)]

  • 相关阅读:
    基于Kubernates微服务案例
    领导人怎样带领好团队
    前端性能核对表Checklist-2018
    国际巨头互联网公司一些运营与管理思路
    IT研发工程师职业规划
    高性能风控数据平台设计
    基础设施DevOps演进之路
    2017-2018年Scrum状态调查报告
    大型互联网系统的监控流水线
    小程序【情书与歌】一小时过审经验小谈
  • 原文地址:https://www.cnblogs.com/lucky-penguin/p/8746996.html
Copyright © 2020-2023  润新知