学习Python第四天

课后作业

  • 第一题
import random#导入包
answer = random.randrange(1, 101)#使用函数导入一个随机数
count = 0#定义一个初始变量
while True:
    user_answer = int(input('你猜是多少'))#输入你要猜的数
    count += 1
    if answer > user_answer:#分枝
        print('稍微大一点')
        pass
    elif answer < user_answer:分枝
        print('稍微小一点')
    else:
        print(f'恭喜你猜对了')#猜对了就用break终止循环
        break
    if count == 7:
        print('智商余额不足')
  • 第二题
#定义变量
max_value = 0
total, count = 0, 0
min_value = 100
while count < 10:
    a = int(input('请输入一个整数'))
    if 0 < a <= 100:# 规范输入范围,在范围内才算输入次数
        count += 1
        total += a
        if a >= max_value:#输入的只大于最大值,则将输入的值赋值给最大值
            max_value = a
        if a <= min_value:# 输入的只小于最小值,则将输入的值赋值给最小值
            min_value = a
    else:#不在范围内重新输入,不算次数
        print('无效输入')
avg = total / 10
print(f'最大值为{max_value},平均数为{avg}, 最小值为{min_value}')

课堂练习

  • 摇一颗骰子,摇60000次,计算各点数出现的次数
  • 摇两颗骰子,摇60000次,计算两个骰子点数和出现的次数
    题目不难,主要是复杂,流程太多
    骰子数越多越要命
import random
l1 = l2 = l3 = l4 = l5 = l6 = 0
for _ in range(1, 60001):
    a1 = random.randrange(1, 7)
    if a == 1:
        l1 += 1
    elif a == 2:
        l2 += 1
    elif a == 3:
        l3 += 1
    elif a == 4:
        l4 += 1
    elif a == 5:
        l5 += 1
    elif a == 6:
        l6 += 1
print(f'输出1点{l1}次, 输出2点{l2}次, 输出3点{l3}次, 输出4点{l4}次, 输出5点{l5}次, 输出6点{l6}次')



import random
l1 = l2 = l3 = l4 = l5 = l6 = l7 = l8 = l9 = l10 = l11 = l12 = 0
for _ in range(1, 60001):
    a1 = random.randrange(1, 7)
    a2 = random.randrange(1, 7)
    a = a1 + a2
    if a == 2:
        l1 += 1
    elif a == 3:
        l2 += 1
    elif a == 4:
        l3 += 1
    elif a == 5:
        l4 += 1
    elif a == 6:
        l5 += 1
    elif a == 7:
        l6 += 1
    elif a == 8:
        l7 += 1
    elif a == 9:
        l8 += 1
    elif a == 10:
        l9 += 1
    elif a == 11:
        l10 += 1
    elif a == 12:
        l11 += 1
    elif a == 12:
        l12 += 1
print(f'输出2点{l1}次, 输出3点{l2}次, 输出4点{l3}次, 输出5点{l4}次, 输出7点{l5}次, 输出7点{l6}次,输出8点{l7}次, 输出9点{l8}次, 输出10点{l9}次, 输出11点{l10}次, 输出12点{l11}次')

容器数据类型

用一个变量可以保存多个数据

  • 列表---------->list
  • 元组---------->tuple
  • 集合---------->set
  • 字典---------->dict
    先选学
nums = [10, 100, 1000]# 随便定义一个列表
# 输出类型
print(type(nums))
student_rules = ['热爱祖国', '好好学习', '尊敬师长', '拥护中国共产党']
# 列表里面可以放各种数据类型,可以交叉放
print(nums, student_rules)
# 追加,在列表末尾追加元素
nums.append(10000)
# 插入,在列表指定位置插入元素
nums.insert(0, 1)
# 删除最末尾一个元素
nums.pop()

列表遍历

把每一个元素依次取出来

nums = [1, 23, 34, 45, 73, 99]
print(nums[2])#从零开始第二个元素
print(nums[-3])#从末尾往前数第三个
nums.append(100)
nums.append(18)#末尾添加元素,随便加


