Python全栈工程师 (exercises)

# 1:给定一个数,判断他是正数,负数,还是0
a = int(input("请输入一该个整数"))
if a == 0:
    print(a, "是0")
elif a > 0:
    print(a, "是正数")
else:
    print(a, "是负数")

# 练习2:输入一个季度的数字 输出该季度有那几个月
b = int(input("请输入一个季度:1.春季2.夏季3.秋季4.冬季"))
if b > 4:
    print(b, "不是季节")
elif b < 0:
    print(b, "不是季节")
else:
    if b == 1:
        print(b, "春季有:一月,二月,三月")
    elif b == 2:
        print(b, "夏季有:四月,五月,六月")
    elif b == 3:
        print(b, "秋季有:七月,八月,九月")
    else:
        print(b, "冬季有:十月,十一月,十二月")

# 联系3:输入一个月份 输出这个月份在那个季度
c = int(input("请输入一个月份判断在那个季度"))
if c < 0:
    print(c, "不是月份")
elif c > 12:
        print(c, "不是月份")
elif c < 4:
    print(c, "在春季")
elif c < 7:
    print(c, "在夏季")
elif c < 10:
    print(c, "在秋季")
elif c <= 12:
    print(c, "在冬季")

# 练习4:3公里内10元 超出1.9元/公里  超过15公里 每公里加50%回空费 3.15元/公里
# 输入公里  打印车费

d = int(input("请输入行驶公里数:"))
if d <= 3:
    print("车费:10元")
elif d > 4:
    if d < 15:
        g = (d - 3) * 1.9 + 10
        print(d, "公里:", g, "元")
    else:
        f = (d - 15) * 3.15 * 1.5 + 12 * 1.9 + 10
        print(d, "公里:", f, "元")
elif d < 0:
    print("公里数输入错误")

练习:
  1. 一个商店卖西瓜,7元一个,您带20元钱能买到几个西瓜? 剩多少元?
  2. 一个学生毕业薪资10000元,每个涨薪 20%,请问十年后这个学生的薪资是多少?

1. 打印如下图形:
   *******
   *     *
   *     *
   *******
2. 已知矩形的长边长为6cm,短边长为4cm,用表达式求
    1) 周长是多少?
    2) 面积是多少?

练习:
  1. 指定一个圆的半径是r = 9cm
    1) 计算圆的周长
    2) 计算圆的面积

  2. 交量交换练习:
     已知有两个变量:
       a 绑定 10000
       b 绑定 20000
     问,在不创建任何新数据对象的情况下,如何让a 和 b 交换绑定的对象
     a = 10000
     b = 20000
     ....
     print(a)  # 20000
     print(b)  # 10000

练习:
  1. 中国古代的秤是16两一斤,请问古代对216两是古代的几斤几两,写程序打印出来?

  2. 从凌晨 0:0:0 计时,到现在已经过了63320秒,
    请问现在是几时,几分,几秒,写程序打印出来
  提示:
    可以用地板除和求余实现

  3. 温度转换:
    摄氏温度 = 5.0/9.0*(华氏温度-32)

    请问100华氏温度是多少摄氏温度.写程序算出来
    思考:
      如果知道当前温度是摄氏温度度,能否算出华氏温度是多少?

练习:
  将数字3.14 用变量pi绑定
  将pi变量转为整数,用变量i绑定
  将 pi 变量 与 i变量相减,结果用f变量绑定
    1. 判断f是否等于 0.14? 为什么?
    2. 删除所有的变量
    (用交互模式来实现)

练习:
  1. 输入两个整数, 分别用变量x, y绑定
    1) 计算这两个数的和,并打印结果
    2) 计算这两个数的积,并打印结果
    3) 计算x的y次方并打印结果
    如:
      请输入x: 10
      请输入y: 20
    打印如下:
      10 + 20 = 30
      10 * 20 = 200
      10 ** 20 = ...
  2. 今天是小明20周岁的生日,假设每年有365天,计算它过了多少个星期天,余多少天
  3. 分三次输入当前的小时,分钟和秒数,在终端打印时此距离凌晨0:0:0 秒过了多少秒

练习:
  任意输入一个数
    1) 判断这个数是否大于100
    2) 判断这个数是否小于0
    3)判断这个数是否在80~100之间

练习:
  1. 输入一个季度 1~4的整数.输出这个季度有哪儿几个月,如果输入的不是1~4的整数,则提示用户您输错了

  2. 输入一年中的月份(1~12) 输出这个月在哪儿个季度,如果输入的是其它数,则提示您输错了

思考:
  score = input(‘请输入学生成绩:‘) or ‘0‘
  score = int(score)
  请问这个or是在做什么?

练习:
  1. 北京出租车计价:
    收费标准:
      3公里以内收费13元
      基本单价: 2.3元/公里 (超出3公里以外)
      空驶费:超过15公里后,每公里加收单价的50%的空驶费(即3.45元/公里)
    要求:
      输入公里数,打印出费用金额(以元为单位四舍五入)
  2. 输入一个学生的三科成绩(三个整数):
    打印出最高分是多少?
    打印出最低分是多少?
    打印出平均分是多少?
  3. BMI指数(Body Mass Index) 以称身体质量指数
     BMI值计算公式:
        BMI = 体重(公斤) / 身高的平方(米)
     例如:
       一个人69公斤,身高是173公分
       BMI = 69 / 1.73**2 = 23.05
    标准表:
      BMI < 18.5   体重过轻
      18.5 <= BMI < 24 体重正常
      BMI > 24  体重过重
    要求: 输入身高的体重,打印出BMI的值并打印体重状况

思考:
  如果一个字符串同时包含如下字符该怎么办?
     ‘   "  ‘‘‘  """ 

练习:
  试求出以下字符串含有多少个字符?
  ‘1234abcd‘  # 8
  ‘5\‘4"‘     # 4
  ‘\"A\x34\U00006041‘  # 4
  ‘\b\n\td\r‘
  ‘\\nn\\x41‘

练习:
  写一个程序,打印一个高度为4行的矩形方框
    要求输入一个整形数字,此整数代表矩形的宽度,输出此矩形
  如:
    请输入矩形宽度: 10
    ##########
    #        #
    #        #
    ##########
    请输入矩形宽度: 5
    #####
    #      #
    #      #
    #####

练习:
  输入一个字符串,打印如下内容:
    1. 打印这个字符串的第一个字符
    2. 打印这个字符串的最后一个字符
    3. 如果这个字符串的长度是奇数,打印中间这个字符
    注:
      求字符串的长度的函数len(s)

练习:
  1. 写一个程序,输入一个字符串,把字符串的第一个字符和最后一个字符去掉后,打印出处理后的字符串

  2. 输入任意一个字符串,判断这个字符串是否是回文
    回文示例:
      上海自来水来自海上
      ABCCBA
      12321
    (回文是指中心对称的文字)

练习:
  1. 写一个程序,输入一段字符串,如果字符串不为空,把第一个字符的编码值打印出来
  2. 写一个程序,输入一个整数值(0~65535), 打印出这个数值所对应的字符

练习:
  1. 输入一个字符串用变量s绑定
     1) 判断您输入的字符串有几个空格
     2) 将原字符串的左右空白字符去掉, 打印出剩余的字符个数
     3)判断您输入的是否是数字
     4) 如果是数字,判断这个数字是否大于100
  2. 输入三行文字,让这三行文字在一个方框内居中显示
     如输入:
       hello!
       I‘m studing python!
       I like python
    显示如下
      +---------------------+
      |       hello!        |
      | I‘m studing python! |
      |    I like python    |
      +---------------------+
    注:请不要输入中文

练习:
  输入三行文字,让这三行文字依次以20个字符的宽度右对齐输出
  如:
    请输入第1行: hello world
    请输入第2行: aaa
    请输入第3行: ABCDEFG
  输出结果如下:
            hello world
                    aaa
                ABCDEFG

  做完上面的题后思考:
     能否以最长的字符串的长度进行右对齐显示(左侧填充空格)

问题:
  输入一个整数n, 写程序打印如下:
     这是第 1 行
     这是第 2 行
     这是第 3 行
     ...
     这是第 n 行
  问题:
    如何让一条语句重复执行多次?
    用:
      print("这是第", i, ‘行‘)
    能否实现

练习:
  1. 输入一行字符串,将字符串中Unicode编码值最大的一个字符打印出来(不允许用max函数)
    (提示: while语句内可以嵌入 if 语句进行判断)

  2. 打印 从零开始的浮点数,每个数增加 0.5, 打印出10以内的这样的数:
     0.0
     0.5
     1.0
     1.5
     ...
     9.5

练习:
1. 打印 1 ~ 20的整数

2. 打印从10开始 到 0(不包含0)之间的整数

3. 打印 1 ~ 20的整数,打印在一行内

4. 打印 1 ~ 20的整数,每行打印5个,打印四行如:
  1 2 3 4 5
  6 7 8 9 10
  11 12 .....
  .....
  提示: while中可以嵌入if语句来换行

5. 输入一个整数n, 打印出一个长方形
   n 代表长方形的宽度的字符数和高的行数
   例如:
     请输入:4
    打印:
      ####
      #  #
      #  #
      ####
     请输入:6
    打印:
      ######
      #    #
      #    #
      #    #
      #    #
      ######

练习:
  输入一个数,打印指定宽度的正方形
  如:
    输入: 5
  打印如下正方形:
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
  如:
    输入: 3
  打印如下正方形:
    1 2 3
    1 2 3
    1 2 3

练习:
  1. 写程序,计算:
    1 + 2 + 3 + 4 + ..... + 99 + 100的和

  2. 写程序,任意输入一个数n,计算:
    1 + 2 + 3 + 4 + ..... + (n-1) + n的和

  问题:
    如果在循环过程中不想再继续此循环语句的执行了,怎么办?

练习:
  1. 任意输入一些数,当输入负数时结束输入
    当输入完成后,打印您输入的这些数的和是多少?

  2. 写程序求:
    Sn = 1 + 1/2 + 1/4 + 1/8 + .... + 1/(2**n)
    求当n等同于100时,sn的值是多少?
  3. 用while语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,打印出相应的直角三角形:
    如:
      请输入三角形的宽度: 4
      1) 打印如下:
        *
        **
        ***
        ****
      2) 打印如下:
           *
          **
         ***
        ****
      3) 打印如下:
        ****
         ***
          **
           *
      4) 打印如下:
        ****
        ***
        **
        *

练习:
  任意输入一段字符串
    1) 计算您输入的字符‘A‘ 的个数,并打印出来
    2) 计算出空格的个数,并打印出来
      (要求用for语句,不允许使用, S.count方法)

  思考用while语句能否实现上述功能

练习:
  用for 语句打印1~20 打印在一行内

练习:
  求 100以内有哪儿些整数与自身+1的乘积再对11求余的结果等于8?

      x * (x+1) % 11 == 8  x附合条件

  1. 写程序计算  1 + 3 + 5 + 7 + ...+ 99的和
    (要求用for语句和while语句两种方式实现)

  2. 用while语句实现打印:
     1 3 5 7 9. .... 19
     打印在一行内

  3. 将上题用for语句来实现

