Python_0基础扫盲

#### 认识和了解Python

#### 第一个Python程序
- 安装Python
- 配置环境变量
- 编写Python程序的方法
    - DOS下编写
    - 记事本编写
    - IDE编写
#### Python中的注释
- 作用
    - 用来给程序员看的,增强文件可读性来使用的
- 分类
    - 单行
    - 多行(文档)
- 问题
    - 支持中文,如果出现问题,可以尝试在首行加入coding = 'utf-8'解决
#### 变量以及类型
- 定义/初始化/赋值
- 使用案例
```
#实现购物小票

```
- 变量类型
    - int
    - float
    - bool
    - complex
    - str
    - list
    - tuple
    - dict
    - set
- 变量使用的注意事项:
    - 注意:定义变量的时候,而且它已经有数据的情况下,系统自动决定了它的类型
如果想查看变量的类型,可以使用 type(变量名)进行查看
#### 标示符和关键字
- 概念
    - 开发人员在程序中自定义的一些符号和名称
如变量名、函数名、类名
- 规则
    - 由字母(包括中文)、下划线和数字组成,且数字不能开头
不能为系统关键字、大小写敏感
- 技巧
    - 见名知意
        - max_value
    - 驼峰命名
        - 大驼峰
            - UserName
        - 小驼峰
            - userName
        - 下划线连接
            - user_name
- 关键字
    - 关键字罗列
        - and as assert    break class continue def del elif else    except exec finally    for    from        global if in import    is    lambda not    or pass    print        raise return try whilewith        yield    
    - 关键字查询
        - import keyword
        - keyword.kwlist
#### 输出
- 普通的输出
    
```
print("Helloworld")
```

- 格式化输出

```
print("我今年10岁")
print("我今年11岁")
print("我今年12岁")
//格式:
age = 10
print("我今年%d岁"%age)
name="小明"
print("我的名字叫:%s,今年%d岁"%(name,age))
```

- 常见格式输出:
    - %d / %i    有符号的十进制整数
    - %u         无符号的十进制整数
    - %o        八进制整数
    - %x        十六进制整数
    - %f        浮点数
    - %g        %f的简写

- 换行输出"\n"

```
print("我的名字叫:%s,\n今年%d岁"%(name,age))
```
- 练习
    - 完成自我介绍的输出(制表符 "\t")
#### 输入
- raw_input()
- input()
#### 运算符
- 算术运算符
    - ‘+’    :加
    - ‘-’    :减
    - ‘*’    :乘
    - ‘/’    :除
    - ‘//’    :取整除  
    
    ```
    9 // 2 = 4
    9.0 // 2.0 = 4.0
    ```
    - ‘%’    :取余
    - ‘**’    :幂     
    ```
    2 ** 3 = 8
    ```

- 赋值运算符
    - 单独的赋值运算符 
        - ‘=’: 赋值             
        
        ```
        a = 20,b,c = 2,3
        ```

    - 复合赋值运算符
        - ‘+=’    :    
        
        ```
        a += b等价于  a = a + b
        ```

        - ‘-=’    :
        - ‘*=’    :
        - ‘/=’    :
        - ‘%=’    :
        - ‘**=’    :
        - ‘//=’    :
#### 数据类型转换
- int(x,[,base])    将x转换为一个整数
- float(x)        将x转换为一个浮点数
- complex(real,[,imag])    创建一个复数
- str(x)        将x转换为字符串
- repr(x)        将对象x转换为表达式字符串
- eval(str)        用来计算在字符串中的有效python表达式,并返回一个对象
- tuple(s)        将序列s转换为一个元组
- list(s)        将序列s转换为一个列表
- hex(x)        将一个整数转换为一个十六进制的字符串
- oct(x)        将一个整数转换为一个八进制的字符串
#### 判断语句介绍 if
- 语法:

```
if 要判断的条件:
    条件成立时,要做的事情
例:如果你的年龄满18岁了,可以做点什么
```
注意:代码的缩排,可以使用tab键完成
- 练习:(import random)

```
生成一个随机值,完成骰子结果大还是小的展示
```