nums = [1, 23, 34, 45, 73, 99]
a = len(nums)# 求出列表长度,,,len函数


nums = [1, 23, 34, 45, 73, 99]
for i in range(len(nums)):#按顺序遍历列表, 
    print(i, nums[i])# 输出带上顺序

    
print('-'*20)
# 高级的分割线,乘以多少得多少    
    
for i, num in enumerate(nums):# 这是一种神奇的遍历函数,同时带出数据和元素
    # 在直接遍历列表的同时又可以取到列表的长度,第一个变量表示长度
    print(i, num)
print('-'*20)
for i, num in enumerate(nums):
    print(num)

整理刚才那个要命的课堂练习

import random

fs = [0] * 6
# 重复运算,一个0变六个零
print(fs)
for _ in range(60000):
    # 不需要用到的变量用下划线显得比较专业高级
    face = random.randrange(1, 7)
    # 在范围内选择随机数
    fs[face - 1] += 1
    # 列表都从0开始数
for i in range(len(fs)):
    print(f'摇到{i + 1}点的次数为{fs[i]}')
for i, value in enumerate(fs):
    print(f'摇到{i + 1}点的次数为{value}')

优化昨天的作业

nums = []
# 定义一个空列表
total = 0
# 搞出一个变量一会用,不知道提前搞的,先搞下面代码,用到再加也行
for _ in range(10):
    temp = int(input('请输入一个数'))
    nums.append(temp)
    # 将输入的数字加入到列表
mean_value = sum(nums) / len(nums)
# 使用求和函数求和,在除以列表长度
for num in nums:
    # 遍历列表
    total = (num - mean_value) ** 2
    # 为方差做准备
    pass
# 方差----->variance
var_value = total // (len(nums) - 1)
# 求出方差
# 标准差------> standed deviation
std_value = var_value ** 0.5
max_value, min_value = max(nums), min(nums)
print(f'平均数为{mean_value}, 方差为{var_value}, 标准差为{std_value}, 最大值为{max_value}, 最小值为{min_value}')

本周总结

从写第一个代码到现在四天时间,总结一周获益匪浅

  • 了解变量的含义,就行了一些简单的数据运算
  • 认识数据类型
  • input的了解及运用,今后也会经常用到,短短四天烂熟于心
  • 二进制(bin)、八进制(oct)、十进制、十六进制(hex),相互转换
  • 格式化输出:例如print(’%.1f + %.1f = %.1f’%(a1, b1, a1 + b1))、(print(f---------{变量}--------{变量}—))
    print(’-------{}-----{}.fromat(变量, 变量)’)
  • 布尔型
    非空字符串转换成布尔类型都是True
    空字符串(不是空格)转成布尔类型对应的值是False
    c = bool(input('c = '))
    非0数值对应布尔值都是True
    0对应布尔值为False
    d = bool()
  • Python中的运算符
    赋值运算符: 右边的复制给左边、
    符合运算符: += -= *= /=…

关系运算符(比较运算符): < > >= <= == !=: 产生布尔值(True/False)

逻辑运算符:把多个布尔值处理成一个布尔值 (多个布尔值到组合) and(与) or(或) not(非)

  • 分支结构的学习
    if条件:
    elif条件:
    elif条件:
    elif条件:
    elif条件:
    else:
  • 循环结构
    for i in range(0, n)n次循环
    for i in range(m, n)m-n次循环
  • while循环
    while 条件

注意确定终止条件以防形成死循环

  • 用一个变量可以保存多个数据
    列表---------->list
    元组---------->tuple
    集合---------->set
    字典---------->dict
    今天就学了列表,详情往上看,我也就偷偷懒了,上面更加详细
补充

之所以不设置重点选项是因为都很重要, 想要完整熟悉只有不断的多熟悉代码,认真看代码,理解代码形成的作用和原理,然后尝试自己写代码,从简单的开始,自主完成,多多练习,将知识点用上去学起来会容易很多

一开始都会很不知所措,不知道如何下手,慢慢的熟悉,练习多了也就慢慢轻车熟路了