day01---day06

回眸只為那壹抹淺笑 提交于 2019-11-29 21:55:33
   1 Day01
   2 Exercise01
   3 print("你好,世界!")
   4 Exercise02
   5     汇率转换器
   6 # 获取数据 -- 美元
   7 str_usd = input("请输入美元:")
   8 int_usd = float(str_usd)
   9 # 逻辑计算 -- 美元 × 7.1393
  10 result = int_usd *  7.1393
  11 # 显示结果 -- 人民币
  12 print("结果是:"+str(result))
  13 
  14 # 1. 程序是改出来
  15 # 2. 程序不是自上而下编写的,但是自上而下运行的。
  16 # 3. 英语不好用词典
  17 Exercise03
  18 (1)指定范围内,列出素数
  19 # 方法一
  20 # def get_prime(begin,end):
  21 #     '''
  22 #         指定范围内,列出素数
  23 #         :param begin: 范围起点
  24 #         :param end: 范围终点
  25 #         :return:素数列表
  26 #         '''
  27 #     list_result = []
  28 #     #生成范围内的整数
  29 #     for number in range(begin,end):
  30 #          # 判断素数
  31 #         for item in range(2,number):
  32 #             if number % item == 0:
  33 #                 continue
  34 #         else:
  35 #             list_result.append(number)
  36 #     return list_result
  37 # print(get_prime(5,10))
  38 
  39 # 方法二  艺术讲究的是代码质量
  40 # 第一步,判断一个数是不是素数
  41 def is_prime(number):
  42     '''
  43     判断指定的数字是否为素数
  44     :param number: 指定的整数
  45     :return:True表示是素数,False表示不是素数
  46     '''
  47     for item in range(2, number):
  48         if number % item == 0:
  49             return False
  50     return True
  51 
  52 def get_prime(begin,end):
  53     '''
  54       获取范围内的素数
  55     :param begin: 开始值(包含)
  56     :param end: 结束值(不包含)
  57     :return: 所有素数的列表
  58     '''
  59     return [number for number in range(begin,end) if is_prime(number)]
  60 print(get_prime(5,30))
  61 
  62 # 先写类型,在写逻辑
  63 # 结构清晰,凸显艺术性
  64 # 函数的定义:
  65 #       1,用于封装一个特定的功能,表示一个功能或者行为
  66 #       2,函数是可与重复执行的语句块,可以重复调用
  67 # 作用:提高代码的可重复性和维护性(代码层次结构更清晰)
  68 
  69 Day02
  70 Review
  71     复习
  72     python执行方式
  73         交互式   文件式
  74     python执行过程
  75         源代码   -"编译"-> 字节码 -解释-> 机器码
  76         print("..")            01
  77 """
  78 
  79 Demo01
  80 """
  81     函数
  82 """
  83 #10:15 上课
  84 
  85 # 字面意思:输入
  86 # 作用:在终端中输入信息,按下回车后,信息进入程序(左边)。
  87 # = 叫做 赋值 符号
  88 msg = input("输吧:")
  89 # 字面意思:打印/显示
  90 # 作用:将程序中的信息,输出到终端。
  91 print(msg)
  92 Demo02
  93 """
  94     变量
  95     练习:
  96         exercise01.py
  97         exercise02.py
  98 
  99         程序运行在哪里?   内存
 100         程序在处理什么?   数据
 101         作用:程序存储数据
 102         语法:名称 = 对象
 103         本质:内存示意图
 104 """
 105 
 106 a = "赵敏"
 107 b = "张无忌"
 108 a = "敏儿"
 109 # a与b的运算,实际操作的是变量ab所指向的数据。
 110 # 运算结果产生新的对象
 111 c = a + b
 112 print(c)
 113 
 114 #11:25
 115 # 其他语法
 116 num01 = name02 = 500
 117 num03 , name04 = 800,1000
 118 Demo03
 119 """
 120     数据类型
 121 """
 122 
 123 # 1. 整形  int
 124 # 十进制:0123456789  10
 125 a = 500
 126 # 二进制(逢二进一):0  1  10
 127 b = 0b10
 128 # 八进制(逢八进一):0 1 2 3 4 5 6 7   10  11  12
 129 c = 0o10
 130 # 十六进制:0 1 2 3 --> 9    a(10)  --> f(15)
 131 d = 0x10
 132 print(d)
 133 
 134 # type 函数 可以查看变量所指向的对象类型
 135 print(type(a))
 136 
 137 # 2. 浮点型
 138 e = 1.23
 139 # 以科学计数法表达
 140 print(0.00000000000000000000005)# 5e-23
 141 print(type(e))
 142 
 143 
 144 # 3. 字符串 str
 145 name = "张无忌"
 146 f = "100"# 只是字符串不是整数100
 147 print("name")# 打印name,而不是变量.
 148 
 149 Demo04
 150 """
 151     数据类型转换
 152         int  float   str
 153 
 154     运算符
 155 
 156     练习:exercise03.py
 157         exercise04.py
 158         exercise05.py
 159         exercise06.py
 160         exercise07.py
 161 
 162 """
 163 # 1. 类型转换
 164 str01 = "100"
 165 # str -->  int
 166 # 注意:如果字符串存储的数据,不像整形,转换失败.
 167 int01 = int(str01)
 168 re = int01 + 1
 169 # int --> str
 170 print("结果是:" + str(re))
 171 
 172 # 2. 运算符
 173 # (1)算数运算符+ - * /  //  %  **
 174 num01 = 5
 175 num02 = 2
 176 print(num01 / num02)  # 2.5   除法:取最终结果
 177 print(num01 // num02)  # 2    除法:取整数商
 178 print(num01 % num02)  # 6    除法:取余数
 179 print(56 % 10)  # 获取个位
 180 
 181 print(2 ** 6)
 182 # (2) 增强运算符+=  -=  *=  /=   //=   %=  **=
 183 num03 = num01 + 5  # 不会改变num01
 184 num01 = num01 + 5  # 变量num01 加5后创建新对象,又赋值给自身.
 185 print(num01)  # 10
 186 
 187 num01 += 5 # 相当于 num01 = num01 + 5
 188 Demo05
 189 """
 190     数据类型
 191         复数
 192         bool
 193     运算符
 194         比较
 195         逻辑
 196     练习:exercise08.py
 197 """
 198 # 1.复数 = 实部 + 虚部
 199 a = 10 + 3j
 200 print(type(a))
 201 
 202 # 2. bool 命题:带有判断性质的陈述句。
 203 # 例如:我是一个男人.  结果:对True    错Flase
 204 num01 = 10
 205 num02 = 3
 206 b = 10 < 3
 207 print(b)  # F
 208 
 209 # 3. 比较运算符 >   <  >=   <=  相同 ==   不同!=
 210 print(10.5 > 5)  # 如果不能参与比较运算,会报错。
 211 
 212 # 4. 逻辑运算符   and  or   not
 213 # 判断bool的关系
 214 # and 表示并且的关系(都得满足), 现象:一假俱假
 215 print(True and True)  # True
 216 print(True and False)  # False
 217 print(False and True)  # False
 218 print(False and False)  # False
 219 # or 表示或者的关系(满足一个就行), 现象:一真俱真
 220 print(True or True)  # True
 221 print(True or False)  # True
 222 print(False or True)  # True
 223 print(False or False)  # False
 224 # 非 (取反)
 225 b = True
 226 c = not b
 227 print(c)  # False
 228 """
 229     字符串字面值
 230     练习:exercise06
 231 """
 232 
 233 # 1. 各种引号
 234 str01 = "悟空"
 235 str02 = '悟空'
 236 
 237 # 可见即所得
 238 str03 = """
 239     悟
 240        空
 241 """
 242 print(str03)
 243 str04 = '''悟空'''
 244 
 245 str05 = '我叫"孙悟空"'
 246 str05 = "我叫'孙悟空'"
 247 
 248 print(str05)
 249 
 250 # 2.转义符:改变原始字符含义的特殊符号
 251 # \"   \'   \\    \n 换行   \t
 252 str06 = "我叫\'孙\n悟\t空\""
 253 print(str06)
 254 
 255 url = "C:\\nltk_data\corpora\\biocreative_ppi"
 256 # 原始字符串(没有 转义符)
 257 url = r"C:\nltk_dat\a\corpora\biocre\ative_ppi"
 258 print(url)
 259 
 260 # 3. 格式化
 261 name = "悟空"
 262 age = 3000
 263 score = 99.99
 264 print("%s的年龄是%d成绩是%.1f。"%(name,age,score))
 265 
 266 Demo06
 267 """
 268     del 语句
 269     空值对象None
 270 """
 271 a = 500
 272 b = 800
 273 c = a
 274 d = b
 275 
 276 Exercise01
 277 """
 278     画出下列代码内存图
 279 """
 280 
 281 class_name = 1908
 282 stu_name = "小智"
 283 class_name = stu_name
 284 stu_name = "小霞"
 285 print(class_name)# ?
 286 Exercise02
 287 """
 288     画出下列代码内存图
 289 """
 290 
 291 # 变量交换
 292 name01 = "苏大强"
 293 name02 = "苏明玉"
 294 temp = name01
 295 name01 = name02
 296 name02 = temp
 297 print(name01)  # ?
 298 print(name02)  # ?
 299 Exercise03
 300 """
 301     练习1:在终端中获取一个变量
 302           再获取另外一个变量
 303           然后编写程序,交换两个变量的数据.
 304           最后打印两个变量
 305 """
 306 variable01 = input("请输入第一个变量:")
 307 variable02 = input("请输入第二个变量:")
 308 # temp = variable01
 309 # variable01 = variable02
 310 # variable02 = temp
 311 variable01,variable02 = variable02,variable01
 312 print("变量1是:" + variable01)
 313 print("变量2是:" + variable02)
 314 
 315 Exercise04
 316 """
 317      练习2:在终端中获取一个商品单价。5
 318            再获取一个购买的数量.3
 319            最后获取支付的金额。20
 320            计算应该找回多少钱。5    20 - 5 × 3
 321 """
 322 # 备注:float()  int()  存在输入错误的风险
 323 # 15:25 上课
 324 str_price = input("请输入一个商品单价:")
 325 float_price = float(str_price)
 326 
 327 str_count = input("请输入一个购买的数量:")
 328 int_count = int(str_count)
 329 
 330 money = float(input("请输入支付的金额:"))
 331 
 332 result = money - float_price * int_count
 333 
 334 print("结果是:"+str(result))
 335 Exercise05
 336 """
 337      古代的秤,一斤是十六量.
 338      在终端中获取两,然后计算是几斤零几量
 339      显示格式:几斤零几量
 340 """
 341 liang_weight = int(input("请输入两:"))
 342 jin = liang_weight // 16
 343 liang = liang_weight % 16
 344 print(str(jin) + "斤零" + str(liang) + "量")
 345 
 346 Exercise06
 347 """
 348     练习:
 349         公式:
 350             距离 = 加速度 * 时间的平方 * 0.5 + 初速度 × 时间
 351         已知(在终端中录入):距离、时间、初速度
 352         计算:加速度
 353 
 354         (距离 - 初速度 × 时间) * 2/ 时间的平方  = 加速度
 355 """
 356 distance = float(input("请输入距离:"))
 357 initial_velocity = float(input("请输入初速度:"))
 358 time = float(input("请输入时间:"))
 359 accelerated_speed = (distance - initial_velocity * time) * 2 / time ** 2
 360 print("加速度是:" + str(accelerated_speed))# round(accelerated_speed,2)
 361 
 362 Exercise07
 363 """
 364     在终端中获取一个四位整数:1234
 365     计算每位相加和 1+2+3+4
 366 """
 367 #16:50 上课
 368 number = 1234
 369 # # 方式1:
 370 # # 个位
 371 # unit01 = number % 10
 372 # # 十位  1234 // 10 -->  123  % 10 --> 3
 373 # unit02 = number // 10 % 10
 374 # # 百位  1234 // 100 -->  12  % 10 --> 2
 375 # unit03 = number // 100 % 10
 376 # # 千位  1234 // 1000 --> 1
 377 # unit04 = number // 1000
 378 # result = unit01 + unit02 + unit03 + unit04
 379 # print("结果是:" + str(result))
 380 
 381 # 方式2:
 382 result = number % 10
 383 result += number // 10 % 10
 384 result += number // 100 % 10
 385 result += number // 1000
 386 print("结果是:" + str(result))
 387 Exercise08
 388 # 练习:在终端获取年份(year),判断是否是闰年(True 是,Flase 不是)
 389 # 条件:年份能被4整数,但是不能被100整除
 390 #      年份能被400整除
 391 
 392 year = int(input("请输入年份:"))
 393 result = year % 4 == 0 and year % 100 != 0 or year % 400 == 0
 394 print("是否为闰年:"+str(result))
 395 day02 作业
 396 1. 三合一
 397 2. 当天练习独立完成
 398 3. 画出下列代码内存图
 399     name01 = "张翠山"
 400     name03 = name02 = "张三丰"
 401     name03 = "张无忌"
 402     del name02
 403 
 404     number01 = 500
 405     number02 = number01
 406     number01 = 800
 407     print(number02)
 408 4. 温度转换器:
 409     摄氏度 = (华氏度 - 32) 除以 1.8
 410     开氏度 = 摄氏度 + 273.15
 411     (1)在终端中录入华氏度,计算摄氏度
 412     (2)在终端中录入摄氏度,计算开氏度
 413 5. (扩展)在控制台中录入一个秒,计算是几小时零几分钟零几秒钟.
 414 6. 阅读:
 415     程序员的数学第二/三章
 416 
 417 Homework01
 418 # 画图
 419 name01 = "张翠山"
 420 name03 = name02 = "张三丰"
 421 name03 = "张无忌"
 422 del name02
 423 
 424 number01 = 500
 425 number02 = number01
 426 number01 = 800
 427 print(number02)
 428 Homework02
 429 """
 430 温度转换器:
 431     摄氏度 = (华氏度 - 32) 除以 1.8
 432     开氏度 = 摄氏度 + 273.15
 433     (1)在终端中录入华氏度,计算摄氏度
 434     (2)在终端中录入摄氏度,计算开氏度
 435 """
 436 # (1)在终端中录入华氏度,计算摄氏度
 437 fahrenheit_degree = float(input("请输入华氏度"))
 438 centigrade_degree = (fahrenheit_degree - 32) / 1.8
 439 print("摄氏度是:" + str(centigrade_degree))
 440 
 441 # (2)在终端中录入摄氏度,计算开氏度
 442 centigrade_degree = float(input("请输入摄氏度"))
 443 kelvin_degree = centigrade_degree + 273.15
 444 print("开氏度是:" + str(kelvin_degree))
 445 Homework03
 446 """
 447 (扩展)在控制台中录入一个秒,计算是几小时零几分钟零几秒钟.
 448 """
 449 # 10:40
 450 total_second = int(input("请输入总秒数:"))
 451 second = total_second % 60
 452 hour = total_second // 60 // 60
 453 minute = total_second // 60 % 60
 454 # 在字符串中插入变量:
 455 #  “...x...”      “..."+变量+"...”
 456 print(str(hour) + "小时零" + str(minute) + "分钟零" + str(second) + "秒钟")
 457 Day03
 458 图
 459 Review
 460 复习
 461     数据的基本运算
 462         变量:
 463             名称 = 对象
 464             名称1 = 名称2 = 对象
 465             名称1,名称2 = 对象1,对象2
 466             变量交换:
 467                 名称1,名称2 = 名称2,名称1
 468 
 469         核心数据类型
 470             整数int  小数float   字符串str   布尔bool
 471             空值对象None
 472             类型转换int()  float()  str()  bool()
 473         del 删除变量
 474         运算符
 475             算数运算 + - ×  /  //  %   **
 476             增强运算 += ....    a = a + 10
 477             比较运算 >  <   >=   <=   ==   !=
 478             逻辑运算and(并且 都得满足)  or(或者 满足一个)    not
 479                 短路逻辑
 480 """
 481 year = 2019
 482 
 483 # True  and  ?   -->  后面的命题决定最终结论
 484 # False  and  ?  -->  后面的命题不影响最终结论
 485 # 短路逻辑:前面的命题如果可以确定最终结论,后面命题不再执行。
 486 # 启发:如果有多个命题,尽量将算法复杂的放置在最后。
 487 b01 = year < 0 and print("看见我了吗?")
 488 
 489 # True   or  ?   -->  后面的命题不影响最终结论
 490 # False  or  ?   -->  后面的命题决定最终结论
 491 b02 = year < 0 or print("看见我了吗?")
 492 
 493 
 494 
 495 Demo01
 496 """
 497     行
 498 """
 499 
 500 # 3个物理行  3个逻辑行
 501 a = 10
 502 b = 20
 503 c = a + b
 504 
 505 # 1个物理行 3个逻辑行
 506 a = 10;b = 20;c = a + b
 507 
 508 # 3个物理行  1个逻辑行
 509 d = 1 + 2 \
 510     + 3 + \
 511     4 + 5
 512 
 513 e = 1 + (2 +
 514          3 +
 515          4) + 5
 516 Demo02
 517 """
 518     选择语句
 519     练习:exercise01.py
 520          exercise02.py
 521          exercise03.py
 522          exercise04.py
 523          exercise05.py
 524          exercise06.py
 525 
 526     if 条件:
 527         满足条件执行的代码
 528     else:
 529         不满足条件执行的代码
 530 
 531 """
 532 
 533 # tab 选中的代码向右移动
 534 # shift+tab 选中的代码向左移动
 535 sex = input("请输入性别:")
 536 # 如果是男的
 537 # if sex == "男":
 538 #     print("您好,先生!")
 539 # else:
 540 #     # 否则
 541 #     print("您好,女士!")
 542 
 543 if sex == "男":
 544     print("您好,先生!")
 545     # 否则 如果
 546 elif sex == "女":
 547     print("您好,女士!")
 548 else:  # 否则
 549     print("性别未知")
 550 
 551 # 调试:让程序在指定的行中断,然后逐语句执行。
 552 # 步骤:
 553 #  1. 加断点(在可能出错的代码)
 554 #  2. 调试
 555 #  3. 逐语句执行
 556 # 重点:
 557 #  1. 审查程序执行流程
 558 #  2. 检查变量取值
 559 Demo03
 560 """
 561     真值表达式
 562     条件表达式
 563     练习:exercise07.py
 564 """
 565 # 1. 真值表达式
 566 # if 10 != 0:
 567 # if bool(10):
 568 if 10:
 569     print("满足条件")
 570 # 作用:
 571 msg = input("请输入:")
 572 # if msg != "":
 573 if msg:
 574     print("输入的不是空字符串")
 575 # 2. 条件表达式
 576 # if input("请输入性别:") == "男":
 577 #     sex = 1
 578 # else:
 579 #     sex = 0
 580 sex = 1 if input("请输入性别:") == "男" else 0
 581 Demo04
 582 """
 583     while 循环
 584 
 585     while 条件:
 586         循环体
 587 
 588     练习:exercise08
 589 """
 590 
 591 # 死循环:循环条件永远满足
 592 while True:
 593     str_usd = input("请输入美元:")
 594     int_usd = float(str_usd)
 595     result = int_usd * 7.1393
 596     print("结果是:" + str(result))
 597 
 598     if input("输入e键退出") == "e":
 599         break  # 退出循环体
 600 Demo05
 601 """
 602     循环计数
 603     三要素:
 604         初始值  循环条件  增减变量
 605         起点      终点      跨度
 606     练习:exercise09.py
 607         exercise10.py
 608         exercise11.py
 609 
 610 """
 611 
 612 # 需求:跑5圈
 613 count = 0
 614 while count < 5:  # 0 1  2  3  4
 615     print("跑圈")
 616     count += 1  # count = count + 1
 617 Demo06
 618 """
 619     while 条件:
 620         循环体
 621     else:
 622         条件不满足,才执行的代码.
 623 """
 624 
 625 # 需求:3次
 626 
 627 import random  # 产生随机数的工具
 628 
 629 # 产生随机数
 630 random_number = random.randint(1, 100)
 631 print(random_number)
 632 
 633 count = 0
 634 while count < 3:
 635     count += 1
 636     input_number = int(input("请输入数字:"))
 637     if input_number > random_number:
 638         print("大了")
 639     elif input_number < random_number:
 640         print("小了")
 641     else:
 642         print("猜对了,总共猜了" + str(count) + "次")
 643         break
 644 else:# 只有猜错次数超过3次,才会执行else语句。(猜对了,不执行)
 645     print("失败啦")
 646 # 价值:判断循环结束,是因为不满足条件,还是循环体中的break,
 647 Exercise01
 648 # 练习:在day02/exercise04.py基础上,增加新功能。
 649 # 如果钱不够提示"金额不足"
 650 # 否则提示"应找回:xx元"
 651 
 652 str_price = input("请输入一个商品单价:")
 653 float_price = float(str_price)
 654 str_count = input("请输入一个购买的数量:")
 655 int_count = int(str_count)
 656 money = float(input("请输入支付的金额:"))
 657 result = money - float_price * int_count
 658 
 659 if result < 0:
 660     print("金额不足")
 661 else:
 662     print("应找回:"+str(result)+"元")
 663 Exercise02
 664 # 练习:在终端中获取一个季度(春夏秋冬)
 665 #     显示相应的月份
 666 #     春天:1月2月3月
 667 #     夏天:4月5月6月
 668 #     秋天:7月8月9月
 669 #     冬天:10月11月12月
 670 
 671 season = input("请输入季度:")
 672 # if season == "春":
 673 #     print("1月2月3月")
 674 # if season == "夏":
 675 #     print("4月5月6月")
 676 # if season == "秋":
 677 #     print("7月8月9月")
 678 # if season == "冬":
 679 #     print("10月11月12月")
 680 
 681 if season == "春":
 682     print("1月2月3月")
 683 elif season == "夏":
 684     print("4月5月6月")
 685 elif season == "秋":
 686     print("7月8月9月")
 687 elif season == "冬":
 688     print("10月11月12月")
 689 Exercise03
 690 # 练习:在终端中录入一个数字:
 691 #     再终录入一个运算符:
 692 #     最后终录入另外一个数字:
 693 #     根据运算符计算数字
 694 #     要求:运算符+-*/,如果输入其他符号,提示:运算符输入有误。
 695 
 696 number_one = float(input("请输入第一个数字:"))
 697 operator = input("请输入运算符:")
 698 number_two = float(input("请输入第二个数字:"))
 699 if operator == "+":
 700     print(number_one + number_two)
 701 elif operator == "-":
 702     print(number_one - number_two)
 703 elif operator == "*":
 704     print(number_one * number_two)
 705 elif operator == "/":
 706     print(number_one / number_two)
 707 else:
 708     print("运算符输入有误")
 709 Exercise04
 710 """
 711     练习:在终端中录入4个同学的体重
 712         打印最重的数字。
 713     思路:假设第一个就是最大值
 714          如果第二个大于假设的,那么替换假设的。
 715          如果第三个大于假设的,那么替换假设的。
 716          如果第四个大于假设的,那么替换假设的。
 717          最终,假设的就是最大的。
 718 """
 719 number01 = float(input("请输入第1个体重:"))
 720 number02 = float(input("请输入第2个体重:"))
 721 number03 = float(input("请输入第3个体重:"))
 722 number04 = float(input("请输入第4个体重:"))
 723 
 724 max_value = number01
 725 if number02 > max_value:
 726     max_value = number02
 727 if number03 > max_value:
 728     max_value = number03
 729 if number04 > max_value:
 730     max_value = number04
 731 
 732 print(max_value)
 733 Exercise05
 734 # 练习:在终端中录入一个分数,显示等级.
 735 # 不及格  及格  良好  优秀  输入有误(范围不在0--100之间)
 736 
 737 score = float(input("请输入成绩:"))
 738 # if score >= 90 and score <= 100:
 739 #     print("优秀")
 740 # elif score >= 80 and score < 90:
 741 #     print("良好")
 742 # elif score >= 60 and score < 80:
 743 #     print("及格")
 744 # elif score >= 0 and score < 60:
 745 #     print("不及格")
 746 # else:
 747 #     print("输入有误")
 748 
 749 # if 90 <= score <= 100:
 750 #     print("优秀")
 751 # elif 80 <= score < 90:
 752 #     print("良好")
 753 # elif 60 <= score < 80:
 754 #     print("及格")
 755 # elif 0 <= score < 60:
 756 #     print("不及格")
 757 # else:
 758 #     print("输入有误")
 759 
 760 # score == 85
 761 
 762 if score > 100 or score <0:
 763     print("输入有误")
 764 elif 90 <= score:
 765     print("优秀")
 766 elif 80 <= score:
 767     print("良好")
 768 elif 60 <= score:
 769     print("及格")
 770 else:
 771     print("不及格")
 772 Exercise06
 773 # 练习:在终端中获取一个月份,年份,打印相应的天数.
 774 #  1 3 5 7 8 10 12 --> 31天
 775 #  2 --> 28(平年)  29(闰年)
 776 #  4  6  9  11 --> 30天
 777 
 778 year = int(input("请输入年份:"))
 779 month = int(input("请输入月份:"))
 780 if month < 1 or month > 12:
 781     print("月份有误")
 782 elif month == 2:
 783     if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
 784         print("29天")
 785     else:
 786         print("28天")
 787 elif month == 4 or month == 6 or month == 9 or month == 11:
 788     print("30天")
 789 else:  # 1 3 5 7 8 10 12
 790     print("31天")
 791 Exercise07
 792 练习1:在终端中录入一个整数,如果是奇数为变量state赋值"是奇数",
 793 #        否则赋值"是偶数"。
 794 
 795 # number = int(input("请输入整数:"))
 796 # if number % 2 == 1:
 797 #     state = "是奇数"
 798 # else:
 799 #     state = "是偶数"
 800 
 801 # number = int(input("请输入整数:"))
 802 # if number % 2:
 803 #     state = "是奇数"
 804 # else:
 805 #     state = "是偶数"
 806 
 807 state = "是奇数" if int(input("请输入整数:")) % 2 else "是偶数"
 808 print(state)
 809 # 练习2:在终端中录入一个年份,如果是闰年为变量day赋值29,
 810 #        否则赋值28。
 811 # year = int(input("请输入年份:"))
 812 # if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
 813 #     day = 29
 814 # else:
 815 #     day = 28
 816 # 不建议,太绕了。
 817 # year = int(input("请输入年份:"))
 818 # if not year % 4 and year % 100 or not year % 400:
 819 #     day = 29
 820 # else:
 821 #     day = 28
 822 year = int(input("请输入年份:"))
 823 day = 29 if year % 4 == 0 and year % 100 != 0 or year % 400 == 0 else 28
 824 Exercise08
 825 # 练习:改造exercise02,实现重复录入季度打印月份功能
 826 #      如果输入q键,则程序停止。
 827 
 828 while True:
 829     season = input("请输入季度:")
 830     if season == "春":
 831         print("1月2月3月")
 832     elif season == "夏":
 833         print("4月5月6月")
 834     elif season == "秋":
 835         print("7月8月9月")
 836     elif season == "冬":
 837         print("10月11月12月")
 838 
 839     if input("输入q键退出:") == "q":
 840         break
 841 Exercise09
 842 # 练习1:在终端中显示0  1  2  3
 843 count = 0
 844 while count <= 3:
 845     print(count)
 846     count += 1
 847 # 练习2:在终端中显示2  3  4  5  6
 848 count = 2
 849 while count <= 6:
 850     print(count)
 851     count += 1
 852 # 练习3:在终端中显示1  3  5  7
 853 count = 1
 854 while count <= 7:
 855     print(count)
 856     count += 2
 857 # 练习4:在终端中显示8  7  6  5  4
 858 count = 8
 859 while count >= 4:  #
 860     print(count)
 861     count += -1
 862 # 练习5:在终端中显示-1  -2  -3  -4  -5
 863 count = -1
 864 while count >= -5:  #
 865     print(count)
 866     count += -1
 867 # 16:55 上课
 868 Exercise10
 869 """
 870     练习:
 871         一张纸的厚度是0.01毫米
 872         请计算,对折多少次超过珠穆朗玛峰(8844.43米).
 873 """
 874 
 875 # thickness = 0.01 / 1000
 876 thickness = 1e-5
 877 count = 0
 878 while thickness < 8844.43:
 879     # 对折
 880     thickness *= 2
 881     count += 1
 882 
 883 print(count)
 884 Exercise11
 885 # 练习:猜数字1.0
 886 # 程序产生1个1--100之间的随机数
 887 # 在终端中重复猜测,直到猜对了为止
 888 # 提示:"大了"   "小了"   "猜对了,总共猜了?次"
 889 import random  # 产生随机数的工具
 890 
 891 # 产生随机数
 892 random_number = random.randint(1, 100)
 893 count = 0
 894 while True:
 895     count += 1
 896     input_number = int(input("请输入数字:"))
 897     if input_number > random_number:
 898         print("大了")
 899     elif input_number < random_number:
 900         print("小了")
 901     else:
 902         print("猜对了,总共猜了" + str(count) + "次")
 903         break
 904 day03 作业
 905 1. 三合一
 906 2. 当天练习独立完成.
 907 3. 在终端中获取月份,显示季度。
 908 4. 在终端中获取年龄,显示
 909 婴儿(0-1)、儿童(2-13)、青少年(14-20)、成年人(21-65)、老年人(66--150)、仙人(上不封顶)
 910 5. 根据身高体重,参照BMI,返回身体状态。
 911     BMI:用体重(千克)除以身高(米)的平方。
 912     体重过低:小于18.5(不包含)
 913     正常:18.5  -- 24(不包含)
 914     超重:24  -- 28(不包含)
 915     I度肥胖:28  -- 30(不包含)
 916     II度肥胖:30  -- 40(不包含)
 917     III度肥胖:大于40
 918     要求:循环不断执行,如果身高是空字符串则退出。
 919 6. 阅读:
 920     python入门到实践 从一 – 五章
 921 Homework01
 922 """
 923     在终端中获取月份,显示季度。
 924 """
 925 month = int(input("请输入月份:"))
 926 if month < 1 or month > 12:
 927     print("月份输入有误")
 928 elif month >= 10:
 929     print("冬天")
 930 elif month >= 7:
 931     print("秋天")
 932 elif month >= 4:
 933     print("夏天")
 934 else:
 935     print("春天")
 936 Homework02
 937 """
 938     在终端中获取年龄,显示
 939     婴儿(0-1)、儿童(2-13)、青少年(14-20)、成年人(21-65)、老年人(66--150)、仙人(上不封顶)
 940 """
 941 
 942 age = int(input("请输入年龄:"))
 943 if age < 0:
 944     print("输入有误")
 945 elif age <= 1:
 946     print("婴儿")
 947 elif age <= 13:
 948     print("儿童")
 949 elif age <= 20:
 950     print("青少年")
 951 elif age <= 65:
 952     print("成年人")
 953 elif age <= 150:
 954     print("老年人")
 955 else:
 956     print("仙人")
 957 Homework03
 958 """
 959 根据身高体重,参照BMI,返回身体状态。
 960     BMI:用体重(千克)除以身高(米)的平方。
 961     体重过低:小于18.5(不包含)
 962     正常:18.5  -- 24(不包含)
 963     超重:24  -- 28(不包含)
 964     I度肥胖:28  -- 30(不包含)
 965     II度肥胖:30  -- 40(不包含)
 966     III度肥胖:大于40
 967     要求:循环不断执行,如果身高是空字符串则退出。
 968 """
 969 while True:
 970     height = input("请输入身高(米):")
 971     # 短路思想
 972     if height == "":
 973         break
 974     height = float(height)
 975     weight = float(input("请输入体重(千克)"))
 976     bmi = weight / height ** 2
 977     if bmi < 18.5:
 978         print("体重过低")
 979     elif bmi < 24:
 980         print("正常")
 981     elif bmi < 28:
 982         print("超重")
 983     elif bmi < 24:
 984         print("正常")
 985     elif bmi < 30:
 986         print("I度肥胖")
 987     elif bmi < 40:
 988         print("II度肥胖")
 989     else:
 990         print("III度肥胖")
 991 Day04
 992 Review
 993 """
 994     复习
 995     语句
 996         选择语句:让一条或多条语句有选择性的执行。
 997             if bool条件:
 998                 满足条件执行的代码
 999             elif 条件2:
1000                 满足条件2执行的代码
1001             else:
1002                 都不满足执行的代码
1003 
1004         循环语句:让一条或多条语句重复执行。
1005             while 条件:
1006                 满足条件执行的代码
1007             else:
1008                 不满足循环条件执行的代码
1009 
1010             while 不超过三次:
1011                 猜数字
1012                 if 猜对了:
1013                     离开
1014             else:
1015                 失败
1016 总结
1017 1. for + range
1018 2. 容器 --> 字符串 --> 编码、格式化字符串(占位符)
1019        --> 通用操作(索引/切片)
1020        --> 列表list(内存图、存储变量、可变)
1021 Demo01
1022 """
1023     for
1024 
1025     for 变量名 in 可迭代对象:
1026         变量 存储的是可迭代对象中的元素
1027 """
1028 
1029 for item in "我叫张无忌!":
1030     print(item)
1031 
1032 Demo02
1033 """
1034     for  +  range
1035     练习:exercise02.py
1036         exercise03.py
1037 """
1038 # 预定次数
1039 
1040 # range  -->  1 2 3 4
1041 for element in range(1,5):
1042     print(element)
1043 
1044 # range  -->  0 1 2
1045 for element in range(3):
1046     print("跑圈")
1047 
1048 # range -->  8  10  12  14
1049 for element in range(8,15,2):
1050     print(element)
1051 
1052 
1053 Demo03
1054 """
1055     continue
1056     练习:exercise04.py
1057 """
1058 
1059 # 需求:累加1--100之间,能被5整除的数字.
1060 # sum_value = 0
1061 # for item in range(1, 101):
1062 #     思想:满足条件累加
1063 #     if item % 5 == 0:
1064 #         sum_value += item
1065 # print(sum_value)
1066 sum_value = 0
1067 for item in range(1, 101):
1068     # 思想:不满足条件跳过
1069     if item % 2 != 0:
1070         continue  # 跳过本次循环
1071     sum_value += item
1072 print(sum_value)
1073 Demo04
1074 """
1075     字符串
1076     练习:exercise05
1077 """
1078 # 1. 不可变
1079 # 原因:如果在原有内存上修改数据,可能破坏其他对象的内存。
1080 name = "孙悟空"
1081 name = "悟空"
1082 print(name)# "齐天大圣"
1083 
1084 # 2. 编码:让字符 转换为 数字
1085 # 字 --> 数
1086 number = ord("a")
1087 print(number)#97
1088 # 数 --> 字
1089 char = chr(97)
1090 print(char)# a
1091 Demo05
1092 """
1093     字符串通用操作
1094     练习:exercise07
1095 """
1096 
1097 #1. 数学运算
1098 str01 = "八戒"
1099 str01 += "悟空"
1100 print(str01)# 八戒悟空
1101 
1102 # 重复生成容器元素
1103 str01 *= 3
1104 print(str01)# 八戒悟空八戒悟空八戒悟空
1105 
1106 # 2.成员运算   元素 in  容器  --> bool
1107 print("八戒" in str01)# true
1108 
1109 # 3. 索引:定位单个元素
1110 str02 = "我是齐天大圣孙悟空。"
1111 print(str02[0])# 第一个字符
1112 print(str02[-1])# 最后一个字符
1113 # 正数第四个
1114 print(str02[3])
1115 # 倒数第三个
1116 print(str02[-3])
1117 # print(str02[50])# 索引不能超出界限  "索引越界"
1118 # print(str02[-30])
1119 # 4. 切片:定位多个元素   容器名[起点:终点:间隔]
1120 print(str02[2:6:1])# 齐天大圣
1121 print(str02[0:2])# 我是"""
1122     列表
1123         与字符串最大的区别:存储字符与存储变量、可变与不可变
1124     练习:exercise08.py
1125 """
1126 
1127 # 1. 创建
1128 list01 = ["悟空",50,1.5,True]
1129 list02 = list("齐天大圣")# "齐天大圣" --> ["齐","天","大","圣"]
1130 print(list02)
1131 # 空列表
1132 list03 = []
1133 list04 = list()
1134 
1135 # 2. 查询(索引/切片/循环)
1136 print(list01[-1])
1137 # 通过切片访问元素,会创建新列表
1138 print(list01[1:3])
1139 for item in list01:
1140     print(item)
1141 
1142 # 3. 增加
1143 # 追加
1144 list01.append("唐僧")
1145 # 插入
1146 list01.insert(1,"八戒")
1147 
1148 print(list01)
1149 # 4.修改
1150 list01[0] = "孙悟空"
1151 # 通过切片修改元素,不会创建新列表
1152 # list01[2:5] = [1,2,3]
1153 # list01[2:5] = [1]
1154 # list01[2:5] = [1,23,4,234,245,43,5,53,6]
1155 # list01[2:5] = 100 # 不是可迭代对象,不能通过切片修改.
1156 print(list01)
1157 
1158 # 5.删除  del 变量
1159 # del
1160 del list01[0]
1161 del list01[1:3]
1162 # 根据元素
1163 list01.remove("唐僧")
1164 print(list01)
1165 print(str02[:2])# 我是
1166 print(str02[-4:-1])# 孙悟空
1167 print(str02[-4:])# 孙悟空
1168 print(str02[:])#我是齐天大圣孙悟空。
1169 print(str02[-2:-5:-1])#空悟孙
1170 print(str02[::-1])#。空悟孙圣大天齐是我
1171 print(str02[1:1])# 空的
1172 print(str02[3:1])# 空的
1173 print(str02[3:1:-1])# 天齐
1174 print(str02[-2:3:-1])# 空悟孙圣大
1175 print(str02[::2])# 我齐大孙空
1176 # 练习: “我是明教教主张无忌”
1177 # 打印第一个字符
1178 # 打印最后一个字符
1179 # 打印最后一个字符
1180 # 打印中间的字符
1181 # 打印前三个字符
1182 # 打印后三个字符
1183 # 打印 我教张
1184 # 忌张教明我
1185 # ...
1186 Demo06
1187 """
1188     列表
1189         与字符串最大的区别:存储字符与存储变量、可变与不可变
1190     练习:exercise08.py
1191 """
1192 
1193 # 1. 创建
1194 list01 = ["悟空",50,1.5,True]
1195 list02 = list("齐天大圣")# "齐天大圣" --> ["齐","天","大","圣"]
1196 print(list02)
1197 # 空列表
1198 list03 = []
1199 list04 = list()
1200 
1201 # 2. 查询(索引/切片/循环)
1202 print(list01[-1])
1203 # 通过切片访问元素,会创建新列表
1204 print(list01[1:3])
1205 for item in list01:
1206     print(item)
1207 
1208 # 3. 增加
1209 # 追加
1210 list01.append("唐僧")
1211 # 插入
1212 list01.insert(1,"八戒")
1213 
1214 print(list01)
1215 # 4.修改
1216 list01[0] = "孙悟空"
1217 # 通过切片修改元素,不会创建新列表
1218 # list01[2:5] = [1,2,3]
1219 # list01[2:5] = [1]
1220 # list01[2:5] = [1,23,4,234,245,43,5,53,6]
1221 # list01[2:5] = 100 # 不是可迭代对象,不能通过切片修改.
1222 print(list01)
1223 
1224 # 5.删除  del 变量
1225 # del
1226 del list01[0]
1227 del list01[1:3]
1228 # 根据元素
1229 list01.remove("唐僧")
1230 print(list01)
1231 Exercise01
1232 # 练习:
1233 # 在终端中获取一个四位整数,计算每位相加和.
1234 # “1234” --> “1”  --> 1
1235 #        --> “2”  --> 2
1236 
1237 str_number = input("请输入整数:")
1238 result = 0
1239 for item in str_number:
1240     result += int(item)
1241 print(result)
1242 
1243 # 三板斧:调试、 内存图、..
1244 # 10:15 上课
1245 Exercise02
1246 # 练习1:累加在终端中显示0  1  2  3
1247 sum_value = 0
1248 for item in range(4):
1249     sum_value += item
1250 print(sum_value)
1251 # 练习2:累加在终端中显示2  3  4  5  6
1252 sum_value = 0
1253 for item in range(2, 7):
1254     sum_value += item
1255 print(sum_value)
1256 # 练习3:累加在终端中显示1  3  5  7
1257 sum_value = 0
1258 for item in range(1, 8, 2):
1259     sum_value += item
1260 print(sum_value)
1261 # 练习4:累加在终端中显示8  7  6  5  4
1262 sum_value = 0
1263 for item in range(8, 3, -1):
1264     sum_value += item
1265 print(sum_value)
1266 # 练习5:累加在终端中显示-1  -2  -3  -4  -5
1267 sum_value = 0
1268 for item in range(-1, -6, -1):
1269     sum_value += item
1270 print(sum_value)
1271 Exercise03
1272 # 练习:随机加法考试题
1273 # 随机产生两个数字(1-10之间) 5   2
1274 # 在终端中获取两个数字相加的结果  “请输入5+2=?”
1275 # 如果回答正确加10分,错误减5分。
1276 # 总共3道题,最后显示得分。
1277 # 11:15
1278 
1279 import random
1280 
1281 score = 0
1282 for item in range(3):#0 1 2
1283     random_number01 = random.randint(1,10)
1284     random_number02 = random.randint(1,10)
1285     input_number = int(input("请输入"+str(random_number01)+"+"+str(random_number02)+"=?"))
1286     if input_number == random_number01 + random_number02:
1287         score += 10
1288     else:
1289         score -= 5
1290 
1291 print("得分是:"+str(score))
1292 Exercise04
1293 # 练习:累加10--50之间,个位不是2、5、9的整数
1294 sum_value = 0
1295 for item in range(10, 51):
1296     unit01 = item % 10
1297     if unit01 == 2 or unit01 == 5 or unit01 == 9:
1298         continue
1299     sum_value += item
1300 print(sum_value)
1301 
1302 # 总结:
1303 # 循环语句
1304 # for:预定次数  for item in range(次数)
1305 #     经典案例:3道考试题
1306 # while:不知道次数,但知道循环条件。while 条件:
1307 #     经典案例:纸张对折到8848m。
1308 # 循环的价值:累加4位整数  -变成-> 累加n位整数
1309 Exercise05
1310 # 练习1:在终端中获取一个字符串,循环打印每个字符的编码.
1311 str_input = input("请输入字符串:")
1312 for item in str_input:
1313     print(ord(item))
1314 
1315 # 练习2:在终端中反复录入一个编码值,然后打印字符串。
1316 #       如果录入空字符串,则退出程序。
1317 while True:
1318     str_input = input("请输入:")
1319     if str_input == "":
1320         break
1321 
1322     code_value = int(str_input)
1323     print(chr(code_value))
1324 Exercise06
1325 # 练习:在终端中输出下列内容,将?换成变量.
1326 # ?斤零?两
1327 jin, liang = 10, 5
1328 print("%d斤零%d两" % (jin, liang))
1329 
1330 # ?+?=?
1331 number01, number02 = 20, 10.5
1332 print("%.1f+%.1f=%.1f" % (number01, number02, number01 + number02))
1333 
1334 # 我的名字是?,成绩是?。
1335 name, score = "悟空", 100
1336 print("我的名字是%s,成绩是%d。" % (name, score))
1337 
1338 # 15:30 上课
1339 Exercise07
1340 # 练习: “我是明教教主张无忌”
1341 # 16:50 上课
1342 str01 = "我是明教教主张无忌"
1343 # 打印第一个字符
1344 print(str01[0])
1345 # 打印最后一个字符
1346 print(str01[-1])# 通过反向索引
1347 print(str01[len(str01)-1])# 通过正向索引
1348 # 打印中间的字符
1349 print(str01[len(str01) // 2])
1350 # 打印前三个字符
1351 print(str01[:3])# 通过反向索引
1352 # 打印后三个字符
1353 print(str01[-3:])# 通过反向索引
1354 # 打印 我教张
1355 print(str01[::3])# 通过反向索引
1356 # 忌张教明我
1357 print(str01[::-2])# 通过反向索引
1358 # ...
1359 print(str01[2:20])# 通过反向索引
1360 Exercise08
1361 """
1362     练习:
1363     1. 创建列表,存储八大行星.
1364     2. 打印距离太阳最近的行星(第一个元素).
1365     3. 打印距离太阳最远的行星(最后一个元素).
1366     4. 打印金星到天王星之间的行星.
1367     5. 正向打印所有行星(一行一个)
1368     6. 反向打印所有行星(一行一个)
1369 """
1370 
1371 list_planets = ["水星", "金星", "地球", "火星", "木星", "土星", "天王星", "海王星"]
1372 print(list_planets[0])
1373 print(list_planets[-1])
1374 print(list_planets[2:-2])
1375 for item in list_planets:
1376     print(item)
1377 # 反向
1378 # 通过切片实现
1379 for item in list_planets[::-1]:
1380     print(item)
1381 # 通过索引实现
1382 for i in range(len(list_planets) - 1, -1, -1):
1383     print(list_planets[i])
1384 day04作业
1385 1. 三合一
1386 2. 当天练习独立完成
1387 3. 在终端中获取一个整数,
1388     作为边长,打印矩形。
1389     例如:边长3
1390     ***
1391     * *
1392     ***
1393     例如:边长5
1394     *****
1395     *   *
1396     *   *
1397     *   *
1398     *****
1399 4. 判断一个字符串是否是回文
1400     回文:上海自来水来自海上
1401     思路:正向 == 反向
1402 
1403 5. (扩展)
1404     一个小球从100米高度落下
1405     每次弹回原高度一半
1406     请计算:
1407         (1)总共弹起来多少次(最小弹起高度是0.01m)?
1408         (2)整个过程总共走了多少米?
1409 Homework01
1410 """
1411 3. 在终端中获取一个整数,
1412     作为边长,打印矩形。
1413     例如:边长3
1414     ***
1415     * *
1416     ***
1417     例如:边长5
1418     *****
1419     *   *
1420     *   *
1421     *   *
1422     *****
1423 """
1424 
1425 number = int(input("请输入整数:"))
1426 print("*" * number)
1427 for item in range(number - 2):
1428     print("*" + " " * (number - 2) + "*")
1429 print("*" * number)
1430 Homework02
1431 """
1432 4. 判断一个字符串是否是回文
1433     回文:上海自来水来自海上
1434     思路:正向 == 反向
1435 """
1436 str01 = "上海自来水来自海上"
1437 if str01 == str01[::-1]:
1438     print("是回文")
1439 else:
1440     print("不是回文")
1441 Homework03
1442 """
1443     一个小球从100米高度落下
1444     每次弹回原高度一半
1445     请计算:
1446         (1)总共弹起来多少次(最小弹起高度是0.01m)?
1447         (2)整个过程总共走了多少米?
1448 """
1449 height = 100
1450 count = 0
1451 distance = height
1452 # 当前高度
1453 # while height > 0.01:
1454 # 弹起来的高度
1455 while height / 2 > 0.01:
1456     count += 1
1457     # 弹起来
1458     height /= 2
1459     # print("第%d次弹起高度是%f米." % (count, height))
1460     distance += height * 2  # 累加起/落距离
1461 
1462 print("总共弹起来%d次。" % count)
1463 print("总共经过%.2f米" % distance)
1464 #  10:15 上课
1465 
1466 Day05
1467 Review
1468 """
1469     复习
1470     语句
1471         选择
1472             if 条件:
1473                 满足条件执行的代码
1474             else:
1475                 不满足条件执行的代码
1476 
1477         循环
1478             while 条件:
1479                 循环体
1480             else:
1481                 不满足条件执行的代码
1482 
1483             for 变量 in 可迭代对象:
1484                 循环体
1485                 可迭代对象:容器(str/list....),
1486 
1487             range:整数生成器
1488                 range(起点,终点,间隔)
1489                 -- 不包含终点
1490                 -- 起点默认0
1491                 -- 间隔默认1
1492                 -- 通过for获取整数
1493 
1494             for + range:预定次数
1495             while:已知条件
1496 
1497         跳转
1498             在循环内部使用
1499             break : 中断循环
1500             continue:跳过一次
1501 
1502     容器
1503         字符串str:存储字符编码,不可变序列.
1504         列表list:存储变量,可变序列.
1505 """
1506 
1507 
1508 Demo01
1509 """
1510     list 内存图
1511     练习:exercise01.py
1512         exercise02.py
1513         exercise03.py
1514 """
1515 list01 = ["唐僧", "悟空", "八戒"]
1516 list01.append("沙僧")
1517 # 将list01存储的列表地址赋值给list02(两个变量指向同一个列表对象)
1518 list02 = list01
1519 list01[0] = "唐三藏"
1520 print(list02[0])  # "唐三藏"
1521 
1522 list01 = [800, 1000]
1523 list01.append(900)
1524 # 将list01指向的列表拷贝一份(创建了新列表),再赋值给list02(两个变量指向不同的列表对象)
1525 list02 = list01[:]
1526 # 所以修改其中一个列表对象,不影响另外一个列表对象.
1527 list01[0] = 500
1528 print(list02[0])  # 800
1529 
1530 list01 = [300]
1531 list02 = list01
1532 # 修改的是变量list01的指向(列表对象没有变化)
1533 list01 = 500
1534 print(list02[0])  # 300
1535 
1536 list01 = [300, 400, 500]
1537 # 将list01指向的列表倒叙拷贝一份(创建新列表)
1538 list02 = list01[::-1]
1539 # 遍历列表["四百","五百","六百"],将所有元素插入到list01指向的列表中。
1540 list01[1:2] = ["四百", "五百", "六百"]
1541 print(list01)
1542 print(list02)
1543 
1544 list01 = [1, 2]
1545 # 向列表追加一个元素(列表)
1546 list01.append([3, 4])
1547 # list02 = list01[:]
1548 # 浅拷贝
1549 list02 = list01.copy()
1550 # 修改列表第三个元素(列表)的第一个元素
1551 list01[2][0] = "三"
1552 print(list02[2][0])
1553 
1554 list01 = [100, [200, 300]]
1555 # 将list01存储的列表地址赋值给变量list02
1556 list02 = list01
1557 # 将list01存储的列表浅拷贝一份(创建新列表)
1558 list03 = list01[:]
1559 # 同上
1560 # list03 = list01.copy()
1561 # 深拷贝
1562 import copy
1563 
1564 list04 = copy.deepcopy(list01)
1565 # 优点:深拷贝后的数据,与之前的数据互不影响。
1566 # 缺点:由于拷贝整个依赖的数据,所以特别占用内存。
1567 
1568 
1569 list01 = [500, 600, 700]
1570 list02 = [500, 600, 700]
1571 # 比较的是list01指向的对象与list02指向的对象
1572 print(list01 == list02)# true
1573 # is 比较的是变量list01存储的地址与变量list02存储的地址
1574 print(list01 is list02)# false
1575 # is 的本质比较地址 id(变量)  返回变量指向的对象地址
1576 print(id(list01) == id(list02)) # false
1577 Demo02
1578 """
1579     list --> str
1580     练习:exercise04.py
1581 """
1582 
1583 # 需求: 根据某些逻辑,拼接字符串.
1584 # 0123456789
1585 # str_result = ""
1586 # for item in range(10):
1587 #     # 两个字符串拼接,会产生新的字符串对象,
1588 #     str_result = str_result + str(item)
1589 # print(str_result)
1590 
1591 list_result = []
1592 for item in range(10):
1593     # 将新字符串追加到列表中,不会产生新对象
1594     list_result.append(str(item))
1595 str_result = "".join(list_result)
1596 print(str_result)
1597 Demo03
1598 """
1599     str --> list
1600     练习:exercise05.py
1601 """
1602 
1603 # 使用一个字符串记录多个数据
1604 # 使用分割符隔离多个数据
1605 str01 = "孙悟空-猪八戒-qtx"
1606 list_result = str01.split("-")
1607 print(list_result)
1608 Demo04
1609 """
1610     列表推导式
1611     练习:exercise06.py
1612 """
1613 # 需求1:将list01中的每个元素增加1以后,存入list02中。
1614 list01 = [4, 54, 5, 65, 76, 89, 4]
1615 # list02 = []
1616 # for item in list01:
1617 #     list02.append(item + 1)
1618 list02 = [item + 1 for item in list01]
1619 print(list02)
1620 
1621 # 需求2:将list01中的所有偶数,存入list03中。
1622 # list03 = []
1623 # for item in list01:
1624 #     if item % 2 == 0:
1625 #         list03.append(item)
1626 list03 = [item for item in list01 if item % 2 == 0]
1627 print(list03)
1628 Demo05
1629 """
1630     元组tuple
1631     练习:exercise07.py
1632     练习:exercise08.py
1633 """
1634 # 1. 创建
1635 tuple01 = (1, 2, 3, 4)
1636 tuple02 = ()
1637 # list 预留空间 -->  tuple 按需分配
1638 tuple03 = tuple(["a", "b", "c"])
1639 list03 = list(tuple03)
1640 
1641 # tuple04 = ("a")  # 类型是str
1642 tuple04 = ("a",)  # 如果元组中只有一个元素,那么必须加上逗号.
1643 print(type(tuple04))
1644 
1645 tuple05 = 1, 2, 3
1646 
1647 # 可以直接从序列给多个变量赋值
1648 name01, name02 = ("张无忌", "孙悟空")
1649 
1650 # 2. 查询(索引/切片/循环)
1651 print(tuple03[-1])
1652 print(tuple03[::-1])  # 元组切片的结果还是元祖
1653 for item in tuple03:
1654     print(item)
1655 
1656 for i in range(len(tuple03) - 1, -1, -1):
1657     print(tuple03[i])
1658 Exercise01
1659 """
1660     练习1:在终端中循环录入学生的成绩,
1661           如果录入空字符串,则停止。
1662           打印最高分、最低分、平均分。
1663 """
1664 list_score = []
1665 while True:
1666     str_score = input("请输入学生成绩:")
1667     if str_score == "":
1668         break
1669 
1670     list_score.append(float(str_score))
1671 
1672 print(max(list_score))
1673 print(min(list_score))
1674 print(sum(list_score) / len(list_score))
1675 Exercise02
1676 """
1677     练习2:在终端中循环录入你喜欢的人名:
1678           如果录入空字符串,则停止。
1679           将所有人倒序打印在终端中(一人一行)
1680           要求:如果名称重复提示"已经存在",不再存储。
1681 """
1682 list_name = []
1683 while True:
1684     name = input("请输入您喜欢的人名:")
1685     if name == "":
1686         break
1687     if name in list_name:
1688         print("已经存在")
1689     else:
1690         list_name.append(name)
1691 # 通过切片访问列表元素(浅拷贝列表)
1692 # for item in list_name[::-1]:
1693 #     print(item)
1694 # 通过索引访问列表元素
1695 for i in range(len(list_name) - 1, -1, -1):
1696     print(list_name[i])
1697 Exercise03
1698 # 练习3:将列表[4,5,6,4,8,9]中所有偶数删除
1699 
1700 list01 = [4, 5, 6, 4, 8, 9]
1701 # for item in list01:
1702 #     if item % 2 == 0:
1703 #         # 删除的是变量item,而不是列表中的元素
1704 #         del item
1705 
1706 # for i in range(len(list01)):
1707 #     if list01[i] % 2 == 0:
1708 #         # 删除列表中的元素
1709 #          删除元素时,后一个元素向前赋值,总会错过。
1710 #         del list01[i]
1711 #
1712 
1713 # 方案1
1714 # for i in range(len(list01)-1,-1,-1):
1715 #     if list01[i] % 2 == 0:
1716 #         del list01[i]
1717 #
1718 
1719 # 方案2
1720 # for item in list01[::-1]:
1721 #     if item % 2 == 0:
1722 #         list01.remove(item)
1723 # 15:30 上课
1724 for i in range(len(list01)-1,-1,-1):
1725     if list01[i] % 2 == 0:
1726          list01.remove(list01[i])
1727 
1728 print(list01)
1729 Exercise04
1730  练习:在终端中循环录入字符串,如果录入空字符,则停止录入.
1731 #      最后打印录入的内容(一个字符串)
1732 
1733 list_result = []
1734 while True:
1735     str_input = input("请输入内容:")
1736     if str_input == "":
1737         break
1738     list_result.append(str_input)
1739 
1740 str_result = "".join(list_result)
1741 print(str_result)
1742 Exercise05
1743 # 练习:将英文语句,进行单词反转(结果还是str).
1744 # "How are you"  --> you are How
1745 
1746 str_message = "How are you"
1747 list_temp = str_message.split(" ")
1748 str_result = " ".join(list_temp[::-1])
1749 print(str_result)
1750 
1751 
1752 Exercise06
1753 # 练习1:使用列表推导式生成1--50之间能被3 或者 5 整除的数字.
1754 # result01 = []
1755 # for item in range(1,51):
1756 #     if item % 3 == 0 or item % 5 == 0:
1757 #         result01.append(item)
1758 
1759 result01 = [item for item in range(1,51) if item % 3 == 0 or item % 5 == 0]
1760 
1761 # 练习2:使用列表推导式生成5 -- 20 之间数字的平方.
1762 result02 = [item ** 2 for item in range(5,21)]
1763 print(result01)
1764 print(result02)
1765 
1766 # 16:50
1767 Exercise07
1768 """
1769     使用容器思想,改造根据月份计算天的功能。
1770 """
1771 
1772 year = int(input("请输入年份:"))
1773 month = int(input("请输入月份:"))
1774 if month < 1 or month > 12:
1775     print("月份有误")
1776 elif month == 2:
1777     if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
1778         print("29天")
1779     else:
1780         print("28天")
1781 # elif month == 4 or month == 6 or month == 9 or month == 11:
1782 elif month in (4,6,9,11):
1783     print("30天")
1784 else:  # 1 3 5 7 8 10 12
1785     print("31天")
1786 
1787 # 思路:将每月的天数,统一存入元组.
1788 # days_of_month = (31,?,31,30,31,30,31,31,30,31,30,31)
1789 # days_of_month[2]
1790 Exercise08
1791 # 练习: 在终端中录入年月日,计算这是这一年的第几天.
1792 # 2019 年  3 月 5 日
1793 # 31 + 28 + 5
1794 
1795 year = int(input("请输入年份:"))
1796 month = int(input("请输入月份:"))  # 3
1797 day = int(input("请输入天:"))  # 5
1798 
1799 if month <1 or month > 12:
1800     print("月份有误")
1801 else:
1802     # 计算2月的天数
1803     day_of_month02 = 29 if year % 4 == 0 and year % 100 != 0 or year % 400 == 0 else 28
1804     # 存储每月的天数
1805     days_of_month = (31, day_of_month02, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
1806 
1807     # total_day = 0
1808     # for i in range(month - 1):
1809     #     total_day+= days_of_month[i]
1810 
1811     total_day = sum(days_of_month[:month - 1])
1812 
1813     total_day += day
1814 
1815     print(total_day)
1816 day05 作业:
1817 1. 三合一
1818 2. 当天练习独立完成
1819 3. 画出下列代码内存图
1820 name01 = "孙悟空"
1821 names = ["八戒"]
1822 tuple01 = ("唐僧",name,names)
1823 name = "齐天大圣"
1824 names[0] = "天蓬元帅"
1825 print(tuple01)
1826 
1827 4. 将1970年到2050年之间所有闰年,存入列表.
1828 
1829 5. 将元组(4,5,15,6,7,8)中最大的数字找出来。(不使用max)
1830     思想:假设第一个元素就是最大的
1831          依次与后面的元素进行比较,如果大于假设的,则替换。
1832 
1833 6. 彩票:双色球
1834     红色:6个  1--33之间的整数   不能重复
1835     蓝色:1个  1--16之间的整数
1836     1) 随机产生一注彩票(列表(前六个是红色,最后一个蓝色))
1837     2) 在终端中录入一支彩票
1838     要求:满足彩票的规则.
1839 Homework01
1840 """
1841 画图
1842 name01 = "孙悟空"
1843 names = ["八戒"]
1844 tuple01 = ("唐僧",name,names)
1845 name = "齐天大圣"
1846 names[0] = "天蓬元帅"
1847 print(tuple01)
1848 """
1849 name = "孙悟空"
1850 names = ["八戒"]
1851 tuple01 = ("唐僧", name, names)
1852 name = "齐天大圣"
1853 names[0] = "天蓬元帅"
1854 print(tuple01)
1855 Homework02
1856 """
1857 将1970年到2050年之间所有闰年,存入列表.
1858 """
1859 # list_year = []
1860 # for item in range(1970,2051):
1861 #     if item  % 4 ==0 and item % 100 != 0 or item % 400 == 0:
1862 #         list_year.append(item)
1863 
1864 list_year = [item for item in range(1970, 2051) if item % 4 == 0 and item % 100 != 0 or item % 400 == 0]
1865 print(list_year)
1866 Homework03
1867 """
1868 将元组(4,5,15,6,7,8)中最大的数字找出来。(不使用max)
1869     思想:假设第一个元素就是最大的
1870          依次与后面的元素进行比较,如果大于假设的,则替换。
1871 """
1872 tuple01 = (4, 5, 15, 6, 7, 8)
1873 max_value = tuple01[0]
1874 # 与后面元素(  tuple01[i] )进行比较
1875 for i in range(1, len(tuple01)):
1876     if max_value < tuple01[i]:
1877         max_value = tuple01[i]
1878 print(max_value)
1879 Homework04
1880 """
1881 6. 彩票:双色球
1882     红色:6个  1--33之间的整数   不能重复
1883     蓝色:1个  1--16之间的整数
1884     1) 随机产生一注彩票(列表(前六个是红色,最后一个蓝色))
1885     2) 在终端中录入一支彩票
1886     要求:满足彩票的规则.
1887 """
1888 import random
1889 # 10:20 上课
1890 # 1) 随机产生一注彩票(列表(前六个是红色,最后一个蓝色))
1891 list_ticket = []
1892 while len(list_ticket) < 6:
1893     number = random.randint(1, 33)
1894     if number not in list_ticket:
1895         list_ticket.append(number)
1896 
1897 list_ticket.append(random.randint(1, 16))
1898 print(list_ticket)
1899 
1900 # 2) 在终端中录入一支彩票
1901 list_ticket = []
1902 while len(list_ticket) < 6:
1903     number = int(input("请输入第%d个红球号码:" % (len(list_ticket) + 1)))
1904     if number in list_ticket:
1905         print("号码已经存在")
1906     elif number < 1 or number > 33:
1907         print("号码不在范围内")
1908     else:
1909         list_ticket.append(number)
1910 
1911 while len(list_ticket) < 7:
1912     number = int(input("请输入蓝球号码:"))
1913     if number < 1 or number > 16:
1914         print("号码不在范围内")
1915     else:
1916         list_ticket.append(number)
1917 print(list_ticket)
1918 Day06
1919 Review
1920 """
1921      复习
1922     容器
1923         str:存储字符编码值,不可变序列.
1924         list:存储变量,可变序列.         【预留空间】
1925         tuple:存储变量,不可变序列.      【按需加载】
1926         ...
1927         创建
1928             str01 = ""
1929             str02 = str(其他类型对象)
1930 
1931             list01 = []
1932             list02 = list(可迭代对象)
1933 
1934             tuple01 = ()
1935             tuple02 = tuple(可迭代对象)
1936 
1937         查询(索引/切片/循环)
1938             print(str01[-1])
1939             print(list01[-3:])
1940             for itme in tuple02:
1941                 print(itme)
1942             for i in range(len(tuple02)-1,-1,-1):
1943                 print(tuple02[i])
1944 
1945         修改
1946             str01 += "a"
1947             tuple01 += ("a",) # 容器拼接后产生新对象
1948             list01 += ["a"] # 在原有列表基础上增加新元素
1949             list01[0] = 数据
1950             list01[1:3] = 可迭代对象
1951 
1952         删除
1953             list01.remove(元素)
1954             del list01[索引]
1955             del list01[切片]
1956 
1957         通用操作
1958             +  *  ==  !=   in
1959 """
1960 tuple01 = ("e",)
1961 # print(id(tuple01))
1962 tuple01 += ("a",)
1963 # print(id(tuple01))
1964 print(tuple01)
1965 
1966 
1967 list01 = ["e"]
1968 print(id(list01))
1969 # list01.append("a")
1970 list01 += ["a"]
1971 print(id(list01))
1972 
1973 print(list01)
1974 
1975 Demo01
1976 """
1977     字典
1978     练习:exercise01.py
1979          exercise02.py
1980          exercise03.py
1981 """
1982 # 11:20上课
1983 
1984 # 1. 创建
1985 dict01 = {101:"悟空"}
1986 dict02 = {}
1987 
1988 dict03 = dict([("a","b"),("c","d")])
1989 print(dict03)
1990 
1991 #2. 查询(键/循环)
1992 print(dict03["a"])
1993 
1994 # 获取所有key
1995 for key in dict03:
1996     print(key)
1997     print(dict03[key])
1998 
1999 for element in dict03.items():
2000     print(element)# 元组
2001 
2002 # 获取所有记录(键值对)
2003 for k,v in dict03.items():
2004     print(k)
2005     print(v)
2006 
2007 # 获取所有值
2008 for v in dict03.values():
2009     print(v)
2010 
2011 # 注意:如果查找不存在的key,会报错
2012 if "q" in dict03:
2013     print(dict03["q"])
2014 
2015 # 3.增加 dict03[键] = 值
2016 dict03["bj"] = "八戒"
2017 dict03["ds"] = "大圣"
2018 
2019 # 4. 修改
2020 dict03["ds"] = "齐天大圣"
2021 
2022 # 5. 删除
2023 del dict03["bj"]
2024 
2025 print(dict03)
2026 
2027 
2028 Demo02
2029 """
2030     字典推导式
2031     练习:exercise04.py
2032 """
2033 # 需求:range(10)    key:0--9   value: 键的平方
2034 # dict01 = {}
2035 # for item in range(10):
2036 #     dict01[item] = item ** 2
2037 
2038 dict01 = {item: item ** 2 for item in range(10)}
2039 print(dict01)
2040 
2041 # 需求:range(10)    key:0--9   value: 键的平方
2042 #      2 < key < 8
2043 dict01 = {item: item ** 2 for item in range(10) if 2 <item<8}
2044 print(dict01)
2045 Demo03
2046 """
2047     集合
2048     价值:去重复(容器转换)
2049 """
2050 
2051 # 1. 创建
2052 set01 = {"悟空", "八戒", "唐僧"}
2053 print(type(set01))
2054 # set02 = {} # 创建的是字典,不是集合.
2055 set02 = set([23, 78, 5, 78, 67, 78, 78])
2056 set03 = set({"a": "A", "b": "B"})
2057 
2058 # 2. 查询(循环)
2059 for item in set01:
2060     print(item)
2061 
2062 # 3. 添加
2063 set01.add("白龙马")
2064 
2065 # 3. 修改(由于无法定位元素,所以改不了)
2066 # 4. 删除
2067 # set01.remove("悟空2")# 如果不存在则错误
2068 set01.discard("悟空2")# 即使不存在也不会错误
2069 print(set01)
2070 
2071 # 数学运算
2072 set01 = {1, 2, 3}
2073 set02 = {2, 3, 4}
2074 # 交集 (重合)
2075 print(set01 & set02)  # {2, 3}
2076 # 并集
2077 print(set01 | set02)  # {1, 2, 3, 4}
2078 # 对称补集
2079 print(set01 ^ set02)  # {1, 4}
2080 print(set01 - set02)  # {1}
2081 print(set02 - set01)  # {4}
2082 # 子集(set03) 超集(set01)
2083 set03 = {2, 3}
2084 print(set03 < set01)  # true
2085 
2086 Demo04
2087 """
2088     for for
2089     练习:exercise06.py
2090 """
2091 
2092 # 外层循环控制行
2093 for r in range(3):#     0         1       2
2094     #内层循环控制列
2095     for c in range(5):#01234   01234   01234
2096         print("*",end = " ")
2097     print()
2098 Exercise01
2099 """
2100     练习1: 在终端中循环录入商品信息(名称、价格),
2101           如果名称是空字符串,则停止。
2102           -- 将所有商品的名称与价格打印出来(一个商品一行)
2103           -- 如果录入了"游戏机",则单独打印其价格.
2104 """
2105 dict_commodity_info = {}
2106 while True:
2107     name = input("请输入商品名称:")
2108     if name == "":
2109         break
2110     price = float(input("请输入价格:"))
2111     dict_commodity_info[name] = price
2112 for k, v in dict_commodity_info.items():
2113     print("%s商品的价格是%f" % (k, v))
2114 if "游戏机" in dict_commodity_info:
2115     print(dict_commodity_info["游戏机"])
2116 Exercise02
2117 """
2118     练习2: 在终端中循环录入人的信息(名字、年龄、性别、体重...),
2119           如果名称是空字符串,则停止。
2120           -- 将所有人的信息打印出来(一个人一行)
2121           -- 如果录入了"张无忌",则单独打印其信息(名字、年龄、性别、体重...).
2122     数据结构:
2123     {
2124         "张无忌":[26,"男",50],
2125         "赵敏":[24,"女",40]
2126     }
2127 """
2128 
2129 dict_person_info = {}
2130 while True:
2131     name = input("请输入人的名称:")
2132     if name == "":
2133         break
2134     age = int(input("请输入年龄:"))
2135     sex = input("请输入性别:")
2136     weight = float(input("请输入体重:"))
2137     dict_person_info[name] = [age, sex, weight]
2138 
2139 for k_name, v_info in dict_person_info.items():
2140     print("%s的年龄是%d,性别是%s,体重是%f" % (k_name, v_info[0], v_info[1], v_info[2]))
2141 
2142 if "张无忌" in dict_person_info:
2143     list_info = dict_person_info["张无忌"]
2144     print("张无忌的年龄是%d,性别是%s,体重是%f" % (list_info[0], list_info[1], list_info[2]))
2145 Exercise03
2146 """
2147     练习2: 在终端中循环录入人的信息(名字、年龄、性别、体重...),
2148       如果名称是空字符串,则停止。
2149       -- 将所有人的信息打印出来(一个人一行)
2150       -- 打印最后一个人的信息(名字、年龄、性别、体重...).
2151     数据结构:
2152     [
2153         {"name":"张无忌","age":26,"sex":"男","weight":50},
2154         {"name":"赵敏","age":24,"sex":"女","weight":40},
2155     ]
2156 
2157     总结:存储多个数据,使用什么数据结构?
2158           根据需求,结合优缺点,综合考虑(两害相权取其轻)
2159 
2160         列表
2161             优点:获取数据更为灵活(索引/切片)
2162             缺点:遍历元素获取数据,速度慢.
2163 
2164         字典:
2165             优点:根据key获取值,速度快.
2166             缺点:获取数据不灵活(键)
2167                  因为散列更占内存
2168 """
2169 
2170 list_person_info = []
2171 while True:
2172     name = input("请输入人的名称:")
2173     if name == "":
2174         break
2175     age = int(input("请输入年龄:"))
2176     sex = input("请输入性别:")
2177     weight = float(input("请输入体重:"))
2178     dict_info = {"name": name, "age": age, "sex": sex, "weight": weight}
2179     list_person_info.append(dict_info)
2180 
2181 for dict_item in list_person_info:
2182     print("%s的年龄是%d,性别是%s,体重是%f" % (dict_item["name"], dict_item["age"], dict_item["sex"], dict_item["weight"]))
2183 
2184 dict_person = list_person_info[-1]
2185 print("%s的年龄是%d,性别是%s,体重是%f" % (dict_person["name"], dict_person["age"], dict_person["sex"], dict_person["weight"]))
2186 Exercise04
2187 # 练习1:["无忌","张翠山","张三丰"]-->{"无忌":2,"张翠山":3,"张三丰":3}
2188 #       key: 列表元素, value: key的长度
2189 list_names = ["无忌", "张翠山", "张三丰"]
2190 dict_names = {item: len(item) for item in list_names}
2191 print(dict_names)
2192 
2193 # 练习2:姓名列表: ["无忌","赵敏","周芷若"]
2194 #      房间号:[101,102,103]
2195 #      将两个列表合并为字典,key:姓名列表元素,值:房间列表元素.
2196 
2197 list_names = ["无忌", "赵敏", "周芷若"]
2198 list_rooms = [101, 101, 103]
2199 dict_info = {list_names[i]: list_rooms[i] for i in range(len(list_names))}
2200 print(dict_info)
2201 
2202 # 需求:根据房间号查找人
2203 #      根据值找键
2204 
2205 # 方法1:遍历字典所有记录,判断值.
2206 # 方法2:反转key 与 value
2207 # dict_info = {v:k for k,v in dict_info.items() }
2208 # print(dict_info)
2209 
2210 # 注意:反转后,因为键不能相同,所以可能导致丢失数据。
2211 list_info = [(v,k) for k,v in dict_info.items()]
2212 print(list_info)
2213 # 15:37
2214 
2215 Exercise05
2216 """
2217     经理:"曹操","刘备","孙权"
2218     技术员:"曹操","刘备","张飞","关羽"
2219 
2220     计算:
2221     1. 是经理也是技术员的都有谁?
2222     2. 是经理也不是技术员的都有谁?
2223     3. 不是经理也是技术员的都有谁?
2224     4. 张飞是不是经理?
2225     5. 身兼一职的都有谁?
2226     6. 公司总共有几个人?
2227 """
2228 # 字典 + 集合
2229 dict_person = {
2230     "经理": {"曹操", "刘备", "孙权"},
2231     "技术员": {"曹操", "刘备", "张飞", "关羽"}
2232 }
2233 # 1.是经理也是技术员的都有谁?  交集
2234 print(dict_person["经理"] & dict_person["技术员"])
2235 # 16:50 上课
2236 # 2.是经理也不是技术员的都有谁? 补集
2237 print(dict_person["经理"] - dict_person["技术员"])
2238 
2239 # 3.不是经理也是技术员的都有谁? 补集
2240 print(dict_person["技术员"] - dict_person["经理"])
2241 
2242 # 4.张飞是不是经理?
2243 print("张飞" in dict_person["经理"])
2244 
2245 # 5.身兼一职的都有谁?
2246 print(dict_person["经理"] ^ dict_person["技术员"])
2247 
2248 # 6.公司总共有几个人?  并集
2249 print(len(dict_person["经理"] | dict_person["技术员"]))
2250 
2251 Exercise06
2252 """
2253     打印图形:
2254     * * * *
2255     # # # #
2256     * * * *
2257     # # # #
2258     * * * *
2259 """
2260 for r in range(5):
2261     for c in range(4):
2262         if r % 2 == 0:
2263             print("*", end=" ")
2264         else:
2265             print("#", end=" ")
2266     print()  # 换行
2267 Exercise07
2268 list01 = [
2269     [1, 2, 3, 4],
2270     [4, 5, 6, 7],
2271     [8, 8, 10, 11],
2272 ]
2273 
2274 # 打印二维列表第二行(一个数据一行)练习1:
2275 # list01[1][0]   list01[1][1]  list01[1][2]  list01[1][3]
2276 for c in range(len(list01[1])):  # 0 1 2 3
2277     print(list01[1][c])
2278 
2279 # 练习2:打印二维列表第三列(一个数据一行)
2280 # list01[0][2]
2281 # list01[1][2]
2282 # list01[2][2]
2283 for r in range(len(list01)):  # 0 1 2
2284     print(list01[r][2])
2285 
2286 
2287 # 练习3:打印二维列表(行列)
2288 # # list01[0][0]   list01[0][1]   list01[0][2]   list01[0][3]
2289 # for c in range(4):#0123
2290 #     print(list01[0][c],end = " ")
2291 
2292 # # list01[1][0]   list01[1][1]   list01[1][2]   list01[1][3]
2293 # for c in range(4):#0123
2294 #     print(list01[1][c],end = " ")
2295 for r in range(len(list01)):  # 0 1 2
2296     for c in range(len(list01[r])):  # 0123
2297         print(list01[r][c], end="\t")
2298     print()
2299 Exercise08
2300 # 练习:矩阵转置
2301 # 将list01中的每列,存储到list02中的每行(列表)。
2302 list01 = [
2303     [1, 2, 3, 4],
2304     [4, 5, 6, 7],
2305     [8, 8, 10, 11],
2306 ]
2307 
2308 list02 = []
2309 
2310 
2311 #list01[0][0]
2312 #list01[1][0]
2313 #list01[2][0]
2314 
2315 for c in range(4):
2316     line = []
2317     for r in range(3):
2318         line.append(list01[r][c])
2319     list02.append(line)
2320 
2321 print(list02)
2322 day06 作业
2323 1. 三合一
2324 2. 当天练习独立完成
2325 3. 定义数据结构,存储以下数据。
2326     (1) 多个人的多个爱好
2327         qtx:编码,看书,跑步
2328         悟空:刷抖音,飞翔
2329         八戒:美食,美女,睡觉
2330     (2) 多个城市的多个景区与美食
2331         "北京":
2332             "景区":"故宫","天安门","长城"
2333             "美食":"烤鸭","豆汁"
2334          "四川":
2335             "景区":"九寨沟","峨眉山"
2336             "美食":"火锅","老妈兔头"
2337         -- 打印北京美食(一行一个)
2338         -- 打印所有城市(一行一个)
2339         -- 打印所有城市的景区(一行一个)
2340 
2341 
2342 4. (扩展)对列表进行升序排序[3,8,6,5,2]
2343     思想:取元素(不要最后一个)
2344         作比较(与后面元素进行比较)
2345         如果发现后面元素更小,则与取出的元素进行交换.
2346 
2347 5. 看书:
2348     程序员的数学第5章—排列组合
2349 Homework01
2350 """
2351 3. 定义数据结构,存储以下数据。
2352     (1) 多个人的多个爱好
2353         qtx:编码,看书,跑步
2354         悟空:刷抖音,飞翔
2355         八戒:美食,美女,睡觉
2356     (2) 多个城市的多个景区与美食
2357         "北京":
2358             "景区":"故宫","天安门","长城"
2359             "美食":"烤鸭","豆汁"
2360          "四川":
2361             "景区":"九寨沟","峨眉山"
2362             "美食":"火锅","老妈兔头"
2363         -- 打印北京美食(一行一个)
2364         -- 打印所有城市(一行一个)
2365         -- 打印所有城市的景区(一行一个)
2366 
2367 """
2368 
2369 # (1) 多个人的多个爱好
2370 dict_hobbys = {
2371     "qtx": ["编码", "看书", "跑步"],
2372     "悟空": ["刷抖音", "飞翔"],
2373     "八戒": ["美食", "美女", "睡觉"]
2374 }
2375 (2)多个城市的多个景区与美食
2376 dict_info = {
2377     "北京":
2378         {
2379             "景区": ["故宫", "天安门", "长城"],
2380             "美食": ["烤鸭", "豆汁"]
2381         },
2382     "四川":
2383         {
2384             "景区": ["九寨沟", "峨眉山"],
2385             "美食": ["火锅", "老妈兔头"]
2386         }
2387 }
2388 # -- 打印所有城市(一行一个)
2389 for key in dict_info:
2390     print(key)
2391 
2392 # -- 打印北京美食(一行一个)
2393 for item in dict_info["北京"]["美食"]:
2394     print(item)
2395 
2396 # -- 打印所有城市的景区(一行一个)
2397 for city in dict_info:
2398     for item in dict_info[city]["景区"]:
2399         print(item)
2400 Homework02
2401 """
2402 4. (扩展)对列表进行升序排序[3,8,6,5,2]
2403     思想:取元素(不要最后一个)
2404         作比较(与后面元素进行比较)
2405         如果发现后面元素更小,则与取出的元素进行交换.
2406     价值:列表中所有元素俩俩比较
2407 """
2408 list01 = [3, 8, 6, 5, 2]
2409 
2410 # 取元素: 第一个
2411 # 作比较: 从第二个 ... 最后一个
2412 # for c in range(1,len(list01)):
2413 #     list01[0]   list01[c]
2414 # 取元素: 第二个
2415 # 作比较: 从第三个 ... 最后一个
2416 # for c in range(2,len(list01)):
2417 #     list01[1]   list01[c]
2418 # 取元素: 第三个
2419 # 作比较: 从第四个 ... 最后一个
2420 # for c in range(3,len(list01)):
2421 #     list01[2]   list01[c]
2422 
2423 # 结论:
2424 # 取元素
2425 # for r in range(len(list01)-1):
2426 #     作比较
2427 #     for c in range(r+1, len(list01)):
2428 #         list01[r] list01[c]
2429 
2430 for r in range(len(list01) - 1):
2431     for c in range(r + 1, len(list01)):
2432         if list01[r] > list01[c]:
2433             list01[r], list01[c] = list01[c], list01[r]
2434 
2435 print(list01)
2436 # 10:10 上课

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!