练习:
  用for 语句实现下题 :
    1. 输入一个数w代表正方形的宽度,打印如下正方形:
      如输入:5
        1 2 3 4 5
        1 2 3 4 5
        1 2 3 4 5
        1 2 3 4 5
        1 2 3 4 5
    2. 写程序来改写上题:
      如输入: 5
      打印如下:
        1 2 3 4 5
        2 3 4 5 6
        3 4 5 6 7
        4 5 6 7 8
        5 6 7 8 9
      如输入: 3
      打印如下:
        1 2 3
        2 3 4
        3 4 5

练习:
  1. 输入一个整数用begin绑定,
  再输入一个整数用end绑定
  打印从begin开始,到end结束内的全部奇数(不包含end)

  2. 将上述练习改写为 用while语句实现

  3. 求 1~100 之间所有不被 5, 7, 11 整除的数的和
    (可以考虑用continue实现)

练习:
  1 输入三行文字,将这三行文字, 保存于一个列表L中,并打印
    如:
      请输入: abc<回车>
      请输入: 123<回车>
      请输入: 你好<回车>
    生成列表如下:
      L = [‘abc‘, ‘123‘, ‘你好‘]
      print(L)  打印

练习:
  1. 输入任意行文字,存于列表L中,当不输入任何内容直接回车后结束输入
   1) 打印L列表中的内容
   2) 计算您共输入了几行内容
   3) 计算您共输入了多少个字符

  2. 输入一个整数(代表树干的高度)
     打印出如下一棵树
     输入: 2
     打印:
      *
     ***
      *
      *
     输入:3
       *
      ***
     *****
       *
       *
       *
  3. 写一个程序,任意输入一个整数,判断这个数是否是素数(prime)
    素数(也叫质数), 是只能被1和自身整除的正整数:
      如: 2 3 5 7 11 等
    提示:
      用排除法: 当判断x是否是素数是,只要让x分别除以:
        2, 3, 4, 5, .... x-1, 只要整除了,那x不是素数,否则x是素数
  4.算出100~1000以内的水仙化数(Naricissistic Number)
    水仙花数是指百位的3次方 加上 十位的3次方 加上 个位的3次方等于原数的数
    如:
      153 = 1**3 + 5**3 + 3**3
    答案:
      153, 370, ....

练习:
  已知有列表:
    L = [3, 5]

    1) 用索引和切片等操作,将原列表改变为:
    L = [1, 2, 3, 4, 5, 6]

    2) 将列表反转,删除最后一个元素后打印此列表
       ...
       print(L)  # [6, 5, 4, 3, 2]

练习:
  1. 写程序,让用户输入一些整数,当输入-1时结束输入,将这些数存于列表L中
    1)  打印用户共输入了几个数?
    2)  打印您输入的数的最大数是多少
    3)  打印您输入的数的最小数是多少
    4)  打印您输入的这些数的平均值是多少?

练习:
  输入多行文字,存入列表中,
  每次输入回车后算一行
    任意输入多行,当输入回车(即输入空行时结束输入)
  1) 按原输入内容在屏幕上输出内容
  2) 打印出您共输入了多少行文字
  3) 打印出您共输入了多少个字符

练习:
  1. 有字符串"hello"
    请用此字符串生成:
      ‘h e l l o‘ 和 ‘h-e-l-l-o‘
    答案:
      s = "hello"
      a = ‘ ‘.join(s)  # a = ‘h e l l o‘
      b = ‘-‘.join(s)  # b = ‘h-e-l-l-o‘

  2. 写一个程序,让用户输入很多正整数,当输入小于零的数时结束输入,
    1) 打印这些数中最大的一个数
    2) 打印这些数中第二大的一个数
    3) 删除最小的一个数
    4) 打印剩余数的和

练习:
  用列表推导式生成1~100内奇数的列表
  结果是: [1, 3, 5, 7, ..... 99]

  L = [x for x in range(1, 100, 2)]

  示例:
    生成1~00内的奇数的列表:
  L = [x for x in range(1, 100) if x % 2 == 1]

练习:
  生成一个数值为 1 ~ 9的平方的列表,去掉所有的奇数的平方
    L = [x**2 for x in range(1, 10)]

    # L = [4, 16, 36, 64]

练习:
  1. 已知有一个字符串
     s = ‘100,200,300,500,800‘
     将其转化为整数的列表存于L列表中
     L = [100, 200, 300, 500, 800]

  2. 生成前40个斐波那契数(Fibonacci)
      1  1  2  3  5  8  13  .....
      要求将这些数保存在列表中
      打印这些数

  3. 有一些数存于列表中:
    L = [1, 3, 2, 1, 6, 4, 2, ..... 98, 82]
    将列表中出现的数字存入到另一个列表L2中
      要求: 重复出现多次的数字在L2列表中只保留一份(去重)

写程序,实现以下要求:
  1) 将如下数据形成一个字典seasons:
    ‘键‘    ‘值‘
     1      ‘春季有1, 2, 3月‘
     2      ‘夏季有4, 5, 6月‘
     3      ‘秋季有7, 8, 9月‘
     4      ‘冬季有10,11,12月‘
  2) 让用户输入一个整数,代表一个季度,打印这个季度对应的信息,如果用户输入的信息不在字典内,则打印信息不存在

练习:
  输入一段字符串,打印出这个字符串中出现过的字符的出现次数
  如:
    输入:
      abcdabcaba
    打印:
      a: 4次
      b: 3次
      d: 1次
      c: 2次
    注:
       不要求打印的顺序

练习:
  有字符串的列表如下:
    L = [‘tarena‘, ‘xiaozhang‘, ‘tyke‘]
    用上述列表生成如下字典:
      d = {‘tarena‘: 6, ‘xiaozhang‘: 9, ‘tyke‘:4}
    注:
      字典的值为键的长度

练习:
  1. 已知有两个等长的列表 list1  和 list2
  以list1中的元素为键,以list2中的元素为值,生成相应的字典
  list1 = [1001, 1002, 1003, 1004]
  list2 = [‘Tom‘, ‘Jerry‘, ‘Spike‘, ‘Tyke‘]
  生成的字典为:
    {1001: ‘Tom‘, 1002:‘Jerry‘, .....}

  2. 输入任意个学生的姓名,年龄,成绩,每个学生的信息存入字典中,然后放入至列表中,每个学生的信息需要手动输入
  当输入姓名为空时结束输入:
    如:
      请输入姓名:  xiaozhang
      请输入年龄:  20
      请输入成绩:  100
      请输入姓名:  xiaoli
      请输入年龄:  18
      请输入成绩:  98
      请输入姓名:  <回车> 结束输入
    要求内部存储格式如下:
    [{‘name‘:‘xiaozhang‘, ‘age‘:20, ‘score‘:100},
     {‘name‘:‘xiaoli‘, ‘age‘:18, ‘score‘:98}]
    打印所有学生的信息如下:
    +---------------+----------+----------+
    |     name      |   age    |   score  |
    +---------------+----------+----------+
    |   xiaozhang   |    20    |   100    |
    |     xiaoli    |    18    |    98    |
    +---------------+----------+----------+

集合练习:
  经理有: 曹操,刘备,孙权
  技术员有: 曹操,孙权,张飞,关羽
  用集合求:
    1) 即是经理,也是技术员的有谁?
    2) 是经理,但不是技术员的人员都有谁?
    3) 是技术员,不是经理的都有谁
    4) 张飞是经理吗?
    5) 身兼一职的人都有谁?
    6) 经理和技术员共有几个人?

练习:
  任意输入一些数字,存于列表L中。当输入负数时结束输入
  1) 打印这些数的和
  2) 打印这些数有多少种(去重)
  3) 除重复的数字后,打印这些剩余数字的和

  提示,可以用集合去重

练习:
  1. 写一个函数myadd, 此函数中的参数列表里有两个参数x, y
    此函数的功能是打印 x + y 的和

    def myadd(....):
        ....  # 注: .... 部是是我们要填写代码的地方

    myadd(100, 200)  # 300
    print("ABC", "123")  # ABC123

  2. 写一个函数 mysum, 传入一个参数x代表终止整数,
     打印出 1 + 2 + 3 + 4 + ..... + x的和
    def mysum(x):
        ....

    mysum(100)  # 5050
    mysum(4)   # 10

return 语句
  语法:
    return [表达式]
    注: []  代表可省略
  作用:
    用于函数中,结束当前函数的执行,返回到调用该函数的地方,同时返回一个对象的引用关系

  return 语句说明
    1. return 语句后跟的表达式可以省略,省略后相 当于return None
    2. 如果函数内没有return 语句,则函数执行完最后一条语句后返回None(相当于在最后加了一条return None语句)
  示例见:
    return.py

练习:
  1. 写一个函数 mymax, 给函数传递两个参数,返回两个实参中最大的一个
    def mymax(a, b):
         ....

    v = mymax(100, 200)
    print(‘v =‘, v)  # v = 200
    print(mymax(‘ABC‘, ‘abc‘))  # abc

  2. 写一个函数 input_number
      def input_number():
          ....

      此函数用来获取用户循环输入的整数,当用户输入负数时结束输入。将用户输入的数字以列表的形式返回,再用内建函数max, min, sum取出户输入的最大值,最小值及和

      L = input_number()
      print(L)  # 打印此列表
      print("用户输入的最大数是:", max(L))
      print("用户输入的最小数是:", min(L))
      print("用户输入的数的和是:", sum(L))

练习:
   1. 写一个函数 print_odd, 打印从begin开始,到end结束(不包含end)内的全部的奇数
      def print_odd(begin, end):
          ....

      print_odd(1, 10)  # 打印 1 3 5 7 9d
      ptint_odd(10, 20) # 打印 11 13 15 17 19

   2. 定义两个函数:
      sum3(a, b, c) 用于返回三个数的和
      pow3(x)  用于返回x的三次方
      用以上函数计算:
        1. 计算1的立方 + 2的立方 + 3的立方的和
          即:  1**3 + 2**3 + 3**3的和
        2. 计算1 + 2 + 3 的和的立方,
          即:(1+2+3)**3

  3. 改写之前的学生信息管理程序
     改为两个函数:
       1. 写一个函数 input_student() 用于返回学生信息的字典的列表(以前格式一样)
       2. 写一个函数 output_student(lst)
         此函数传入一个列表lst,即字典的列表
         此函数把lst的内容以表格形式打印出来
      def input_student():
           ....

      def output_student(lst):
           ...

      L = input_student()  # 获取学生信息的列表
      output_student(L)  # 把L 以列表的形式打印 

练习:
  写一个函数minmax(a, b, c)  有三个参数,这回这三个参数中的最小值和最大值,
  要求,形成元组,最小值在前,最大值在后,如:

  def minmax(a, b, c):
      ...

  t = minmax(11, 33, 22)
  print(t)  # (11, 33)  # <<< 打印元组
  xiao, da = minmax(6, 5, 4)
  print(‘最小值:‘, xiao, ‘最大值:‘, da)

练习:
  写一个函数 myadd, 此函数可以计算两个数的和,也可以计算三个数的和

  def myadd(......):
     ....
  print(myadd(10, 20))  # 30
  print(myadd(100, 200, 300))  # 600

  2. 写一个函数,print_odd, 此函数可以传递一个实参,也可以传递两个实参,当传递一个实参时代表结束值
  当传递两个实参时,第一个实参代表起始值,第二个实参代表结束值
     打印出以此区间内的全部奇数,不包含结束数:

  print_odd(10)  # 1 3 5 7 9
  print_odd(11, 20)  # 11 13 15 17 19     

