美文网首页
python练习

python练习

作者: 彬彬刘 | 来源:发表于2020-04-09 22:35 被阅读0次

    [TOC]

    认识python

    • python是编译型语言还是解释性语言,两种类型的语言的程序有什么不同?
      解释性语言,编译型语言如C或C++需要其他编译器和工具转换成二进制语音在计算机中执行,Python这样的解释型语言自带编译器直接运行即可
    • python相对与其他语言有什么优点和缺点?
      简单,开源,丰富的第三方库
    • Python应用场景有哪些
      web开发,科学计算,游戏,软件开发
    • 什么是python的交互模式,如何进入python交互模式
      CMD运行python程序进入交互模式
    • 在linux系统上,可以通过哪些方式编写出一个python程序
      文件后缀名改为.py
    • 在终端中,如何运行一个.py文件,有几种方法,分别怎么操作
      python test.py

    python基础知识:注释、变量、变量类型、标示符、关键字

    • 你认为注释是用来做什么的
      对代码的用意原理进行解释说明,避免再次阅读代码是不能理解
    • 在python中,注释分几类?分别如何定义?
      两种,一种是单行注释,“# ”,一种是多行注释“‘ ’”
    • 请说出你对变量的理解,变量的作用是什么
      变量是数据的容器,帮助我们表示抽象的规律,避免重复性质的工作
    • 请说出你对变量类型的理解
      Python不需要指定变量的类型,所以Python的变量类型其实是只里面存储的数据的数据类型,分为数字型和非数字型,数字型包括整数、浮点型、布尔型、复合型(一般不用),非数字型包括字符串、列表、元组、字典
    • 请说出你对标示符的理解
      标示符就是程序员定义的 变量名、函数名等命名对象
    • 常见的标示符的命名规则有哪些
      只能使用英文、数字、下划线的组合,不能用数据开头,标识符不能与关键字相同
    • 如何在程序中写一个注释
      ‘# ’号开头后面写注释“‘ ’”中间写注释
    • 变量的命名应当符合什么规则,通常需要注意那几个点
      只能使用英文、数字、下划线的组合,不能用数据开头,标识符不能与关键字相同
    • 请定义一个变量str1并赋值一个字符串"hello",再定义一个变量str2并赋值一个字符串"python",那么str1 + str2 的值是多少
    str1 = 'hello'
    str2 = 'python'
    print(str1+str2)
    #hellopython
    
    • 请写出你所知道的python的数据类型
      int float str bool
    • 进入python3交互模式,定义任意个变量,使用并查看其类型
    a = 1
    print(type(a))
    
    • 说出下面第一行注释的作用
    #!/usr/bin/python
    # coding=utf-8
    # 第一个注释
    print "Hello, Python!"
    # s 是变量 
    s = 10
    print(s)
    

    指定python运行目录

    • 请分别使用大驼峰和小驼峰命名法定义两个变量,并为其赋值
      MyName = 'LiuBin'
      myName = 'liuBin'
    • 布尔类型的变量有哪些值
      False True
    • 什么是Python中的关键字?关键字能作为变量名吗?
      关键字是python已经设置好的标识符,不能作为变量名
    • 请指出下列变量的命名哪些是不规范的:
    A、test     B、python     C、2name     D、num2          E、if
    F、!hello    G、print     H、itcast     I、omg         J、abc-def
    K、temp     L、else         M、TEST         N、Options
    

    CEFGJL


    python基础知识:输入、输出、运算符、数据类型转换

    • python是用什么方法来进行输出操作的?
      print()

    • 请输出你对输入的理解
      用代码 获取 用户通过 键盘 输入的信息

    • python是用什么方法来进行输入操作的?
      input()或input('请输入:')

    • 什么是格式化,格式化输出有什么作用
      在输出字符串中使用%,输出文字信息的同时,一起输出 数据

    • 目前你学过哪几种python的运算符
      算数运算符,比较运算符,逻辑运算符,赋值运算符
      要求:

    • 练习所有的运算符操作(算术、赋值、复合赋值)

    # 尝试所有运算符
    # 算数运算符
    print(1+2)
    print(1-2)
    print(1*2)
    print(1/2)
    print(3%2)
    print(5//3)
    print(3**2)
    # 赋值运算符
    a = 1
    print(a)
    # 复合赋值运算符
    # a += 1
    # a -= 1
    a *= 2
    print(a)
    # 上面算数运算符都能跟=号组合
    
    • 练习实现字符串转换为数字,以及数字转换为字符串
    a = '123'
    print(type(a))
    b = 123
    print(type(b))
    a = int(a)
    b = str(b)
    print(type(a))
    print(type(b))
    
    • python3中如何对数值取商和取余
      // %
    • 变量a="10";b="30";c=a+b;请说出c的值是什么,类型是什么,如果我希望让c="40",应该怎么做
      c = '1030'
      c = int(a)+int(b)
    • 编写一段代码,定义任意数量(至少三个)的变量,并按照'a = xxx,b=xxx,...'的格式打印出变量的名字和该变量所存储的数据,要求运用格式化输出,并且每一行代码,须写上相应的注释进行说明
    # 定义变量
    a = 1
    b = 2
    c = 'hello'
    # 格式化输出
    print('a=%d,b=%d,c=%s'%(a,b,c))
    
    • 编写一个cart.py(打印名片)程序
      运行程序后,分别输入姓名、性别、年龄、单位、联系方式等数据,并用变量分别接收
      输入完成后,最后打印出姓名、性别、年龄、单位、联系方式等信息,输出的格式自行设定,尽量美观
      输出需使用上格式化输出
      提示:%d-数字 %s-字符串 %f-小数
    # 名片小程序
    name = input("请输入您的姓名:")
    gender = input("请输入您的性别:")
    age = input("请输入您的年龄:")
    company = input("请输入您的工作单位:")
    moble = input("请输入您的手机号:")
    email = input("请输入您的邮箱:")
    
    print('%s\t%s\t%s岁\n公司:%s\n手机:%s\nEmail:%s'%(name,gender,age,company,moble,email))
    
    • 修复程序bug
      -请找出下列代码运行时出错的原因,一一列出并一一纠正。
    # coding=utf-8
    # 定义字符串变量temp1
    temp1 = "hello python' ------>   引号
    # 接收用户的输入
    temp2 = input("请输入:")
    # 定义数字变量temp3
    temp3 = 333
    # 定义字符串变量temp4
    temp4 = "333"
    # 求和
    temp5 = temp3 + temp4  ----->   int类型 与 str类型相加
    
    if temp5 == 666      ----->    缺少冒号:
        print("%s + %s = %s, 挺溜啊"%(temp3,temp4,temp5))
    if temp5 != 666:
    print("一点儿也bu溜")     ------>    缩进不对,if语句下的代码块不能为空
    print("您刚刚输入的是:%d"%temp2)     ------>     temp2是字符串类型
    

    提示:

    1. input输入的数据,是字符串类型
    2. 不同类型的变量不能进行运算
    3. == 符号 判断两端的值是否相等
    4. != 符号 判断两边的值是否不相等
    5. if 后面的的代码需要缩进
    # coding=utf-8
    # 定义字符串变量temp1
    temp1 = 'hello python' #------>   引号
    # 接收用户的输入
    temp2 = input("请输入:")
    # 定义数字变量temp3
    temp3 = 333
    # 定义字符串变量temp4
    temp4 = "333"
    # 求和
    temp5 = temp3 + int(temp4) # ----->   int类型 与 str类型相加
    
    if temp5 == 666: #     ----->    缺少冒号:
        print("%s + %s = %s, 挺溜啊"%(temp3,temp4,temp5))
    elif temp5 != 666:
        print("一点儿也bu溜") #    ------>    缩进不对,if语句下的代码块不能为空
        print("您刚刚输入的是:%s"%temp2)  #   ------>     temp2是字符串类型
    

    条件语句

    • 什么是判断语句
      使用if语句对条件进行判断的代码块
    • 请写出if判断语句的使用格式
    if 条件判断:
      执行动作
    elif 条件判断:
      执行动作
    else :
      执行动作
    
    • 按照下列步骤操作
    1. 编写一个counter.py程序
    2. 在counter.py中指定使用./counter.py运行时,使用的是python3
    3. 使用注释开启中文支持
    4. 设计程序分三次获取3个数字,并赋值给变量
    5. 将3次输入的数据转换为数字类型,然后把相加后的值赋值给变量sum
    6. 如果sum>100000, 则输出"您输入的三个数的和忒大了"
    7. 如果sum>10000, 则输出"您输入的三个数的和挺大"
    8. 如果sum>1000, 则输出"您输入的三个数的和有点大"
    9. 如果sum>100, 则输出"您输入的三个数的和不算大"
    10. 如果sum<=100, 则输出"您输入的三个数的和忒小了"
    11. 要求每次输入最终都只打印一条语句,且该语句符合你的预期,如我分别输入100,200,300,最后只会打印"您输入的三个数的和不算大",而不会打印其他情况

    提示:

    1. 注意安排好判断语句的顺序,否则会得到超出预期的结果
    2. which python3 可以查看python3程序所在位置
    # 4. 设计程序分三次获取3个数字,并赋值给变量
    num1 = input('请输入3个数字(1/3):')
    num2 = input('请输入3个数字(2/3):')
    num3 = input('请输入3个数字(3/3):')
    # 5. 将3次输入的数据转换为数字类型,然后把相加后的值赋值给变量sum
    sum = int(num1) + int(num2) + int(num3)
    # 6. 如果sum>100000, 则输出"您输入的三个数的和忒大了"
    if  sum>100000:
        print('您输入的三个数的和忒大了')
    # 7. 如果sum>10000, 则输出"您输入的三个数的和挺大"
    elif sum>10000:
        print('您输入的三个数的和挺大')
    # 8. 如果sum>1000, 则输出"您输入的三个数的和有点大"
    elif sum>1000:
        print('您输入的三个数的和有点大')
    # 9. 如果sum>100, 则输出"您输入的三个数的和不算大"
    elif sum>100:
        print('您输入的三个数的和不算大')
    # 10. 如果sum<=100, 则输出"您输入的三个数的和忒小了"
    else :
        print('您输入的三个数的和忒小了')
    # 11. 要求每次输入最终都只打印一条语句,且该语句符合你的预期,如我分别输入100,200,300,最后只会打印"您输入的三个数的和不算大",而不会打印其他情况
    
    
    image.png
    • 编写代码,1-7七个数字,分别代表周一到周日,如果输入的数字是6或7,输出“周末”,如果输入的数字是1-5,输出“工作日”,如输入其他数字,输出“错误”。
    a = input('请输入1-7中的一个数字:')
    if int(a)<=5:
        print('工作日')
    elif int(a)<=7:
        print('周末')
    else:
        print('错误')
    

    循环语句

    完整的for循环语法是什么?

    • 使用while循环计算1~100的累积和(包含1和100)。
    a = 0
    sum = 0
    while a<100:
        a += 1
        sum = sum + a
    print(sum)
    
    • 使用while循环输出如下图形:


    a = 0
    while a<5:
        a += 1
        print('* '*a)
    
    • 使用while循环输出如下图形:


    a = 5
    while a>0:
        print('* '*a)
        a -= 1
    
    • 完成猜拳游戏的练习
    # 输入猜拳选择
    a = int(input('请出拳:石头(1),剪刀(2),布(3)'))
    if a == 1:
        print('你选择出:石头')
    elif a == 2:
        print('你选择出:剪刀')
    elif a == 3:
        print('你选择出:布')
    # 程序随机出拳
    b = random.randint(1, 3)
    if b == 1:
        print('你遇到了:石头')
    elif b == 2:
        print('你遇到了:剪刀')
    elif b == 1:
        print('你遇到了:布')
    #产生结果
    if (a == 1 and b == 2) or (a == 2 and b == 3) or (a == 3 and b == 1):
        print('你获得了胜利')
    elif a == b:
        print('平局')
    else:
        print('你输了,再来一局吧!')
    
    • 完成九九乘法表的练习
    # 观察九九乘法表,列号*行号
    row = 1
    while row <= 9:
        col = 1
        while col <= row:
            print('%d*%d=%d' % (col, row, col * row), end='\t')
            col += 1
        print()
        row += 1
    

    高级变量类型列表、元组

    • 列表和普通变量有什么区别
      列表里面存储多个元素,是个元素的集合
    • 怎样测量列表中元素的个数?
      len(list)
    • 怎样获取列表的某个元素
      list[n]
    • 解释一下什么是越界
      想要获取的索引超出列表索引范围
    • 什么是切片?
      切片是列表的指定部分
      listn:m
      list:n
      listn:
    • 怎么想列表中添加元素?
      list.insert()
      list.append()
      list.extend()
    • 如何删除列表中的某个元素?
      del list[n]
      list.pop(n)
      list.remove(n)
    • 如何修改列表中的某个元素?
      赋值修改list[n] = n
    • 如何去查找列表中某个元素所对应的下标?
      list.index('n')
    • 已有列表nums=[11,22,33,44,55],使用for循环遍历列表
    for i in nums:
      print(i)
    
    • 已有列表nums=[11,22,33,44,55],使用while循环遍历列表
    a = 0
    while a<=len(nums):
      print(nums[a])
      a+=1
    
    • 已有列表nums=[14,22,63,21,5],将其从小到大排序
      nums.sort()
      nums
    • 元组定义的格式?
      元组用() 定义
    • 元组和列表的区别?
      元组的元素不能修改也不能重复

    函数

    • 什么是函数? 为什么要使用函数?
      函数是通过一个指定的标识符()可以复用一块代码功能的功能,目的是为了提高代码的复用性
    • Python的内置函数有什么?分别有什么作用?
      type(),返回对象的类型
      int(),将对象的数据类型变成整数
    • 定义函数、和调用函数的格式分别是什么?
      def func():
      func()
    • 编写一段代码,定义一个函数求1-100之间所有偶数的和,并调用该函数打印出结果。
    def func():
        a = 1
        sum = 0
        while a<100:
            if a%2 == 0:
                sum+=a
            a+=1
        return sum
    print(func())
    
    • 函数的文档说明有什么用?
      通过''' '''在函数内部最开始设置函数说明,为了方便调用的时候了解函数的参数,返回值等关键信息
    • 什么是函数的参数?为什么使用参数?
      def func(a,b) a,b就是参数,通过参数可以扩展函数的使用,参数起到占位作用,函数运行时会替换成真实数据
    • 分别说明什么是形参和实参?
      形参就是定义函数时设置的参数,实参是调用函数时传入的参数
    • 编写一段代码,定义一个函数求两个数之间所有整数的和,在调用该函数时传入这两个数的具体值。
    def func(a,b):
        sum = 0
        for n in range(int(a),int(b)+1):
            sum += n
        return sum
    
    print(func(1,5))
    
    • 什么是返回值?
      函数中return关键字后面的代码就是返回值
    • 根据参数、返回值,函数有哪四种类型?
      位置参数,默认参数,关键字参数,可变参数
      答案:无参数、无返回值无参数、有返回值有参数、无返回值有参数、有返回值
    • 什么是函数的嵌套、函数嵌套的格式是什么?
      在函数的内部定义函数
      def func():
      def func():
    • 什么是局部变量?
      函数内部的变量
    • 什么是全局变量?
      函数外部的变量
    • 全局变量和局部变量的区别是什么?

    定义:
    全局变量定义在全局空间,函数外部
    局部变量定义在函数内部
    引用:
    全局变量可以被所有的函数使用
    局部变量只能在该函数内使用,其它函数不能访问
    修改:
    局部变量在函数内部修改不受限制
    全局变量在函数内部修改受限制

    • 怎么在函数内部去修改全局变量的值?
      变量前加global 申明为全局变量

    • 设计一个程序,计算出 0-n 之间所有整数的和,并将计算的值返回。

    def func(n):
        a = 0
        sum = 0
        while a<=n:
            sum += a
            a+=1
        return sum
    print(func(100))
    
    • 使用函数完成用户登录验证的程序。(用户名和密码传入到函数中进行验证)
    def func(username,password):
        if username == 'python' and password== '123456789':
            return '欢迎'
        else:
            return '账号或密码错误'
    print(func('python','123456789'))
    
    • 定义一个函数,要求输入大于0的数字n,判断传入数字的奇偶性,如果是奇数返回 "n是奇数",否则返回 “n是偶数”,否则 返回“请输入大于0的整数”
    def func(n):
        if n>0:
            if n%2==0:
                return'n是偶数'
            else:
                return 'n是奇数'
        else:
            return '请输入大于0的整数'
    print(func(-1))
    
    • 定义一个函数main(),将1—200(范围包含1和200)中3的倍数或者有数字3的所有整数保存到列表list_1中,并输出。
    def main():
        list_1 = []
        for i in range(1,201):
            if i%3==0 or str(i).find('3')>=0: # find(),包含的话,返回第一次出现的位置,没有的话为负数
                list_1.append(i)
        return list_1
    print(main())
    
    • 编写一个程序,通过键盘循环获取5个学生的信息,将学生信息组成字典保存到列表中,最终将学生信息列表打印出来。(学生信息包括 name 、age、id)
    def main():
        list = []  # 储存所有学生信息的列表
        i = 1
        while i <= 5:
            # 获取指定的输入信息
            id = input('请输入学生ID:')
            name = input('请输入学生姓名:')
            age = int(input('请输入学生年龄:'))
            # 将输入信息储存在字典中,循环时会覆盖新的输入
            stu = {'id': id, 'name': name, 'age': age}
            # 将字典数据添加到列表中
            list.append(stu)
            i += 1
        return list
    
    print(main())
    
    • 函数中return的作用
    • 函数中如果有多个return,会是什么效果
      只有一个return会被执行
      一旦执行了某个return,函数也将被立即终止,其余return将不会再执行
    • python中函数的参数类型有哪些
      位置参数,默认参数,关键字参数,可变参数
    • 什么是缺省参数
      默认参数,实参不提供时会按照默认值运行函数,
    • 什么是不定长参数
      可变参数,分为元组可变参数(args)和字典可变参数(**args),元组可变参数会将实参都包装成元组,字典可变参数会将关键字参数封装成字典
    • 定义一个使用不定长参数的函数,并在函数中打印出参数及其类型,统计传入参数的个数,
    def main(*abc):
    
        print('共有%s个参数,其中:' % len(abc))
        for i in abc:
            #print(i)
            print('参数%s类型为:%s' % (i, type(i)))
    
    main(1,2,'ren')
    
    • 定义一个函数max,接受的参数类型是数值,最终返回两个数中的最大值
      def max(a,b):
        if a>=b:
            return a
        else:
            return b
    
    print(max(3,1))
    
    • 定义一个函数min,接受的参数类型是数值,最终返回两个数中的最小值
      def min(a,b):
        if a<=b:
            return a
        else:
            return b
    
    print(max(3,1))
    
    • 分别定义加减乘除四个函数实现两个数之间的加减乘除操作
      def Calculate(a,b):
      return a*b
    • 比较下列三个函数的区别:
    # 无参数计算1-100的累加
    def func1():
        i = 1
        sum = 0
        while i<=100:
            sum += i
            i += 1
        return sum
    #位置参数,计算参数-100的累加
    def func2(n):
        i = n
        sum = 0
        while i <=100:
            sum += i
            i += 1
        return sum
    # 默认参数,计算n-m的累加,如不传参数则默认计算0-100的累加
    def func3(n=1, m=100):
        i = n
        sum = 0
        while i <= m:
            sum += i
            i += 1
        return sum
    
    
    • 定义函数findall,实现对字符串find方法的进一步封装,要求返回符合要求的所有位置的起始下标,如字符串"helloworldhellopythonhelloc++hellojava",需要找出里面所有的"hello"的位置,最后将返回一个元组(0,10,21,29),即将h的下标全部返回出来,而find方法只返回第一个.
    def findall(a,b):
        w = []
        # 初始化每次find返回坐标在原字符串的的位置
        m = 0
        # 当find能返回坐标时就继续循环,不能返回坐标时返回-1
        while a.find(b) >= 0:
            index = a.find(b) #记录当前字符串的find坐标
            if len(w)>0: # 第一次find返回坐标时不需要累加len(b)
                m = m + index +len(b) # 累计历次find的坐标
            else:
                m = m + index # 第一次find返回坐标时不需要累加len(b)
            w.append(m) # 把累计坐标添加进列表
            a = a[index+len(b):] # find返回一次坐标就截掉坐标+b字符串,剩下部分才能再利用find返回坐标
        return tuple(w) # 返回元组结果
    print(findall("helloworldhellopythonhelloc++hellojava",'hello'))
    

    文件操作

    • 如何理解文件?
      文件是用以永久性保存内存中的运算结果的具体形式

    • 为什么要用文件?
      永久性保存内存中的运算结果,便于以后再次使用

    • 简述文件操作的流程?
      打开
      读/写
      关闭

    • 如何打开一个文件?
      open() 或者with open()as f

    • 上题中打开文件的函数格式是什么?
      open('地址',‘模式’) with open("test.txt","r") as f

    • 有一个test.txt文件,以只读的方式打开此文件,用变量f接收文件打开的返回值.
      f = open('test.txt','r')

    • 文件访问模式中r表示什么模式,r+表示什么模式?
      r,只读模式,只能读取不能写,r+,即能都又能写

    • 文件访问模式中r与r+有什么区别?
      r,只读模式,只能读取不能写,r+,即能都又能写

    • 文件访问模式中w表示什么模式,w+表示什么模式?
      w,只写模式,只能写不能读,w+,即能都又能写

    • 文件操作中要在文件中追加改如何操作?
      采用追加模式a打开文件,file.write('内容')

    • 如何关闭一个文件?
      file.close()

    • 将打开的test.txt文件关闭,用变量f接收返回值.
      f = open('test.txt')
      f.close()
      提示:
      打开文件之门的"钥匙",open()函数.
      文件的访问模式即为访问权限
      打开一个文件,可以不用指定打开的模式.
      如果读了多次数据,那么后面读取的数据是从上次读完的位置开始的.

    • 写出目前我们所学对文件操作的哪几个权限?
      w r a w+ r+ a+ wb rb ab

    • 如何在打开的test.txt文件中写入数据?
      file.write()

    • 请在test.txt文件中写入"wow,so beautiful!".
      f = open('test.txt','w')
      f.write('wow,so beautiful!')
      f.close()
      或者
      with open("lan.txt","w") as f:
      f.write("wow you are so beautiful")

    • 编写一段代码以完成两份文件之间的相互备份

    1. 创建gailun.txt文件
    2. 打开文件在gailun.txt中写入"德玛西亚!人在塔在!"
    3. 将输入的数据格式化输出到终端上
    4. 在文件夹中创建gailun副本.txt文件
    5. 将gailun.txt文件中的数据写入gailun副本.txt文件中
    6. 打开文件,查看文件中是否有内容
    # 创建gailun.txt文件
    with open('gailun.txt','w+',encoding='utf-8') as f:
        # 打开文件在gailun.txt中写入"德玛西亚!人在塔在!"
        f.write('德玛西亚!人在塔在!')
        f.seek(0,0) # offset ,偏移量,whence:可选,默认值为 0。0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
        content = f.read()
        # 将输入的数据格式化输出到终端上
        print('文件内容是:%s'%content)
    
    # 在文件夹中创建gailun副本.txt文件
    with open('gailun.txt','r',encoding='utf-8') as f_:
        # 将gailun.txt文件中的数据写入gailun副本.txt文件中
        f_.seek(0,0)
        content = f_.read()
        print(content)
        new_file = open('gailun副本.txt','w+',encoding='utf-8')
        new_file.write(content)
        new_file.close()
    # 打开文件,查看文件中是否有内容
    
    • 什么情况下要用到复制?
    • 怎样实现文件的复制?
    • 如何理解文件的定位?
    • 如果在读写文件的过程中,需要从另外一个位置进行操作的话,该怎么操作?
    • seek()函数有几个参数,分别代表什么?
    • seek(5,0)表示什么意思?
    • seek(-5,2)表示什么含义?
    • seek(3,1)表示什么含义?
      提示:
      文件的复制过程实质上就是把一个文件中的内容读出来,然后写入另一个文件中。
      获取文件当前位置用tell(),重新设置读写位置要用seek().

    相关文章

      网友评论

          本文标题:python练习

          本文链接:https://www.haomeiwen.com/subject/atfkmhtx.html