#### 比较、关系运算符
- ==    :检查两个操作数的值是否相等,如果相等返回True,否则返回False
- !=    :检查两个操作数的值是否相等,如果值不等,则条件为True
- ‘>=’    :
- ‘<=’    :
- ‘> ’    :
- ‘< ’    :
#### 逻辑运算符
- and    :  与     表达式1  and  表达式2  两个表达式都成立,结果为True
- or    :  或     表达式1  and  表达式2  两个有一个表达式成立,结果为True
- not    :  非        not 表达式    与表达式的值相反
#### 推荐书籍

  1. - 电子书


    #### if-else
    - 语法格式:

    ```
    if 条件:
        满足条件要做的事情1
        满足条件要做的事情2
        满足条件要做的事情3
        ...
    else:
        不满足条件要做的事情1
        不满足条件要做的事情2
        不满足条件要做的事情3
        ...
    ```
    - 案例
        - 骰子大小
        - 用户登陆

    #### if-elif-else
    - 使用场景:
        - 如果满足条件1时,做事情1
        - 如果满足条件2时,做事情2
        - 否则,做事情3
    - 语法格式:

    ```
    if 条件1:
        事情1
    elif 条件2:
        事情2
    else:
        事情3
    ```
    - 案例练习:
        - 练习1:季节划分
        - 练习2:分数评级
    - 注意事项;
        - elif不能单独使用
     
    #### if的嵌套
    - 使用场景(进地铁站)

    ```
    if  安检合格:
        可以进入地铁站
        if 有地铁卡:
            直接刷卡进站
        else:
            购买临时卡
    else :
        接受检查
    ```

    - 语法格式

    ```
    if 条件1
        满足条件1做的事情
        if 条件2
            满足条件2做的事情
    ```

    - if嵌套案例
        - 用户登陆(密码+短信验证码)

    #### 猜拳游戏(石头、剪刀、布)
    - 无嵌套方案1
    ```
    result=input("石头0 剪刀1 布2\n")
    computer=random.randint(0,2)
    if (computer==0 and result == 2)  or (computer == 1 and result == 0) 
    or (computer == 2 and result == 1):
        print("你赢了")
    elif computer == result:    
        print("平局")
    else:
        print("你输了")
    ```
    - 嵌套方案2

    ```
    # 电脑出石头的时候
    if cmp == 0:
        # 如果你也出的石头
        if you == 0:
            # 平局
            print("平局,都是石头")
        # 如果你出的剪刀
        elif you == 1:
            print("很遗憾,你输了,电脑出的石头,你出的剪刀")
        # 如果你出的布
        elif you == 2:
            print("恭喜,你赢了,电脑出的石头,你出的布")
    elif cmp == 1:
        if you == 0:
            print("恭喜,你赢了,电脑出的剪刀,你出的石头")
        elif you == 1:
            print("平局,都是剪刀")
        elif you == 2:
            print("很遗憾,你输了,电脑出的剪刀,你出的布")
    elif cmp == 2:
        if you == 0:
            print("很遗憾,你输了,电脑出的布,你出的石头")
        elif you == 1:
            print("恭喜,你用了,电脑出的布,你出的剪刀")
        elif you == 2:
            print("平局,都是布")
    ```

    #### 循环语句
    - 使用场景
        - 四驱车
        - 排风扇
        - 樱木花道的99次表白
        - 结论: 重复的事情,一般都是用循环来解决    
    - while循环
        - while循环语法

        ```
        while 条件:
            条件满足时,做的事情1
            条件满足时,做的事情2
            迭代
            ...
        ```
        - 案例
        
        ```
        i = 0
        while i < 5:
            print("i=%d"%i)    
            i += 1
        ```
    #### while循环的使用
    - 求1 + 2 + 3... + 100的和
    - 求1 + 2 + 3... + 100所有偶数的和
    #### while循环的嵌套以及应用
    - 语法格式

    ```
    while 条件1:
        条件1满足时,做的事情1
        条件1满足时,做的事情2
        迭代
        ...
        while 条件2:
        条件2满足时,做的事情1
        条件2满足时,做的事情2
        迭代
    ```

    - 嵌套循环练习1

    ```
        打印 如下图形
        *****
        *****
        *****
    ```

    - 嵌套循环练习2

    ```
        打印 如下图形
        *
        **
        ***
        ****
        *****
    ```

    - 嵌套循环练习3  
    ![image](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1532531716884&di=6c9c1133cd12bcfddebb85e10fad9a57&imgtype=0&src=http%3A%2F%2Fimages.cnitblog.com%2Fblog%2F636291%2F201410%2F312219071445568.png)


    #### for循环
    - for循环的格式
      
    ```
    for 临时变量 in range(start,end,step)/Iterable:
        循环条件成立执行的代码
    else:
        循环条件不成立执行的代码
    ```
    #### 循环控制
    - break:
        - 结束当前循环
    - continue:
        - 跳过本次循环    
    - 案例break:

    ```
    for ch in "HelloWorld":
            print("-------------")
            if ch == 'W':
                break
            print ch
    ```

    - 案例 continue:

    ```
    for ch in "HelloWorld":
            print("-------------")
            if ch == 'W':
                continue
            print ch
    ```
    - 分别对照结果,思考二者的差别

    #### 课后练习

    ```
    使用循环、分支完成以下图形的打印
    图1:
       *
      ***
     *****
    图2:
       *
      ***
     *****
      ***
       *
    ```

       

    #### 字符串
    用来存储用户名、密码的数据
    - 字符串格式:
        - 双引号或者单引号中的数据,就是字符串
    ```
        name='chenduxiu' 
        #或者
        name="zhendexiu"
    ```

    - 字符串输出
        - 格式控制符   "%s"

    ```
        #例:
        name=”xiaoming“
        profession ='学生'
        address="海淀区神州科技园B座2层"
        print '-'*40
        print("姓名:%s"%name)
        print("职业:%s"%position)
        print ("地址:%s"%address)
        print ('-'*40)
    ```

    - 字符串输入

    ```
    输入的内容 = input("需要输入的内容")
    例:通过键盘输入用户名密码
    注意:python2的输入为 raw_input()
    ```

    - 下标和切片
        - 下标索引:就是指的编号,类似超市储物柜的编号,通过编号就能找到对应的东西

    ```
        #例如:
        name="xiaoming"
        aaa=0
        count = len(name)
        while aaa < count:
            print(name[aaa])
            aaa+=1
    ```

    - 切片
        - 字符串,列表,元组都支持切片操作
        - 语法

    ```
        [起始:结束:步长]  区间位置:左闭右开
    ```


    ```
    例:
        name=‘xiaoming’
        print(name[0:2])
        打印结果   "xi"
        name='0123456789'
        print(name[0:2])
        #从第二个取到最后
        print(name[2:])
        #从头开始取,直到索引值为3的位置(不包括该元素)
        print(name[:3])
        #从索引值为2的位置开始取,直到倒数第一个(不包括倒数第一个)
        print(name[2:-1])
        #从头开始取,每两个切出一个
        print(name[0::2])
        #倒序的内容输出
        print(name[::-1])
        #倒序切出索引5到索引值1中间的数据
        print(name[5:0:-1])
    ```

    - 字符串常见操作
        - find/rfind

        ```
        #检查str是否包含在str1中,如果是返回开始的索引值,否则返回-1
        str1.find()
        str1="good good study,day day up"
        index = str1.find("stu")
        print(index)
        ```
        - index/rindex

        ```
        跟find()方法一样,只不过目标字符串如果不在要查找的字符串中会报一个异常
        ```

        - count

        ```
        返回str在目标字符串中start-end之间出现的次数
        str1="good good study,day day up"
        print(str1.count("good"))
        ```

        - replace

        ```
        把str1中指定的字符串"good",用“222”进行替换,最多替换2次    
        str1="good good study,day day up"
        print(str1.count("good"))
        str2 = str1.replace("good","222",2)
        print(str2)
        ```

        - split

        ```
        以" "为分割符切片str1
        str1="good good study,day day up"
        array = str1.split(" ")
        print(type(array))
        print(array)
        ```

        - capitalize

        ```
        把字符串的第一个字符大写
        print(str1.capitalize())
        ```

        - title    

        ```
        把字符串中的每一个单词的首字母大写
        print(str1.title())
        ```

        - startswith
        
        ```
        检查字符串是否以指定字符串开头,
        是则返回True,否则返回False
        例:判断是否为有效网址
        ```

        - endswith    

        ```
        检查字符串是否以指定字符串结尾,是则返回True,否则返回False    
        例:判断是否为有效邮箱
        ```

        - lower
        
        ```
        转换字符串中所有的大写字符为小写
        ```

        - upper

        ```
        转换字符串中所有的小写字符为大写
        ```

        - ljust
     
        ```
        返回一个原字符串左对齐,并使用空格填充至长度width的新字符
        
        ```

        ```
        str1 = "hello"
        print(str1.ljust(10))
        ```
        - rjust
     
        ```
        返回一个原字符串右对齐,并使用空格填充至长度width的新字符
        ```

        ```
        str1 = "hello"
        print(str1.rjust(10))
        ```

        - center
     
        ```
        返回一个原字符串居中对齐,并使用空格填充至长度width的新字符
        str1 = "hello"
        print(str1.center(10))
        ```
        - lstrip

        ```
        删除目标字符串左边的空格
        str1 ="    hello    "
        print(str1.lstrip())
        ```

        - rstrip

        ```
        删除目标字符串右边的空格
        str1 ="    hello    "
        print(str1.rstrip())
        ```

        - strip
        
        ```
        删除目标字符串两边的空格
        str1 ="    hello    "
        print(str1.strip())
        ```

        - rfind

        ```
        类似于find()函数,不过是从右边开始查找
        ```

        - rindex

        ```
        类似与index()函数,不过是从右边开始查找
        ```

        - partition

        ```
        把目标字符串分割成str前,str以及str后三部分,得到一个tuple(元组)
        str1="nihaoma"
         str1.partition("hao")
         ('ni', 'hao', 'ma')
        ```

        - rpartition

        ```
        从右边开始,把目标字符串分割成str前,str以及str后三部分,得到一个tuple(元组)
        str1="nihaoma"
         str1.partition("hao")
         ('ni', 'hao', 'ma')
        ```

        - splitlines

        ```
        将目标字符串按照行进行分割,返回一个列表
        str1 = "Hello\nWorld"
        print(str1.splitlines())
        运行结果:
        ['Hello', 'World']
        ```

        - isalpha

        ```
        判断目标字符串中是否所有的字符都为字母,返回True,或者False
        str1 = "123Hello"
        print(str1.isalpha())
        ```

        - isdigit

        ```
        判断目标字符串中是否所有的字符都为数字,返回True或者False
        str1 = "123Hello"
        print(str1.isdigit())
        ```

        - isalnum

        ```
        如果字符串中都是字母或者数字则返回True,否则返回False
        str1="abc123"
        print(str1.isalnum())
        ```

        - isspace

        ```
        如果字符串中只包含空格,则返回True,否则返回False
        ```

        - join

        ```
        将字符串或者列表,元组中的每个元素(字符)使用指定字符连接起来
        li=["one","two","three"]
        str2="_"
        str2 = str2.join(li)
        print(str2)
        ```

    #### 列表介绍
    - 引入: 
        - 如何存储班级中所有同学的名字?

    - 语法格式:

    ```
    names=["李大钊","陈独秀","蔡元培","陈佩斯"]
    #注意:比C语言中的数组功能更强大,列表中的元素可以为不同类型
    list1=[10,"人",2.5,True]
    ```

    - 访问列表中的元素
        - 设置值

        ```
        list1[0] = 100
        ```

        - 获取值

        ```
        print(list[0])
        ```

    - 列表的循环遍历
        - 使用for循环进行遍历

        ```
        #例:
        list1=[10,"人",2.5,True]
        for a in  list1:
            print(a)
        ```

        - 使用while循环进行遍历

        ```
        list1=[10,"人",2.5,True]
        length = len(list1)
        i = 0
        while i < length:
                print(list1[i])
                i += 1
        ```

    - 列表的常见操作
        -  增
            - append

            ```
            #通过append向指定列表添加元素
            #例:
            list2 =["one",2,"san"]
            list2.append("four")
            print(list2)
            #结果:['one', 2, 'san', 'four']
            ```

            - extend

            ```
            #通过extend可以将一个列表中的元素逐个添加到另外一个列表中
            #例:
            l1=[1,2]
            l2=[3,4]
            l1.extend(l2)
            print(l1)
            #结果:[1, 2, 3, 4]
            ```

            - insert

            ```
            #insert(index,object)在指定的位置处插入元素object
            l1=[1,2]
            l2=[3,4]
            l1.extend(l2)
            print(l1)
            #结果:[1, [3, 4], 2]
            ```

        - 查
            - in

            ```
            如果存在,则返回True,否则返回False
            l1 =[1,2,3,4,5]
            print( 1 in  l1)
            ```

             - not in

            ```
            与in相反
            l1 =[1,2,3,4,5]
            print(1 not  in l1)
            ```

            - index

            ```
            返回元素在列表中的索引值
            index(obj)
            index(obj,fromIndex,toIndex)   区间位置为前闭后开
            如果没有列表中不包含查找元素,会报错
            ```

            - count
        
            ```
            #返回元素在列表中出现的次数
            list1 = [1,2,3]
            print(list1.count(1))
            ```
        - 删
            - del

            ```
            #根据下标进行删除
            #例:
            l1 = [2,3,4]
            del  l1[0]
            print(l1)
            #结果:[3,4]
            ```
            - pop

            ```
            #删除最后一个元素
            #例:
            l1 = [2,3,4]
            l1.pop()
            print(l1)
            #结果:[2,3]
            ```

            - remove

            ```
            #根据元素的值进行删除
            l1 = [2,3,4]
            l1.remove(2)
            print(l1)
            #结果:[3,4]
            ```
        - 改

        ```
        直接通过下标来修改元素
        例:  
        l1=[1,2]
        l1[0] = 100
        print(l1)
        结果:[100,2]
        ```

        - 排序以及列表反转

        ```
        #sort方法将list按特定顺序进行排列,默认为由小到大,参数reverse=True可改为倒序,由大到小
        #例:
        l1 = [2,4,1,9,23]
        l1.sort()
        print(l1)
        #结果:[1,2,4,9,23]
        l1.sort(reverse=True)
        print(l1)
        #结果为:[23,9,4,2,1]
        #反转方法: reverse()
        ```

    #### 列表的嵌套
    - 概念

    ```
    一个列表中的元素,又是一个列表
    ```

    - 嵌套列表的遍历

    ```
    l1=[[1,2],4,[5,6]]
    for l in l1:
        if type(l) == list:
            for ll in l:
                print(ll)
        else:
            print(l)
        print("-"*10)
    ```
    - 练习

    ```
    循环录入3个学生信息(包括name,age)
    使用嵌套列表完成学生信息的存储

    ```


    #### 元组
    - 元组概念

    ```
    Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用“()”
    列表使用"[]"
    ```

    - 操作
        - 访问

        ```
        t=(1,2,3)
        print(t[0])
        修改或者删除元素的话会报错:
        t[0]= 10
        删除报错:
        t.pop()
        但是可以变向进行删除
        tuple->list(进行删除操作)->tuple
        ```
    #### 字典介绍
    - 字典的引入

    ```
    #如何存储将多个国家的简称及名字完成对应的存储?
    #例如:   CN:中国    JP:日本        US:美国
    country = {"CN":"中国","JP":"日本"}
    ```

    - 字典中元素的访问:
        -  直接访问

        ```
        print(country['CN'])
        打印结果:"中国"
        如果没有"CN"这个key,则会报错
        ```

        - 通过get方法访问

        ```
        value=country.get('CN')
        #这时候value的值为 "中国"
        value = country.get('SH','中国')
        #这个意思是如果有key ‘SH’则得到对应值,没有的话,得到默认值"中国"
        ```

    - 字典的常见操作1
        - 修改元素

        ```
        可以直接进行修改
        student={'name':'陈独秀','age':99}
        student['age']=100
        ```

        - 添加元素
        
        ```
        student['address']='北京市朝阳区'
        #如果字典中没有'address'这个key,则会将这个元素条件到字典中,如果已经包含这个key
        则新值会将旧值覆盖
        ```

    - 删除元素
        -  del 删除

        ```
        #例:
        #删除某个key
        del student['age']
        #删除所有的键值对,删除之后,将不能在进行访问
        ```

        - clear  
        ```
        #清空所有的键值对,清除后依旧可以进行访问
        stu.clear()
        ```


    - 字典的常见操作2
        -  len()  键值对个数的获取

        ```
        stu={'name':‘xiaoming’,'age':19}
        len(stu)
        #长度为2
        ```

        -  keys()

        ```
        #返回一个字典中所有的key的列表
        allKeys= stu.keys()
        for k in allKeys:
            print(k)
            print(allKeys[k])
        ```

        - values() 
        ```
        #返回一个包含字典所有value的列表
        stu.values()
        #['xiaoming',19]
        ```

        - items() 
        ```
        #返回一个包含所有(键、值) 元组的列表
        stu.items()
        #[('name','xiaoming'),('age',18)]
        ```

    - 字典的遍历
        - 所有key的遍历

        ```
        stu={'name':'xiaoming','age':19}
        for key in stu.keys():
               print(key)
        
        ```
        - 所有value的遍历
        
        ```
        stu={'name':'xiaoming','age':19}
        for value in stu.values():
            print(value)
        ```

        - 所有item的遍历

        ```
        stu={'name':'xiaoming','age':19}
        for item in  stu.items():
            print(item)
        ```

        - 所有key和value的遍历

        ```
        stu={'name':'xiaoming','age':19}
        for key,value in stu.items():
            print(type(value))
            print("%s=%s"%(key,value))
        ```

    #### 公共方法
    - 公共运算符
        - '+'

        ```
        作用:合并、连接
        例:str1="hello"+"world"
        结果:”helloworld“
        list1=[1,2]+[3,4]
        结果:[1, 2, 3, 4]
        例:tuple1=(1,2) + (3,4)
        结果:(1,2,3,4)
        ```
        - '*'

        ```
        作用:复制
        例:  'hello' * 2
        结果: 'hellohello'
        例: [1,2] * 2
        结果:[1,2,1,2]
        例:(1,2) * 2
        (1,2,1,2)
        ```

        - in

        ```
        作用:元素是否存在
        例:
        result = '123' in 'HelloWorld123'
        print(result)
        result= 1 in [1,2]
        print(result)
        result = 2 in (1,2)
        result = 'name' in {'name':'xxx','age':12}
        print(result)
        ```

        - not in

        ```
        作用:元素书否不存在,用法跟in 一样
        ```

    - python的内置函数
        - len 

        ```
        作用:得到元素的个数
        例:len([1,2])
        len((1,2))
        获取到的为键值对个数
        len({'name':'xiaoming','age':18})
        ```

        - max(...)

        ```
        作用:获取最大值
        例:
        max(1,2,3)
        max([1,2,3,4])
        找字典中的最大键
        a =max({'a':1,'b':2,'x':3})
        ```

        - min(...)

        ```
        作用: 获取最小值(用法与max一致)
        ```

        - del

        ```
        删除元素或者删除容器
        del 元素/容器变量名
        del list1[0]
        del list1
        ```

        - 变量.del()  
        ```
        #在python3中已经不存在这种用法
        list1 = [1,2,3]
        list1.del()
        ```


    - 引用的使用
        - 什么是引用

        ```
        windows中的快捷方式
        家庭地址
        ```

        - 非引用类型案例:

        ```
        a = 10
        b = a
        print(id(a))
        print(id(b))
        b=100
        print(a)
        print(b)
        print(id(a))
        print(id(b))
        ```

        - 引用类型案例:

        ```
        list1 = [1,2,3]
        list2 = list1
        print(id(list1))
        print(id(list2))
        list2[0]=100
        print(list1)
        print(list2)
        print(id(list1))
        print(id(list2))
        ```
        - 引用类型内存图分析

    #### 课后练习

    ```
    有能力的同学用函数完成
    学生管理系统:
    1.添加学生
    2.查询学生
    3.删除学生
    4.修改学生
    5.退出系统
    ```
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值