练习:
  写一个函数, mysum可以传入任意个实参的数字,返回所有实参的和

  def mysum(*args):
     ...
  print(mysum(1, 2, 3, 4))  # 10
  print(mysum(10, 20, 30))  # 60

练习:
  写一个函数,mymax类似于 内键的函数max
    详见:
      >>> help(max)
   仿造 max 写一信mymax函数,功能与max完全相同
   (要求不允许调用max函数)
   print(mymax([6, 8, 3, 5]))  # 8
   print(mymax(100, 200))  # 200
   print(mymax(1, 3, 5, 9, 7))  # 9

思考题:
  查看 >>>help(print)猜想print函烽的参数列表 是如何定义的?

练习:
  创建一个全局变量 L = []
  写一个函数:
    def input_number():
        ....
    此函数每次调用将从键盘读入一些数字追加到列表L中 

  如:
    L = []
    def input_number():
        ....
    input_number()
    print(L)  # [ .... 这些是您从键盘输入的数..]

练习:
  1. 写一个函数isprime(x) 判断x是否为素数。如果是素数,返回True,否则返回False

  2. 写一个函数prime_m2n(m, n) 返回从m开始,到n结束(不包含n)范围内的素数,返回这些素数的列表并打印
    如:
      L = prime_m2n(5, 10)
      print(L)  [5, 7]

  3. 写一个函数pimes(n) 返回小于n的全部素数的列表,并打印这些素数
    如:
      L = primes(10)
      print(L)  # [2, 3, 5, 7]
    1) 打印100 以内的全部素数
    2) 打印200 以内的全部素数的和

  4. 编写函数 fn(n) 此函数返回下列级数的和:
      fn(n) = 1/(1*2) + 1/(2*3) + ....
      + 1/(n*(n-1)) 的和

    print(fn(100))

练习:
  写一个计算公式的解释执行器
    已知有如下一些函数:
        def myadd(x, y):
            return x + y
        def mysub(x, y):
            return x - y
        def mymul(x, y):
            return x * y
    写一个函数,传入字符串,返回相应的函数
        def get_op(s):
            # 此函数根据字符串来返回相应的函数.
            # 如果传入字符串"加" 则返回myadd函数
            # ....        ‘乘‘,则返回mymul函数
            ... 此处自己实现
    主程序如下:
        while True:
          s = input("请输入计算公式: ")# 10 加 20
          L = s.split()
          a = int(L[0])
          b = int(L[2])
          fn = get_op(L[1])
          print("结果是:", fn(a, b))  # 30
练习:
  写一个函数叫hello(name),部分代码如下:
  count = 0
  def hello(name):
      print(‘你好‘, name)
      ... 此处代码省略,需要同学们自己填写
      ... 此处代码需要改变全局变量来记录此函数曾经被调用过多少次.

  hello(‘小张‘)
  hello(‘小李‘)
  print(‘hello 函数被调用‘, count, ‘次‘)  # 2次

练习:
  1. 写一个lambda 表达式,判断这个数的2次方+1是否能被5整除,如果能被整除返回True, 否则返回False
     例:
        fa = lambda x: .....
        print(fa(2))  # True
        print(fa(4))  # False

  2. 写一个lambda表达式,求两个变量的最大值
     例如:
        def mymax(x, y):
           ...
        mymax = lambda ...
        print(mymax(100, 200))  # 200

练习:
  1. 给出一个整数n,写一个函数myfac来计算n!(n的阶乘)
    n! = 1 * 2 * 3 * 4 * ..... * n
    如:
      print(myfac(5))  # 120
  2. 给出一个整数n,写一个函数计算myfn(n):
      1 + 2**2 + 3**3 + .... + n**n的和
    如:
      print(myfn(10)) # ???
  3. 完全数:
     1 + 2 + 3 = 6 (6为完全数)
     1,2,3都为6的因数(因数是能被一个数x整除的整数为y,则y为x的因数)
     1 x 6 = 6
     2 x 3 = 6
     完全数是指除自身以外的所有因数相加之和等于自身的数
     求 4~5个完全数并打印出来
     答案:
       6
       28
       496
       ......

4 实现带有界面的学生信息管理系统
  程序启动时先弹出操作菜单:
    +-------------------------+
    | 1)  添加学生信息          |
    | 2)  显示学生信息          |
    | 3)  删除学生信息          |
    | 4)  修改学生成绩          |
    | q)  退出                 |
    +-------------------------+
    请选择: 1
  要求 :
      每个选择都要有一个函数来实现

练习:
  1. 用map函数求:
    1**3 + 2**3 + 3 ** 3 + .... 9**3 的和

  2. 用map函数求:
    1**4 + 2**4 + 3 ** 4 + .... 20**4 的和

  提示: sum(map(.....)) 

练习:
  1. 将 1 ~ 20 的偶数用filter生成可迭代对象后将可迭代对象生成的数放入到列表L中

  2. 写一个函数is_prime(x) 判断x是否是素数
    用filter函数打印出: 20 ~ 30之间的全部素数

练习:
  names = [‘Tom‘, ‘Jerry‘, ‘Spike‘, ‘Tyke‘]
  排序的依据为字符串的反序:
           ‘moT‘   yrreJ    ekipS    ekyT
  结果:
    [‘Spike‘, ‘Tyke‘, ‘Tom‘, ‘Jerry‘]

练习:
  写函数 mysum(n)用递归方式实现求和
    def mysum(n):
        # 用递归方式求和
        ...

    print(mysum(100))  # 5050

思考题:
  已知五位朋友在一起
    第五位朋友比第四位朋友大2岁
    第四位朋友比第三位朋友大2岁
    第三位朋友比第二位朋友大2岁
    第二位朋友比第一位朋友大2岁
    第一位朋友说它10岁

练习:
  1. 已知五位朋友在一起
    第五位朋友比第四位朋友大2岁
    第四位朋友比第三位朋友大2岁
    第三位朋友比第二位朋友大2岁
    第二位朋友比第一位朋友大2岁
    第一位朋友说它10岁
    写程序打印出第五位朋友 和第三位朋友 的年龄
  2. 已知有列表:
    L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]
    1) 写一个函数print_list(lst) 打印出所有元素
      print(L)  # 打印 3 5 8 10 13 14 ....
    2) 写一个函数sum_list(lst) 返回这个列表中所有元素的和
      print(sum_list(L))  # 86
    注:
      type(x) 可以返回一个变量的类型
      如:
         >>> type(20) is int # True
         >>> type([1, 2, 3]) is list # True

  3. 改写之前的学生信息管理程序
    要求添加四个功能:
      | 5) 按学生成绩高-低显示学生信息 |
      | 6) 按学生成绩低-高显示学生信息 |
      | 7) 按学生年龄高-低显示学生信息 |
      | 8) 按学生年龄低-高显示学生信息 |

练习:
  1. 输入一个圆的半径,打印出这个圆的面积
  2. 输入一个圆的面积,打印出这个圆的半径 

  (要求用math模块内的函数和数据实现)

练习:
  写一个程序,输入你的出生日期,
    1) 算出你已经出生多少天?
    2) 算出你出生的那天是星期几?

练习:
  1. 请编写函数fun 其功能是计算下列多项式的和:
    fn = 1 + 1/1! + 1/2! + 1/3! + 1/4! + .. + 1/n!
    (建义用数学模块的factorial实现)
  求当n 等于100时,fn的值
  看一下fn(100)的值是什么
  2. 写一个程序,以电子时钟格式:
    HH:MM:SS格式显示时间
    要求每隔一秒变化一次

  3 写函数f(n)求下多项式的和
  fn = 1/1 - 1/3 + 1/5 - 1/7 + 1/9 .... 1/(2*n-1)的和

  求当n取值为1000000时,
    1) 打印 f(1000000) 的值
    2) 打印 f(1000000) * 4的值,看看是什么

练习:
  1. 猜数字游戏
    随机生成一个 0~100之间的一个整数,用变量x绑定
    让用户输入一个数y,输出猜数字的结果:
      1) 如果y大于x则提示: "您猜大了"
      2) 如果y小于x则提示: "您猜小了"
      3) 如果y等于生成的数x,则提供示用户"恭喜您猜对了 "并退出猜数字
    循环重复上述步聚,直到猜对为止。
    猜对了,显示用户猜数字的次数,然后退出程序

练习:
  1. 写一个闹钟程序,启动时设置定时时间,
    到时间后打印一句"时间到...." 然后退出程序

  2. 模拟斗地主发牌,扑克牌共54张
      黑桃(‘\u2660‘), 梅花(‘\u2663‘), 方块(‘\u2665‘), 红桃(‘\u2666‘)
      A2-10JQK
      大王、小王
    三个人玩,每人发17张牌,底牌留三张
    输入回车, 打印出第1个人的17张牌
    输入回车, 打印出第2个人的17张牌
    输入回车, 打印出第3个人的17张牌
    输入回车, 打印三张底牌
  3. 修改学生信息管理程序,将原student_info.py 拆分为模块
    要求:
      1. 主事件循环放在main.py中
      2. show_menu 函数放在menu.py中
      3. 与学生操作相关的函数放在 student_info.py中

练习:
  写一个函数 get_score() 来获取学生成绩,
    要求用户输入 1~100的整数,输果输入出现异常,返此函数返回0,
    否则返回用户输入的成绩
  示例:
    def get_score():
        ...
    score = get_score()
    print("学生的成绩是:", score)

python中全部的错误类型:
    参见文档:
      python_base_docs_html/Python全部的异常类型.html

练习:
  写一个函数 get_age()用来获取一个人的年龄信息
  此函数规定用户只能输入1~140之间的整数,如果用户输入其它的数则直接触发ValueError类型的错误通知
     如果用户输入的年龄大于140,则触发
       ValueError("年龄超出了正常值")
     如果用户输入的年龄小于1,则触发
       ValueError("年龄太小...")
  def get_age():
      ...
  try:
      age = get_age()
      print("用户输入的年龄是:", age)
  except ValueError as err:
      print(‘用户输入的不是1~140的整数,获取年龄失败‘)
      print("原因是:", err)

练习:
  1. 一个球从100米高空落下,每次落地后反弹高度是原高度的一半,再落下,
     1) 写程序算出皮球在第10次落地后反弹高度是多高?
     2) 打印出球共经过多少米的路程

  2. 分解质因数, 输入一个正整数,分解质因数,
    如:
      输入: 90
    则打印:
      ‘90=2*3*3*5‘
      (质因数是指最小能被原数整除的素数(不包括1))

  3. 修改原学生信息管理程序,加入异常处理语句,让程序在任何情况下都能够按逻辑正常执行.
     例如:
       输入成绩和年龄时,如果用户输入非法字符串也不会导致程序崩溃

练习:
  有一个集合:
    s = {‘唐僧‘, ‘悟空‘, ‘八戒‘, ‘沙僧‘}
    用 for语句来遍历所有元素如下:
      for x in s:
          print(x)
      else:
          print(‘遍历结束‘)
    请将上面的for语句改写为 用while语句和迭代器实现

