day04 python学习笔记

时间:2023-02-25 18:22:26

上节课回顾

  • 数字类型

    • 整形

      x = int(10)
      
      pow(x, 10)  # 1024
    • 浮点型

      y = float(10) #10.0
      print(round(0.1 + 0.2, 1) == 0.3)   #true
    • 运算符

      + - * / // % **
  • 字符串类型

    name = str(10)  # '10'
    name = 'nick'
    name = "nick"
    name = "nick's"
    name = """nick's name is "nick""""
    • 内置方法

      name.split()  # 指定字符串分割
      name.startswith('n')    # 从开头匹配子串   返回逻辑型结果 true or flase
      name.endswith('k')      # 从末尾匹配子串   返回逻辑型结果 true or flase
      print(name.center(50, '*'))     # 居中填充字符
    • 转义符

      s = "nick's name is \"nick\""
      s = '\t'print(s)
      s = '\n'print(s)
      s = r'\t\n'print(s)

分支结构

  • 单分支

    # if一般用于判断/选择的场景
    # 90以上优秀
    score = 95
    if score > 90:
        print('优秀')# 双分支
  • 双分支

    # if...else
    # 90以上优秀,90一下良好
     score = 95
     if score > 90:
         print('优秀')
     else:
         print('良好')
  • 多分支

    # if...elif...elif...else
    # if...if...if...if
    # 90以上优秀,90-70良好,70以下不及格
    score = 95
    if score > 90:
        print('优秀')
    elif score > 70:
        print('良好')
    else:
        print('及格')
        score = 95
    
    if score > 90:
        print('优秀')
    if score > 70 and score < 90: # 同时满足
        print('良好')
    if score < 60:
        print('及格')

三元表达式

# 结果一  条件  结果二
print('优秀')  if score > 90 else print('良好')  # 单分支没有,多分支也没有

逻辑运算符

# > >= < <= == !=
# and 两者都必须成立
# or 其中一个成立即可
# not 非

异常处理

x = 10
try:    
    y = int(input('数字:'))  # 10
    y += 10 # y = y + 10
except Exception as e:
    print(f'error: \033[1;35m {e} \033[0m!')
finally:  # 无论包不报错,都会执行finally下面的代码
    print(1)

循环

for循环

# 举例
for i in range(100):        # 循环100次
     print(i)

range(5)    # [0,1,2,3,4]

range(1,3)  # [1,2]

range(1,10,2) # [1,3,5,7,9]

for i in 'nick':  # 也可以循环输出字符串
    print(i)

while循环

count = 0
while count < 100:
    count += 1    
    print(count)

while...else

count = 0
while count < 100:
    count += 1
    print(count)
else:  #正常跳出循环的时候会执行,异常中断循环不执行    
    print('打我')

continue + break

##演示continue语法##
count = 0
while count < 100:
    count += 1
    if count == 50:
        continue  # 不执行下面代码,直接开始下次循环
    print(count)
##演示break语法##
count = 0
while count < 100:
    count += 1    
    if count == 50:
        break  # 跳出并终止循环
    print(count)

random模块

  • 产生随机数

    # 产生随机整数 有a和b两个参数作为变化范围
    print(random.randint(1,10))  # 从1到10
  • 根据随机数种子产生随机小数

    # 设置固定随机种子后 就是假随机了,第一次结果永远固定
    random.seed(10)      # 设置随机数种子
    print(random.random())  # 取(0,1)之间的小数
    
    # 如果不自定义种子,则种子按照当前的时间来
    print(random.random())  # 取(0,1)之间的小数
  • choice函数

    print(random.choice([1,1,2,3,4]))    # 通过choice函数选择列表中的一个数
  • shuffle函数

    lt = [1,2,3,4]
    random.shuffle(lt)    # 通过shuffle函数打乱序列
    print(lt)

使用时间模拟random随机数

import time
time_ = time.time()
print(str(time_).split(".")[-1][-1])    # 使用切割时间尾数的最后一位做随机数

圆周率计算

  • 圆周率近似计算公式

    pi = 0
    k = 0
    while True:       # 使用公式取近似计算
      pi +=  (1/(16**k))* \
             (4/(8*k+1) - 2/(8*k+4) - 1/(8*k+5) - 1/(8*k+6))
      print(pi)
      k += 1
  • 蒙特卡洛方法求圆周率

    import random
    count = 0
    for i in range(100000):
      x, y = random.random(), random.random() // 使用随机数方式撒点
        dist = pow(x ** 2 + y ** 2, 0.5)      // 重要公式
        if dist < 1:
          count += 1
    print(count / 100000 * 4)

作业

  1. 使用while循环输出1 2 3 4 5 6 8 9

  2. 求1-100的所有数的和

  3. 输出 1-100 内的所有奇数

  4. 输出 1-100 内的所有偶数

  5. 求1-2+3-4+5 ... 99的所有数的和

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

  7. 猜年龄游戏
    要求: 允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出

  8. 猜年龄游戏升级版(选做)
    要求: 允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序,如何猜对了,就直接退出

  9. for循环打印99乘法表

  10. for循环打印金字塔

# 题目1:使用while循环输出1 2 3 4 5 6     8 9 
i=0
while i<10:
    i += 1
    if(i==7):
        continue
    print(i)
# 题目2:求1-100的所有数的和
s=0
for i in range(1,101):
    s += i
print(s)
# 题目3:输出 1-100 内的所有奇数
for i in range(1,101):
    if(i%2==1):
        print(i)
# 题目4: 输出 1-100 内的所有偶数
for i in range(1,101):
    if(i%2==0):
        print(i)
# 题目5:求1-2+3-4+5 ... 99的所有数的和
s=1
for i in range(2,100):
    if (i % 2 == 0):
        s -= i 
    if (i % 2 == 1):
        s += i
print(s)
# 题目6:用户登陆(三次机会重试)
for i in range(3):
    id = input("请输入账号:")
    pwd = input("请输入密码:")
    if id == "xucheng" and pwd == "123":
        print("登陆成功")
# 题目7:猜年龄游戏
for i in range(3):
    age = input("请输入您猜的年龄:")
    if int(age) == 18:
        print("猜对了")
        break
# 题目8:猜年龄游戏升级版(选做)
i = 0
while i!=3 :
    age = input("请输入您猜的年龄:")
    if int(age) == 18:
        print("猜对了")
        break
    i += 1  # 计数器就加1

    if i == 3:  # 次数
        ret = input("是否还想玩(Y/N):")
        if ret == "Y" or ret =="y":
            i = 0;
# 题目9:for循环打印99乘法表
for i in range(1,10):
    for j in range(1, i+1):
        print(f"{i}*{j}={i*j}",end=" ")
    print()
# 题目10:for循环打印金字塔
for i in range(1,6):
    print(f"{'*'*(i+i-1): ^9}")