练习:
  写一个生成器函数 myeven(start, stop)
  此函数用来生成从 start开始到stop结束(不包含)区间内的一系列偶数
  def myeven(start, stop):
      ....

  evens = list(myeven(10, 20))
  print(evens)  # [10, 12, 14, 16, 18]
  for x in myeven(21, 30):
      print(x)  # 22, 24, 26, 28

  L = [x**2 for x in myeven(3, 10)]
  print(L)  # 16 36 64

练习:
  已知有一个列表L
      L = [2, 3, 5, 7]
    用生成器表达式从此列表中拿到数,生成 列表中数据的平方

    gen = ......  # 此处用生成器表达式实现
    L2 = list(gen)  # L2 = [4, 9, 25, 49]

思考:
   L = [2, 3, 5, 7]
   L2 = [x ** 2 for x in L]  # 列表推导式
   it = iter(L2)
   print(next(it))  # 4
   L[1] = 10
   print(next(it))  # 9

   L = [2, 3, 5, 7]
   G3 = (x ** 2 for x in L)  # 生成器表达式
   it = iter(G3)
   print(next(it))  # 4
   L[1] = 10
   print(next(it))  # 100

练习:
  写一个程序,读入任意行的文字,当输入空行时结束输入
  打印带有行号的输入结果:
    如:
      请输入: hello<回车>
      请输入: world<回车>
      请输入: tarena<回车>
      请输入: <回车> # 直接回车结束输入
    输出如下:
      第1行: hello
      第2行: world
      第3行: tarena

练习:
  写一个程序,从键盘输入一段字符串存入s变量
    1. 将此字符串转为字节串用变量b绑定,并打印出b
    2. 打印字符串s的长度和字节串b的长度
    3. 将b字节串再转换为字符串用变量s2 绑定,判断 s2 和 s是否相同?

练习:
  1. 写一个生成器函数primes生成素数,
  此生成器函数为 primes(begin, end)
  如: [x for x in primes(10, 20)] 将得到列表
     [11, 13, 17, 19]
  2. 写一个生成器函数,生成斐波那契数列的前n个数
     1 1 2 3 5 8 13
      def fibonacci(n):
          ...
          yield...
    1) 输出前20个数:
      for x in fibonacci(20):
          print(x)
    2) 打印前40个数的和:
       print(sum(fibonacci(40)))
  3. 写程序打印杨辉三角(只打印6层)
        1
       1 1
      1 2 1
     1 3 3 1
    1 4 6 4 1
   1 5 10 10 5 1

练习:
  自己写一个文件 ‘info.txt‘ 内部存一些文字信息
    如:
      张三 20 100
      李四 21 96
      小王 22 98
    写程序将这些数据读取出来,打印到终端上

练习:
  1. 写程序,循环输入很多个人的姓名,电话号码,
    当输入结束后将这些信息存入到文件phonenumber.txt中
    (建议先用列表暂存数据,格式自己定义)

  2. 写程序,将phonenumber.txt文件中的数据读取出来.
     再用以下格式打印出来:
      如:
        小张 的电话是 13888888888
        小李 的电话是 13999999999

练习:
  1. 写程序实现复制文件的功能
    要求:
       1. 要考虑特大文件问题
       2. 要关闭文件
       3. 要能复制二进制文件
    如:
      请输入源文件路径名:  /home/tarena/xxx.tar.gz
      请输入目标文件路径名: ./a.tar.gz
    显示:
      文件已成功复制

  2. 修改学生信息管理程序,要求加入两个功能:
      9)  保存信息到文件(si.txt)
      10) 从文件中读取数据(si.txt)

练习:
  自己写一个‘人‘类: Human
  class Human:
      def set_info(self, name, age, address=‘未知‘):
          ‘‘‘此方法用来给人对象添加‘姓名‘, ‘年龄‘, ‘家庭住址‘三个属性‘‘‘
          ...  # << 此处自己实现
      def show_info(self):
          ‘‘‘显示此人的全部信息‘‘‘
          ... # 此处自己实现
  如:
    h1 = Human()
    h1.set_info(‘小张‘, 20, ‘北京市朝阳区‘)
    h2 = Human()
    h2.set_info(‘小李‘, 18)
    h1.show_info()  # 小张今年 20 岁,家庭住址:北京市朝阳区
    h2.show_info()  # 小李今年 18 岁,家庭住址:末知

练习:
  写一个Student类
    1) 为该类添加初始化方法, 实现在创建对象时自动设置
      ‘姓名‘,‘年龄‘, ‘成绩‘ 属性
    2) 添加set_score方法能修改成绩信息
    3) 添加show_info方法打印学生对象的信息

  如:
    class Student:
        def __init__(...):
            ...
        ...

    s1 = Student(‘小王‘, 15, 59)
    s1.show_info()  # 小王 今年 17 岁, 成绩是: 59
    s1.set_score(80)
    s1.show_info()  # 小王 今年 17 岁, 成绩是: 80

面向对向的综合示例:
  有两个人(Human):
    1.
      姓名: 张三
      年龄: 35
    2.
      姓名: 李四
      年龄: 8
    行为:
      1. 教别人学东西 teach
      2. 赚钱 works
      3. 借钱 borrow
    事情:
      张三 教 李四 学 python
      李四 教 张三 学 跳皮筋
      张三 上班赚了 1000 元钱
      李四 向 张三 借了 200 元钱
      打印张三的信息: 35岁 的 张三 有钱 800元, 它学会跳皮筋
      打印李四的信息: 8岁 的 李四 有钱 200元, 它学会python
练习:
  修改原来的学生信息管理程序,将原来字典来存储学生信息,
  现改为用对象来存储学生信息
    # file : student.py
    class Student:
        def __init__(self, n, a, s):
             ....

    L = []
    # L.append({...}) 改为对象
    L.append(Student(‘xiaozhang‘, 20, 100))

    (要求类Student 要写在模块 student.py中)

练习:
  用类来描述一个学生的信息(可以修改之前写的Student类)
    class Student:
         .... 此处自己实现

    学生信息有:
       姓名, 年龄, 成绩

    将一些学生的对象存于列表中,可以任意添加和删除学生信息
      1) 打印出学生的个数
      2) 打印出所有学生的平均成绩
      3) 打印出所有学生的平均年龄

思考:
   list类里只有一个append向末尾加一个元素的方法,但没有向列表头部添加元素的方法,试想能否为列表在不改变原有类的基础上添加一个insert_head(n) 方法,实现在列表的头部(前部)添加元素
  如:
    class MyList(list):
        def insert_head(self, n):
            ...  # 需要自己添加代表

    myl = MyList(range(3, 6))
    print(myl)  # [3, 4, 5]
    myl.insert_head(2)
    print(myl)  # [2, 3, 4, 5]
    myl.append(6)
    print(myl)  # [2, 3, 4, 5, 6]

练习:
  1. 看懂学生管理程序,每一步做的事情及思想
  2. 把同学们自己的学生信息管理程序用Student学生对象来存储信息;要求,不要在外部直接操作学生的属性,所有操作行为用方法来代替

练习:
  写一个类Bicycle类 ,有 run方法.调用时显示骑行里程km
    class Bicycle:
        def run(self, km):
            print(‘自行车骑行了‘, km, ‘公里‘)
  再写一个类EBicycle(电动自行车类), 在Bicycle类的基础上添加了电池电量 volume 属性, 有两个方法:
     1. fill_charge(self, vol)  用来充电, vol为电量
     2. run(self, km) 方法每骑行10km消耗电量1度,同时显示当前电量,当电量耗尽时调用 父类的run方法继续骑行

    b = EBicycle(5)  # 新买的电动有内有5度电
    b.run(10)  # 电动骑行了10km还剩 4 度电
    b.run(100)  #电动骑行了40km,还剩0度电,其余60用脚登骑行
    b.fill_charge(10)  # 又充了10度电
    b.run(50)  # 骑行了50公里剩5度电

练习:
  1. 修改原有的学生信息管理系统, 将学生对象的,全部属性
  都变为私有属性,不让外部直接访问来实现封装

  2. 写一个列表类MyList实现存储整数列表,写类的定义如下:
    class MyList:
        def __init__(self, iterator):
            self.data = ...
    让此类的对象能用for语句进行迭代访问

    L = MyList(range(5))
    print(L)
    L2 = [x ** 2 for x in L]
    print(L2)  # [0, 1, 4, 9, 16]

  3. 写一个类Fibonacci 实现迭代器协议 ,此类的对象可以作为可迭代对象生成相应的斐波那契数
     1 1 2 3 5
    class Fibonacci:
        def __init__(self, n)  # n代表数据的个数
            ...
        ...
    实现如下操作:
      for x in Fibonacci(10):
          print(x)  # 1 1 3 5 8 ....
      L = [x for x in Fibonacii(50)]
      print(L)
      F = fibonicci(30)
      print(sum(F))  

练习:
  1. 实现两个自定义的列表相加
  class MyList:
      ....  此处自己实现
  L1 = MyList([1, 2, 3])
  L2 = MyList(range(4, 7))
  L3 = L1 + L2
  print(L3)  # MyList([1, 2, 3, 4, 5, 6])
  L4 = L2 + L1
  print(L4)  # MyList([4, 5, 6, 1, 2, 3])
  L5 = L1 * 2
  print(L5)  # MyList([1, 2, 3, 1, 2, 3])

练习:
  实现有序集合类 OrderSet() 能实现两个集合的交集 &,全集 |,
  补集 -  对称补集 ^, ==/!= , in/ not in 等操作
  要求集合内部用 list 存储
  class OrderSet:
      ...
  s1 = OrderSet([1, 2, 3, 4])
  s2 = OrderSet([3, 4, 5])
  print(s1 & s2)  # OrderSet([3, 4])
  print(s1 | s2)  # OrderSet([1, 2, 3, 4, 5])
  print(s1 ^ s2)  # OrderSet([1, 2, 5])
  if OrderSet([1, 2, 3]) != OrderSet([3, 4, 5]):
      print("不相等")
  if s2 == OrderSet(3, 4, 5):
     print(‘s2 == OrderSet(3, 4, 5) is True‘)
  if 2 in s1:
     print("2在 s1中")

# 1:给定一个数,判断他是正数,负数,还是0a = int(input("请输入一该个整数"))if a == 0:    print(a, "是0")elif a > 0:    print(a, "是正数")else:    print(a, "是负数")
# 练习2:输入一个季度的数字 输出该季度有那几个月b = int(input("请输入一个季度:1.春季2.夏季3.秋季4.冬季"))if b > 4:    print(b, "不是季节")elif b < 0:    print(b, "不是季节")else:    if b == 1:        print(b, "春季有:一月,二月,三月")    elif b == 2:        print(b, "夏季有:四月,五月,六月")    elif b == 3:        print(b, "秋季有:七月,八月,九月")    else:        print(b, "冬季有:十月,十一月,十二月")
# 联系3:输入一个月份 输出这个月份在那个季度c = int(input("请输入一个月份判断在那个季度"))if c < 0:    print(c, "不是月份")elif c > 12:        print(c, "不是月份")elif c < 4:    print(c, "在春季")elif c < 7:    print(c, "在夏季")elif c < 10:    print(c, "在秋季")elif c <= 12:    print(c, "在冬季")    # 练习4:3公里内10元 超出1.9元/公里  超过15公里 每公里加50%回空费 3.15元/公里# 输入公里  打印车费

d = int(input("请输入行驶公里数:"))if d <= 3:    print("车费:10元")elif d > 4:    if d < 15:        g = (d - 3) * 1.9 + 10        print(d, "公里:", g, "元")    else:        f = (d - 15) * 3.15 * 1.5 + 12 * 1.9 + 10        print(d, "公里:", f, "元")elif d < 0:    print("公里数输入错误")

练习:  1. 一个商店卖西瓜,7元一个,您带20元钱能买到几个西瓜? 剩多少元?  2. 一个学生毕业薪资10000元,每个涨薪 20%,请问十年后这个学生的薪资是多少?
1. 打印如下图形:   *******   *     *   *     *   *******2. 已知矩形的长边长为6cm,短边长为4cm,用表达式求    1) 周长是多少?    2) 面积是多少?

练习:  1. 指定一个圆的半径是r = 9cm    1) 计算圆的周长    2) 计算圆的面积
  2. 交量交换练习:     已知有两个变量:       a 绑定 10000       b 绑定 20000     问,在不创建任何新数据对象的情况下,如何让a 和 b 交换绑定的对象     a = 10000     b = 20000     ....     print(a)  # 20000     print(b)  # 10000

练习:  1. 中国古代的秤是16两一斤,请问古代对216两是古代的几斤几两,写程序打印出来?
  2. 从凌晨 0:0:0 计时,到现在已经过了63320秒,    请问现在是几时,几分,几秒,写程序打印出来  提示:    可以用地板除和求余实现
  3. 温度转换:    摄氏温度 = 5.0/9.0*(华氏温度-32)
    请问100华氏温度是多少摄氏温度.写程序算出来    思考:      如果知道当前温度是摄氏温度度,能否算出华氏温度是多少?

练习:  将数字3.14 用变量pi绑定  将pi变量转为整数,用变量i绑定  将 pi 变量 与 i变量相减,结果用f变量绑定    1. 判断f是否等于 0.14? 为什么?    2. 删除所有的变量    (用交互模式来实现)

练习:  1. 输入两个整数, 分别用变量x, y绑定    1) 计算这两个数的和,并打印结果    2) 计算这两个数的积,并打印结果    3) 计算x的y次方并打印结果    如:      请输入x: 10      请输入y: 20    打印如下:      10 + 20 = 30      10 * 20 = 200      10 ** 20 = ...  2. 今天是小明20周岁的生日,假设每年有365天,计算它过了多少个星期天,余多少天  3. 分三次输入当前的小时,分钟和秒数,在终端打印时此距离凌晨0:0:0 秒过了多少秒
练习:  任意输入一个数    1) 判断这个数是否大于100    2) 判断这个数是否小于0    3)判断这个数是否在80~100之间

练习:  1. 输入一个季度 1~4的整数.输出这个季度有哪儿几个月,如果输入的不是1~4的整数,则提示用户您输错了
  2. 输入一年中的月份(1~12) 输出这个月在哪儿个季度,如果输入的是其它数,则提示您输错了

思考:  score = input(‘请输入学生成绩:‘) or ‘0‘  score = int(score)  请问这个or是在做什么?
练习:  1. 北京出租车计价:    收费标准:      3公里以内收费13元      基本单价: 2.3元/公里 (超出3公里以外)      空驶费:超过15公里后,每公里加收单价的50%的空驶费(即3.45元/公里)    要求:      输入公里数,打印出费用金额(以元为单位四舍五入)  2. 输入一个学生的三科成绩(三个整数):    打印出最高分是多少?    打印出最低分是多少?    打印出平均分是多少?  3. BMI指数(Body Mass Index) 以称身体质量指数     BMI值计算公式:        BMI = 体重(公斤) / 身高的平方(米)     例如:       一个人69公斤,身高是173公分       BMI = 69 / 1.73**2 = 23.05    标准表:      BMI < 18.5   体重过轻      18.5 <= BMI < 24 体重正常      BMI > 24  体重过重    要求: 输入身高的体重,打印出BMI的值并打印体重状况

思考:  如果一个字符串同时包含如下字符该怎么办?     ‘   "  ‘‘‘  """ 
练习:  试求出以下字符串含有多少个字符?  ‘1234abcd‘  # 8  ‘5\‘4"‘     # 4  ‘\"A\x34\U00006041‘  # 4  ‘\b\n\td\r‘  ‘\\nn\\x41‘
练习:  写一个程序,打印一个高度为4行的矩形方框    要求输入一个整形数字,此整数代表矩形的宽度,输出此矩形  如:    请输入矩形宽度: 10    ##########    #        #    #        #    ##########    请输入矩形宽度: 5    #####    #      #    #      #    #####

练习:  输入一个字符串,打印如下内容:    1. 打印这个字符串的第一个字符    2. 打印这个字符串的最后一个字符    3. 如果这个字符串的长度是奇数,打印中间这个字符    注:      求字符串的长度的函数len(s)

练习:  1. 写一个程序,输入一个字符串,把字符串的第一个字符和最后一个字符去掉后,打印出处理后的字符串
  2. 输入任意一个字符串,判断这个字符串是否是回文    回文示例:      上海自来水来自海上      ABCCBA      12321    (回文是指中心对称的文字)

练习:  1. 写一个程序,输入一段字符串,如果字符串不为空,把第一个字符的编码值打印出来  2. 写一个程序,输入一个整数值(0~65535), 打印出这个数值所对应的字符
练习:  1. 输入一个字符串用变量s绑定     1) 判断您输入的字符串有几个空格     2) 将原字符串的左右空白字符去掉, 打印出剩余的字符个数     3)判断您输入的是否是数字     4) 如果是数字,判断这个数字是否大于100  2. 输入三行文字,让这三行文字在一个方框内居中显示     如输入:       hello!       I‘m studing python!       I like python    显示如下      +---------------------+      |       hello!        |      | I‘m studing python! |      |    I like python    |      +---------------------+    注:请不要输入中文

练习:  输入三行文字,让这三行文字依次以20个字符的宽度右对齐输出  如:    请输入第1行: hello world    请输入第2行: aaa    请输入第3行: ABCDEFG  输出结果如下:            hello world                    aaa                ABCDEFG
  做完上面的题后思考:     能否以最长的字符串的长度进行右对齐显示(左侧填充空格)

问题:  输入一个整数n, 写程序打印如下:     这是第 1 行     这是第 2 行     这是第 3 行     ...     这是第 n 行  问题:    如何让一条语句重复执行多次?    用:      print("这是第", i, ‘行‘)      能否实现

练习:  1. 输入一行字符串,将字符串中Unicode编码值最大的一个字符打印出来(不允许用max函数)    (提示: while语句内可以嵌入 if 语句进行判断)
  2. 打印 从零开始的浮点数,每个数增加 0.5, 打印出10以内的这样的数:     0.0     0.5     1.0     1.5     ...     9.5

练习:1. 打印 1 ~ 20的整数
2. 打印从10开始 到 0(不包含0)之间的整数
3. 打印 1 ~ 20的整数,打印在一行内
4. 打印 1 ~ 20的整数,每行打印5个,打印四行如:  1 2 3 4 5  6 7 8 9 10  11 12 .....  .....  提示: while中可以嵌入if语句来换行
5. 输入一个整数n, 打印出一个长方形   n 代表长方形的宽度的字符数和高的行数   例如:     请输入:4    打印:      ####      #  #      #  #      ####     请输入:6    打印:      ######      #    #      #    #      #    #      #    #      ######
练习:  输入一个数,打印指定宽度的正方形  如:    输入: 5  打印如下正方形:    1 2 3 4 5    1 2 3 4 5    1 2 3 4 5    1 2 3 4 5    1 2 3 4 5  如:    输入: 3  打印如下正方形:    1 2 3    1 2 3    1 2 3

练习:  1. 写程序,计算:    1 + 2 + 3 + 4 + ..... + 99 + 100的和
  2. 写程序,任意输入一个数n,计算:    1 + 2 + 3 + 4 + ..... + (n-1) + n的和
  问题:    如果在循环过程中不想再继续此循环语句的执行了,怎么办?

练习:  1. 任意输入一些数,当输入负数时结束输入    当输入完成后,打印您输入的这些数的和是多少?
  2. 写程序求:    Sn = 1 + 1/2 + 1/4 + 1/8 + .... + 1/(2**n)    求当n等同于100时,sn的值是多少?  3. 用while语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,打印出相应的直角三角形:    如:      请输入三角形的宽度: 4      1) 打印如下:        *        **        ***        ****      2) 打印如下:           *          **         ***        ****      3) 打印如下:        ****         ***          **           *      4) 打印如下:        ****        ***        **        *
练习:  任意输入一段字符串    1) 计算您输入的字符‘A‘ 的个数,并打印出来    2) 计算出空格的个数,并打印出来      (要求用for语句,不允许使用, S.count方法)
  思考用while语句能否实现上述功能
练习:  用for 语句打印1~20 打印在一行内

练习:  求 100以内有哪儿些整数与自身+1的乘积再对11求余的结果等于8?
      x * (x+1) % 11 == 8  x附合条件
  1. 写程序计算  1 + 3 + 5 + 7 + ...+ 99的和    (要求用for语句和while语句两种方式实现)
  2. 用while语句实现打印:     1 3 5 7 9. .... 19      打印在一行内
  3. 将上题用for语句来实现
练习:  用for 语句实现下题 :    1. 输入一个数w代表正方形的宽度,打印如下正方形:      如输入:5        1 2 3 4 5        1 2 3 4 5        1 2 3 4 5        1 2 3 4 5        1 2 3 4 5    2. 写程序来改写上题:      如输入: 5      打印如下:        1 2 3 4 5        2 3 4 5 6        3 4 5 6 7        4 5 6 7 8        5 6 7 8 9      如输入: 3      打印如下:        1 2 3        2 3 4        3 4 5
练习:  1. 输入一个整数用begin绑定,  再输入一个整数用end绑定  打印从begin开始,到end结束内的全部奇数(不包含end)
  2. 将上述练习改写为 用while语句实现
  3. 求 1~100 之间所有不被 5, 7, 11 整除的数的和    (可以考虑用continue实现)

练习:  1 输入三行文字,将这三行文字, 保存于一个列表L中,并打印    如:      请输入: abc<回车>      请输入: 123<回车>      请输入: 你好<回车>    生成列表如下:      L = [‘abc‘, ‘123‘, ‘你好‘]      print(L)  打印
练习:  1. 输入任意行文字,存于列表L中,当不输入任何内容直接回车后结束输入   1) 打印L列表中的内容   2) 计算您共输入了几行内容   3) 计算您共输入了多少个字符
  2. 输入一个整数(代表树干的高度)     打印出如下一棵树     输入: 2     打印:      *     ***      *      *     输入:3       *      ***     *****       *       *       *  3. 写一个程序,任意输入一个整数,判断这个数是否是素数(prime)    素数(也叫质数), 是只能被1和自身整除的正整数:      如: 2 3 5 7 11 等    提示:      用排除法: 当判断x是否是素数是,只要让x分别除以:        2, 3, 4, 5, .... x-1, 只要整除了,那x不是素数,否则x是素数  4.算出100~1000以内的水仙化数(Naricissistic Number)    水仙花数是指百位的3次方 加上 十位的3次方 加上 个位的3次方等于原数的数    如:      153 = 1**3 + 5**3 + 3**3    答案:      153, 370, ....
练习:  已知有列表:    L = [3, 5]
    1) 用索引和切片等操作,将原列表改变为:    L = [1, 2, 3, 4, 5, 6]        2) 将列表反转,删除最后一个元素后打印此列表       ...       print(L)  # [6, 5, 4, 3, 2]

练习:  1. 写程序,让用户输入一些整数,当输入-1时结束输入,将这些数存于列表L中    1)  打印用户共输入了几个数?    2)  打印您输入的数的最大数是多少    3)  打印您输入的数的最小数是多少    4)  打印您输入的这些数的平均值是多少?
练习:  输入多行文字,存入列表中,  每次输入回车后算一行    任意输入多行,当输入回车(即输入空行时结束输入)  1) 按原输入内容在屏幕上输出内容  2) 打印出您共输入了多少行文字  3) 打印出您共输入了多少个字符
练习:  1. 有字符串"hello"    请用此字符串生成:      ‘h e l l o‘ 和 ‘h-e-l-l-o‘    答案:      s = "hello"      a = ‘ ‘.join(s)  # a = ‘h e l l o‘      b = ‘-‘.join(s)  # b = ‘h-e-l-l-o‘
  2. 写一个程序,让用户输入很多正整数,当输入小于零的数时结束输入,    1) 打印这些数中最大的一个数    2) 打印这些数中第二大的一个数    3) 删除最小的一个数    4) 打印剩余数的和
练习:  用列表推导式生成1~100内奇数的列表  结果是: [1, 3, 5, 7, ..... 99]
  L = [x for x in range(1, 100, 2)]
  示例:    生成1~00内的奇数的列表:  L = [x for x in range(1, 100) if x % 2 == 1]
练习:  生成一个数值为 1 ~ 9的平方的列表,去掉所有的奇数的平方    L = [x**2 for x in range(1, 10)]
    # L = [4, 16, 36, 64]

练习:  1. 已知有一个字符串     s = ‘100,200,300,500,800‘     将其转化为整数的列表存于L列表中     L = [100, 200, 300, 500, 800]
  2. 生成前40个斐波那契数(Fibonacci)      1  1  2  3  5  8  13  .....      要求将这些数保存在列表中      打印这些数
  3. 有一些数存于列表中:    L = [1, 3, 2, 1, 6, 4, 2, ..... 98, 82]    将列表中出现的数字存入到另一个列表L2中      要求: 重复出现多次的数字在L2列表中只保留一份(去重)
写程序,实现以下要求:  1) 将如下数据形成一个字典seasons:    ‘键‘    ‘值‘     1      ‘春季有1, 2, 3月‘     2      ‘夏季有4, 5, 6月‘     3      ‘秋季有7, 8, 9月‘     4      ‘冬季有10,11,12月‘  2) 让用户输入一个整数,代表一个季度,打印这个季度对应的信息,如果用户输入的信息不在字典内,则打印信息不存在
练习:  输入一段字符串,打印出这个字符串中出现过的字符的出现次数  如:    输入:      abcdabcaba    打印:      a: 4次      b: 3次      d: 1次      c: 2次    注:       不要求打印的顺序
练习:  有字符串的列表如下:    L = [‘tarena‘, ‘xiaozhang‘, ‘tyke‘]    用上述列表生成如下字典:      d = {‘tarena‘: 6, ‘xiaozhang‘: 9, ‘tyke‘:4}    注:      字典的值为键的长度
练习:  1. 已知有两个等长的列表 list1  和 list2  以list1中的元素为键,以list2中的元素为值,生成相应的字典  list1 = [1001, 1002, 1003, 1004]  list2 = [‘Tom‘, ‘Jerry‘, ‘Spike‘, ‘Tyke‘]  生成的字典为:    {1001: ‘Tom‘, 1002:‘Jerry‘, .....}
  2. 输入任意个学生的姓名,年龄,成绩,每个学生的信息存入字典中,然后放入至列表中,每个学生的信息需要手动输入  当输入姓名为空时结束输入:    如:      请输入姓名:  xiaozhang      请输入年龄:  20      请输入成绩:  100      请输入姓名:  xiaoli      请输入年龄:  18      请输入成绩:  98      请输入姓名:  <回车> 结束输入    要求内部存储格式如下:    [{‘name‘:‘xiaozhang‘, ‘age‘:20, ‘score‘:100},      {‘name‘:‘xiaoli‘, ‘age‘:18, ‘score‘:98}]    打印所有学生的信息如下:    +---------------+----------+----------+    |     name      |   age    |   score  |    +---------------+----------+----------+    |   xiaozhang   |    20    |   100    |    |     xiaoli    |    18    |    98    |    +---------------+----------+----------+
集合练习:  经理有: 曹操,刘备,孙权  技术员有: 曹操,孙权,张飞,关羽  用集合求:    1) 即是经理,也是技术员的有谁?    2) 是经理,但不是技术员的人员都有谁?    3) 是技术员,不是经理的都有谁    4) 张飞是经理吗?    5) 身兼一职的人都有谁?    6) 经理和技术员共有几个人?
练习:  任意输入一些数字,存于列表L中。当输入负数时结束输入  1) 打印这些数的和   2) 打印这些数有多少种(去重)  3) 除重复的数字后,打印这些剩余数字的和
  提示,可以用集合去重
练习:  1. 写一个函数myadd, 此函数中的参数列表里有两个参数x, y    此函数的功能是打印 x + y 的和
    def myadd(....):        ....  # 注: .... 部是是我们要填写代码的地方
    myadd(100, 200)  # 300    print("ABC", "123")  # ABC123
  2. 写一个函数 mysum, 传入一个参数x代表终止整数,     打印出 1 + 2 + 3 + 4 + ..... + x的和    def mysum(x):        ....
    mysum(100)  # 5050    mysum(4)   # 10

return 语句  语法:    return [表达式]    注: []  代表可省略  作用:    用于函数中,结束当前函数的执行,返回到调用该函数的地方,同时返回一个对象的引用关系
  return 语句说明    1. return 语句后跟的表达式可以省略,省略后相 当于return None    2. 如果函数内没有return 语句,则函数执行完最后一条语句后返回None(相当于在最后加了一条return None语句)  示例见:    return.py

练习:  1. 写一个函数 mymax, 给函数传递两个参数,返回两个实参中最大的一个    def mymax(a, b):         ....
    v = mymax(100, 200)    print(‘v =‘, v)  # v = 200    print(mymax(‘ABC‘, ‘abc‘))  # abc
  2. 写一个函数 input_number      def input_number():          ....
      此函数用来获取用户循环输入的整数,当用户输入负数时结束输入。将用户输入的数字以列表的形式返回,再用内建函数max, min, sum取出户输入的最大值,最小值及和
      L = input_number()      print(L)  # 打印此列表      print("用户输入的最大数是:", max(L))      print("用户输入的最小数是:", min(L))      print("用户输入的数的和是:", sum(L))

练习:   1. 写一个函数 print_odd, 打印从begin开始,到end结束(不包含end)内的全部的奇数      def print_odd(begin, end):          ....
      print_odd(1, 10)  # 打印 1 3 5 7 9d      ptint_odd(10, 20) # 打印 11 13 15 17 19
   2. 定义两个函数:      sum3(a, b, c) 用于返回三个数的和      pow3(x)  用于返回x的三次方      用以上函数计算:        1. 计算1的立方 + 2的立方 + 3的立方的和          即:  1**3 + 2**3 + 3**3的和         2. 计算1 + 2 + 3 的和的立方,          即:(1+2+3)**3
  3. 改写之前的学生信息管理程序     改为两个函数:       1. 写一个函数 input_student() 用于返回学生信息的字典的列表(以前格式一样)       2. 写一个函数 output_student(lst)         此函数传入一个列表lst,即字典的列表         此函数把lst的内容以表格形式打印出来      def input_student():           ....
      def output_student(lst):           ...
      L = input_student()  # 获取学生信息的列表      output_student(L)  # 把L 以列表的形式打印 
练习:  写一个函数minmax(a, b, c)  有三个参数,这回这三个参数中的最小值和最大值,  要求,形成元组,最小值在前,最大值在后,如:
  def minmax(a, b, c):      ...
  t = minmax(11, 33, 22)  print(t)  # (11, 33)  # <<< 打印元组  xiao, da = minmax(6, 5, 4)  print(‘最小值:‘, xiao, ‘最大值:‘, da)
练习:  写一个函数 myadd, 此函数可以计算两个数的和,也可以计算三个数的和
  def myadd(......):     ....  print(myadd(10, 20))  # 30  print(myadd(100, 200, 300))  # 600
  2. 写一个函数,print_odd, 此函数可以传递一个实参,也可以传递两个实参,当传递一个实参时代表结束值  当传递两个实参时,第一个实参代表起始值,第二个实参代表结束值     打印出以此区间内的全部奇数,不包含结束数:
  print_odd(10)  # 1 3 5 7 9  print_odd(11, 20)  # 11 13 15 17 19     
练习:  写一个函数, mysum可以传入任意个实参的数字,返回所有实参的和
  def mysum(*args):     ...  print(mysum(1, 2, 3, 4))  # 10  print(mysum(10, 20, 30))  # 60
练习:  写一个函数,mymax类似于 内键的函数max    详见:      >>> help(max)   仿造 max 写一信mymax函数,功能与max完全相同   (要求不允许调用max函数)   print(mymax([6, 8, 3, 5]))  # 8   print(mymax(100, 200))  # 200   print(mymax(1, 3, 5, 9, 7))  # 9

思考题:  查看 >>>help(print)猜想print函烽的参数列表 是如何定义的?
练习:  创建一个全局变量 L = []  写一个函数:    def input_number():        ....    此函数每次调用将从键盘读入一些数字追加到列表L中 
  如:    L = []    def input_number():        ....    input_number()    print(L)  # [ .... 这些是您从键盘输入的数..]

练习:  1. 写一个函数isprime(x) 判断x是否为素数。如果是素数,返回True,否则返回False
  2. 写一个函数prime_m2n(m, n) 返回从m开始,到n结束(不包含n)范围内的素数,返回这些素数的列表并打印    如:      L = prime_m2n(5, 10)      print(L)  [5, 7]
  3. 写一个函数pimes(n) 返回小于n的全部素数的列表,并打印这些素数    如:      L = primes(10)      print(L)  # [2, 3, 5, 7]    1) 打印100 以内的全部素数    2) 打印200 以内的全部素数的和    4. 编写函数 fn(n) 此函数返回下列级数的和:      fn(n) = 1/(1*2) + 1/(2*3) + ....       + 1/(n*(n-1)) 的和
    print(fn(100))

练习:  写一个计算公式的解释执行器    已知有如下一些函数:        def myadd(x, y):            return x + y        def mysub(x, y):            return x - y        def mymul(x, y):            return x * y    写一个函数,传入字符串,返回相应的函数        def get_op(s):            # 此函数根据字符串来返回相应的函数.            # 如果传入字符串"加" 则返回myadd函数            # ....        ‘乘‘,则返回mymul函数            ... 此处自己实现     主程序如下:        while True:          s = input("请输入计算公式: ")# 10 加 20          L = s.split()          a = int(L[0])          b = int(L[2])          fn = get_op(L[1])          print("结果是:", fn(a, b))  # 30练习:  写一个函数叫hello(name),部分代码如下:  count = 0  def hello(name):      print(‘你好‘, name)      ... 此处代码省略,需要同学们自己填写      ... 此处代码需要改变全局变量来记录此函数曾经被调用过多少次.    hello(‘小张‘)  hello(‘小李‘)  print(‘hello 函数被调用‘, count, ‘次‘)  # 2次
练习:  1. 写一个lambda 表达式,判断这个数的2次方+1是否能被5整除,如果能被整除返回True, 否则返回False     例:        fa = lambda x: .....        print(fa(2))  # True        print(fa(4))  # False
  2. 写一个lambda表达式,求两个变量的最大值     例如:        def mymax(x, y):           ...        mymax = lambda ...        print(mymax(100, 200))  # 200

练习:  1. 给出一个整数n,写一个函数myfac来计算n!(n的阶乘)    n! = 1 * 2 * 3 * 4 * ..... * n    如:      print(myfac(5))  # 120  2. 给出一个整数n,写一个函数计算myfn(n):      1 + 2**2 + 3**3 + .... + n**n的和    如:      print(myfn(10)) # ???  3. 完全数:     1 + 2 + 3 = 6 (6为完全数)     1,2,3都为6的因数(因数是能被一个数x整除的整数为y,则y为x的因数)     1 x 6 = 6     2 x 3 = 6     完全数是指除自身以外的所有因数相加之和等于自身的数     求 4~5个完全数并打印出来     答案:       6       28       496       ......

4 实现带有界面的学生信息管理系统  程序启动时先弹出操作菜单:    +-------------------------+    | 1)  添加学生信息          |    | 2)  显示学生信息          |    | 3)  删除学生信息          |    | 4)  修改学生成绩          |    | q)  退出                 |    +-------------------------+    请选择: 1  要求 :      每个选择都要有一个函数来实现

练习:  1. 用map函数求:    1**3 + 2**3 + 3 ** 3 + .... 9**3 的和
  2. 用map函数求:    1**4 + 2**4 + 3 ** 4 + .... 20**4 的和
  提示: sum(map(.....))

练习:  1. 将 1 ~ 20 的偶数用filter生成可迭代对象后将可迭代对象生成的数放入到列表L中
  2. 写一个函数is_prime(x) 判断x是否是素数    用filter函数打印出: 20 ~ 30之间的全部素数

练习:  names = [‘Tom‘, ‘Jerry‘, ‘Spike‘, ‘Tyke‘]  排序的依据为字符串的反序:           ‘moT‘   yrreJ    ekipS    ekyT  结果:    [‘Spike‘, ‘Tyke‘, ‘Tom‘, ‘Jerry‘]

练习:  写函数 mysum(n)用递归方式实现求和    def mysum(n):        # 用递归方式求和        ...
    print(mysum(100))  # 5050    
思考题:  已知五位朋友在一起    第五位朋友比第四位朋友大2岁    第四位朋友比第三位朋友大2岁    第三位朋友比第二位朋友大2岁    第二位朋友比第一位朋友大2岁    第一位朋友说它10岁

练习:  1. 已知五位朋友在一起    第五位朋友比第四位朋友大2岁    第四位朋友比第三位朋友大2岁    第三位朋友比第二位朋友大2岁    第二位朋友比第一位朋友大2岁    第一位朋友说它10岁    写程序打印出第五位朋友 和第三位朋友 的年龄  2. 已知有列表:    L = [[3, 5, 8], 10, [[13, 14], 15, 18], 20]    1) 写一个函数print_list(lst) 打印出所有元素      print(L)  # 打印 3 5 8 10 13 14 ....    2) 写一个函数sum_list(lst) 返回这个列表中所有元素的和      print(sum_list(L))  # 86    注:      type(x) 可以返回一个变量的类型      如:         >>> type(20) is int # True         >>> type([1, 2, 3]) is list # True
  3. 改写之前的学生信息管理程序    要求添加四个功能:      | 5) 按学生成绩高-低显示学生信息 |      | 6) 按学生成绩低-高显示学生信息 |      | 7) 按学生年龄高-低显示学生信息 |      | 8) 按学生年龄低-高显示学生信息 |

练习:  1. 输入一个圆的半径,打印出这个圆的面积  2. 输入一个圆的面积,打印出这个圆的半径 
  (要求用math模块内的函数和数据实现)
练习:  写一个程序,输入你的出生日期,    1) 算出你已经出生多少天?    2) 算出你出生的那天是星期几?

练习:  1. 请编写函数fun 其功能是计算下列多项式的和:    fn = 1 + 1/1! + 1/2! + 1/3! + 1/4! + .. + 1/n!    (建义用数学模块的factorial实现)  求当n 等于100时,fn的值  看一下fn(100)的值是什么  2. 写一个程序,以电子时钟格式:    HH:MM:SS格式显示时间    要求每隔一秒变化一次
  3 写函数f(n)求下多项式的和  fn = 1/1 - 1/3 + 1/5 - 1/7 + 1/9 .... 1/(2*n-1)的和
  求当n取值为1000000时,    1) 打印 f(1000000) 的值    2) 打印 f(1000000) * 4的值,看看是什么
练习:  1. 猜数字游戏    随机生成一个 0~100之间的一个整数,用变量x绑定    让用户输入一个数y,输出猜数字的结果:      1) 如果y大于x则提示: "您猜大了"      2) 如果y小于x则提示: "您猜小了"      3) 如果y等于生成的数x,则提供示用户"恭喜您猜对了 "并退出猜数字    循环重复上述步聚,直到猜对为止。    猜对了,显示用户猜数字的次数,然后退出程序
练习:  1. 写一个闹钟程序,启动时设置定时时间,    到时间后打印一句"时间到...." 然后退出程序
  2. 模拟斗地主发牌,扑克牌共54张      黑桃(‘\u2660‘), 梅花(‘\u2663‘), 方块(‘\u2665‘), 红桃(‘\u2666‘)      A2-10JQK      大王、小王    三个人玩,每人发17张牌,底牌留三张    输入回车, 打印出第1个人的17张牌    输入回车, 打印出第2个人的17张牌    输入回车, 打印出第3个人的17张牌    输入回车, 打印三张底牌  3. 修改学生信息管理程序,将原student_info.py 拆分为模块    要求:      1. 主事件循环放在main.py中      2. show_menu 函数放在menu.py中      3. 与学生操作相关的函数放在 student_info.py中

练习:  写一个函数 get_score() 来获取学生成绩,    要求用户输入 1~100的整数,输果输入出现异常,返此函数返回0,    否则返回用户输入的成绩  示例:    def get_score():        ...    score = get_score()    print("学生的成绩是:", score)
python中全部的错误类型:    参见文档:      python_base_docs_html/Python全部的异常类型.html
练习:  写一个函数 get_age()用来获取一个人的年龄信息  此函数规定用户只能输入1~140之间的整数,如果用户输入其它的数则直接触发ValueError类型的错误通知     如果用户输入的年龄大于140,则触发       ValueError("年龄超出了正常值")     如果用户输入的年龄小于1,则触发       ValueError("年龄太小...")  def get_age():      ...  try:      age = get_age()      print("用户输入的年龄是:", age)  except ValueError as err:      print(‘用户输入的不是1~140的整数,获取年龄失败‘)      print("原因是:", err)
练习:  1. 一个球从100米高空落下,每次落地后反弹高度是原高度的一半,再落下,     1) 写程序算出皮球在第10次落地后反弹高度是多高?     2) 打印出球共经过多少米的路程
  2. 分解质因数, 输入一个正整数,分解质因数,    如:      输入: 90    则打印:      ‘90=2*3*3*5‘      (质因数是指最小能被原数整除的素数(不包括1))
  3. 修改原学生信息管理程序,加入异常处理语句,让程序在任何情况下都能够按逻辑正常执行.     例如:       输入成绩和年龄时,如果用户输入非法字符串也不会导致程序崩溃  
练习:  有一个集合:    s = {‘唐僧‘, ‘悟空‘, ‘八戒‘, ‘沙僧‘}    用 for语句来遍历所有元素如下:      for x in s:          print(x)      else:          print(‘遍历结束‘)    请将上面的for语句改写为 用while语句和迭代器实现

练习:  写一个生成器函数 myeven(start, stop)  此函数用来生成从 start开始到stop结束(不包含)区间内的一系列偶数  def myeven(start, stop):      ....
  evens = list(myeven(10, 20))  print(evens)  # [10, 12, 14, 16, 18]  for x in myeven(21, 30):      print(x)  # 22, 24, 26, 28
  L = [x**2 for x in myeven(3, 10)]  print(L)  # 16 36 64
练习:  已知有一个列表L      L = [2, 3, 5, 7]    用生成器表达式从此列表中拿到数,生成 列表中数据的平方
    gen = ......  # 此处用生成器表达式实现    L2 = list(gen)  # L2 = [4, 9, 25, 49]
思考:   L = [2, 3, 5, 7]   L2 = [x ** 2 for x in L]  # 列表推导式   it = iter(L2)   print(next(it))  # 4   L[1] = 10   print(next(it))  # 9
   L = [2, 3, 5, 7]   G3 = (x ** 2 for x in L)  # 生成器表达式   it = iter(G3)   print(next(it))  # 4   L[1] = 10   print(next(it))  # 100
练习:  写一个程序,读入任意行的文字,当输入空行时结束输入  打印带有行号的输入结果:    如:      请输入: hello<回车>      请输入: world<回车>      请输入: tarena<回车>      请输入: <回车> # 直接回车结束输入    输出如下:      第1行: hello      第2行: world      第3行: tarena
练习:  写一个程序,从键盘输入一段字符串存入s变量    1. 将此字符串转为字节串用变量b绑定,并打印出b    2. 打印字符串s的长度和字节串b的长度    3. 将b字节串再转换为字符串用变量s2 绑定,判断 s2 和 s是否相同?

练习:  1. 写一个生成器函数primes生成素数,  此生成器函数为 primes(begin, end)  如: [x for x in primes(10, 20)] 将得到列表     [11, 13, 17, 19]  2. 写一个生成器函数,生成斐波那契数列的前n个数     1 1 2 3 5 8 13      def fibonacci(n):          ...          yield...    1) 输出前20个数:      for x in fibonacci(20):          print(x)    2) 打印前40个数的和:       print(sum(fibonacci(40)))  3. 写程序打印杨辉三角(只打印6层)        1       1 1      1 2 1     1 3 3 1    1 4 6 4 1   1 5 10 10 5 1
练习:  自己写一个文件 ‘info.txt‘ 内部存一些文字信息    如:      张三 20 100      李四 21 96      小王 22 98    写程序将这些数据读取出来,打印到终端上
练习:  1. 写程序,循环输入很多个人的姓名,电话号码,    当输入结束后将这些信息存入到文件phonenumber.txt中    (建议先用列表暂存数据,格式自己定义)
  2. 写程序,将phonenumber.txt文件中的数据读取出来.     再用以下格式打印出来:      如:        小张 的电话是 13888888888        小李 的电话是 13999999999

练习:  1. 写程序实现复制文件的功能    要求:       1. 要考虑特大文件问题       2. 要关闭文件       3. 要能复制二进制文件    如:      请输入源文件路径名:  /home/tarena/xxx.tar.gz      请输入目标文件路径名: ./a.tar.gz    显示:      文件已成功复制
  2. 修改学生信息管理程序,要求加入两个功能:      9)  保存信息到文件(si.txt)      10) 从文件中读取数据(si.txt)    练习:  自己写一个‘人‘类: Human  class Human:      def set_info(self, name, age, address=‘未知‘):          ‘‘‘此方法用来给人对象添加‘姓名‘, ‘年龄‘, ‘家庭住址‘三个属性‘‘‘          ...  # << 此处自己实现      def show_info(self):          ‘‘‘显示此人的全部信息‘‘‘          ... # 此处自己实现  如:    h1 = Human()    h1.set_info(‘小张‘, 20, ‘北京市朝阳区‘)    h2 = Human()    h2.set_info(‘小李‘, 18)    h1.show_info()  # 小张今年 20 岁,家庭住址:北京市朝阳区    h2.show_info()  # 小李今年 18 岁,家庭住址:末知
练习:  写一个Student类    1) 为该类添加初始化方法, 实现在创建对象时自动设置      ‘姓名‘,‘年龄‘, ‘成绩‘ 属性    2) 添加set_score方法能修改成绩信息    3) 添加show_info方法打印学生对象的信息
  如:    class Student:        def __init__(...):            ...        ...
    s1 = Student(‘小王‘, 15, 59)    s1.show_info()  # 小王 今年 17 岁, 成绩是: 59    s1.set_score(80)    s1.show_info()  # 小王 今年 17 岁, 成绩是: 80

面向对向的综合示例:  有两个人(Human):    1.      姓名: 张三      年龄: 35    2.      姓名: 李四      年龄: 8    行为:      1. 教别人学东西 teach      2. 赚钱 works      3. 借钱 borrow    事情:      张三 教 李四 学 python      李四 教 张三 学 跳皮筋      张三 上班赚了 1000 元钱      李四 向 张三 借了 200 元钱      打印张三的信息: 35岁 的 张三 有钱 800元, 它学会跳皮筋      打印李四的信息: 8岁 的 李四 有钱 200元, 它学会python练习:  修改原来的学生信息管理程序,将原来字典来存储学生信息,  现改为用对象来存储学生信息    # file : student.py      class Student:        def __init__(self, n, a, s):             ....
    L = []    # L.append({...}) 改为对象    L.append(Student(‘xiaozhang‘, 20, 100))
    (要求类Student 要写在模块 student.py中)
练习:  用类来描述一个学生的信息(可以修改之前写的Student类)    class Student:         .... 此处自己实现
    学生信息有:       姓名, 年龄, 成绩
    将一些学生的对象存于列表中,可以任意添加和删除学生信息      1) 打印出学生的个数      2) 打印出所有学生的平均成绩      3) 打印出所有学生的平均年龄
思考:   list类里只有一个append向末尾加一个元素的方法,但没有向列表头部添加元素的方法,试想能否为列表在不改变原有类的基础上添加一个insert_head(n) 方法,实现在列表的头部(前部)添加元素  如:    class MyList(list):        def insert_head(self, n):            ...  # 需要自己添加代表
    myl = MyList(range(3, 6))    print(myl)  # [3, 4, 5]    myl.insert_head(2)    print(myl)  # [2, 3, 4, 5]    myl.append(6)    print(myl)  # [2, 3, 4, 5, 6]

练习:  1. 看懂学生管理程序,每一步做的事情及思想  2. 把同学们自己的学生信息管理程序用Student学生对象来存储信息;要求,不要在外部直接操作学生的属性,所有操作行为用方法来代替

练习:  写一个类Bicycle类 ,有 run方法.调用时显示骑行里程km    class Bicycle:        def run(self, km):            print(‘自行车骑行了‘, km, ‘公里‘)  再写一个类EBicycle(电动自行车类), 在Bicycle类的基础上添加了电池电量 volume 属性, 有两个方法:     1. fill_charge(self, vol)  用来充电, vol为电量     2. run(self, km) 方法每骑行10km消耗电量1度,同时显示当前电量,当电量耗尽时调用 父类的run方法继续骑行
    b = EBicycle(5)  # 新买的电动有内有5度电    b.run(10)  # 电动骑行了10km还剩 4 度电    b.run(100)  #电动骑行了40km,还剩0度电,其余60用脚登骑行    b.fill_charge(10)  # 又充了10度电    b.run(50)  # 骑行了50公里剩5度电
练习:  1. 修改原有的学生信息管理系统, 将学生对象的,全部属性   都变为私有属性,不让外部直接访问来实现封装
  2. 写一个列表类MyList实现存储整数列表,写类的定义如下:    class MyList:        def __init__(self, iterator):            self.data = ...    让此类的对象能用for语句进行迭代访问
    L = MyList(range(5))    print(L)    L2 = [x ** 2 for x in L]    print(L2)  # [0, 1, 4, 9, 16]
  3. 写一个类Fibonacci 实现迭代器协议 ,此类的对象可以作为可迭代对象生成相应的斐波那契数     1 1 2 3 5    class Fibonacci:        def __init__(self, n)  # n代表数据的个数            ...        ...    实现如下操作:      for x in Fibonacci(10):          print(x)  # 1 1 3 5 8 ....      L = [x for x in Fibonacii(50)]      print(L)      F = fibonicci(30)      print(sum(F))  
练习:  1. 实现两个自定义的列表相加  class MyList:      ....  此处自己实现  L1 = MyList([1, 2, 3])  L2 = MyList(range(4, 7))  L3 = L1 + L2  print(L3)  # MyList([1, 2, 3, 4, 5, 6])  L4 = L2 + L1  print(L4)  # MyList([4, 5, 6, 1, 2, 3])  L5 = L1 * 2  print(L5)  # MyList([1, 2, 3, 1, 2, 3])

练习:  实现有序集合类 OrderSet() 能实现两个集合的交集 &,全集 |,  补集 -  对称补集 ^, ==/!= , in/ not in 等操作  要求集合内部用 list 存储  class OrderSet:      ...  s1 = OrderSet([1, 2, 3, 4])  s2 = OrderSet([3, 4, 5])  print(s1 & s2)  # OrderSet([3, 4])  print(s1 | s2)  # OrderSet([1, 2, 3, 4, 5])  print(s1 ^ s2)  # OrderSet([1, 2, 5])  if OrderSet([1, 2, 3]) != OrderSet([3, 4, 5]):      print("不相等")  if s2 == OrderSet(3, 4, 5):     print(‘s2 == OrderSet(3, 4, 5) is True‘)  if 2 in s1:     print("2在 s1中")

原文地址:https://www.cnblogs.com/ParisGabriel/p/9383696.html

时间: 2024-10-13 18:00:50

Python全栈工程师 (exercises)的相关文章

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十四课(exercises)

# # 练习: # # 1. 用map函数求: # # 1**3 + 2**3 + 3 ** 3 + .... 9**3 的和 def add_(x): return x ** 3 print(sum(map(add_, range(1, 10)))) # # 2. 用map函数求: # # 1**4 + 2**4 + 3 ** 4 + .... 20**4 的和 def add_(x): return x ** 4 print(sum(map(add_, range(1, 21)))) # #

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十课(包、模块 的导入)

$ pip3 install tensorflow : 第三方模块 tensorflow 的安装 电脑必须有网 命令行自动下载安装dir(模块名): 查看模块所有属性 自定义模块导入 示例: 自定义模块的实现方法 def myfac(n): print('正在计算', n, '的阶乘') def mysum(n): print("正在计算1+2+3+...+%d的和" % n) name1 = "Audi" name2 = "TESLA" pri

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十三课(每周总结:2)

ParisGabriel 每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以 week summer: Python人工智能从入门到精通 函数式编程: 是指用一系列函数解决问题 每一个函数完成细小的功能,一系列函数的任意组合可以完成 大问题 函数仅接受输入并产生输入,不包含任何影响输出的内部 状态函数的可重用性: 如果一个函数的输入参数一定,则返回结果必须一定的函数 称为可重用函数 可重入和不可重入就是访问除局部变量以外的变量函数式编程要求: def 创建函数最好不要访问局部作用域

ParisGabriel:Python全栈工程师(0基础到精通)教程 第十三课

ParisGabriel 感谢 大家的支持  你们的阅读评价就是我最好的动力  我会坚持把排版内容以及偶尔的错误做的越来越好 每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以      Python人工智能从入门到精通 集合 set:         集合是可变的容器         集合内的数据对象都是唯一的(不能重复的) 集合是无序的储存结构.集合中的数据没有先后顺序关系 集合内的元素必须是不可变对象 集合是可迭代对象 集合相当于只有键没有值得字典(键则是集合的数据) (相当

ParisGabriel:Python全栈工程师(0基础到精通)教程 第十五课(函数嵌套、变量作用域)

ParisGabriel 感谢 大家的支持 每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以 Python人工智能从入门到精通 globals()/locals()函数: globals()返回当前全局作用域内变量的字典 locals() 返回当前局部作用域内变量的字典函数变量: 函数名是变量,它在def 语句创建时绑定函数 fa1 = fa 没有括号 绑定函数 fa1 = fa() 返回结果 函数的变量名可以序列交换算法一个函数可以作为另一个函数的实参传递: 例如: def m

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十一课(包、模块 的导入)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰 Python人工智能从入门到精通 补充:包的相对导入 只对后两种导入方式有用 包的相对导入 只对后两种导入方式有用 异常(基础)except: 什么是错误: 是指由于逻辑或语法等导程序无法正常执行的问题 什么是异常: 是程序出错的标识符的一种状态 当异常发时 程序不会再向下执行,而转去调用此函数的地方 待处理此错误并恢复为正常状态 异常的作用: 用作信号, 通知上层调用者有错误产生需要处理try 语句: 两种语

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十二课(迭代器、字节串)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰 Python人工智能从入门到精通 迭代器 Iterator: 用<>括号表示的一定是对象 什么是迭代器? 迭代器是访问可迭代对象的工具 迭代器是指用iter(obj) 函数返回的对象(实例) 迭代器可以用next(it) 函数获取可迭代对象的数据 迭代器函数iter和next iter(iterable) 从可迭代对象中返回一个迭代器,iterable 必须是能提供一个迭代器的对象 next(iterator

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十五课(文件操作、)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰 Python人工智能从入门到精通 最近简直要死了 发烧感冒 喉咙痛..... 如何长期保存计算机中数据: 需要文件操作 文件 file: 文件是用于数据存储的单位 文件通常用来长期储存数据 文件中的数据是以字节为单位进行顺序储存的文件的操作流程: 1.打开文件 2.读/写文件 3.关闭文件 注: 任何操作系统, 一个应用程序同时打开文件的数量有最大数限制文件打开函数: open(file, mode='rt')

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十七课(类变量、方法、继承、覆盖)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 Python人工智能从入门到精通 补充: 实例方法都是操作实例对象的 属于此类对象的方法 实例变量 添加/修改属性: 对象.属性名 = 表达式 删除: del 对象.属性名 类 |          对象 | 实例 class  object     instance 类的本质上也是对象 类可以创建此类对象 ---------------------------------------------