利用 Python 进行数据分析实验(三)

一、实验目的

使用Python解决简单问题

二、实验要求

自主编写并运行代码,按照模板要求撰写实验报告

三、实验步骤

本次实验共有4题:

  1. 自行给定一个从小到大排好序的数组,输入一个数并将其插入到原始数组中,新的数组还是满足从小到大的排列顺序
  2. 随机生成两个4*4的矩阵X和Y,要求用for循环取出X,Y矩阵对应位置的值,将其相减后放入新的矩阵Z中
  3. 随机输入一个矩阵,求它的逆矩阵并验证猜数字游戏,随机生成一个数x(1<x<10000),玩家每次输入一个数y,如果y大于或小于x,则给出相应提示,如y=x则表示数字猜对了。
    四、实验结果

T1


"""
自行给定一个从小到大排好序的数组
输入一个数并将其插入到原始数组中
新的数组还是满足从小到大的排列顺序
"""
import random

length = random.randint(5, 10)  # 生成数组的长度
arr = []
for i in range(0, length):
    arr.append(random.randint(-100, 100))

arr = sorted(arr)
print('原数组如下:' + str(arr))

print("请输入一个数:")
num = int(input())
arr.append(num)
arr = sorted(arr)
print('重新排序后:' + str(arr))

T2

"""
随机生成两个4*4的矩阵X和Y
要求用for循环取出X,Y矩阵对应位置的值
将其相减后放入新的矩阵Z中
"""
import random

import numpy as np

x = np.zeros(shape=(4, 4))
y = np.zeros(shape=(4, 4))

for i in range(0, 4):
    for j in range(0, 4):
        x[i][j] = random.randint(-100, 100)
        y[i][j] = random.randint(-100, 100)

print('随机数组x:')
print(x)
print('随机数组y:')
print(y)

# 等价于矩阵相减,此处使用for循环
z = np.zeros(shape=(4, 4))
for i in range(0, 4):
    for j in range(0, 4):
        z[i][j] = x[i][j] - y[i][j]
print('x - y = ')
print(z)

T3

按照实验要求,本题测试应该使用随机的矩阵(code 3实现)。但是逆矩阵各数值可能是无理数,且由于浮点数的精度问题,导致求出的逆矩阵各数值只是“近似”,进而导致验证出现问题,求解正确的逆矩阵被判定为求解错误.
故使使用一个相对特殊的情况进行求解(code 3-1实现)

"""
Code 3
随机输入一个矩阵,求它的逆矩阵并验证
遇到精度问题
"""
import random

import numpy as np

line = random.randint(2, 10)
row = line  # 方阵才有逆
x = np.random.randint(-100, 100, (line, row))

"""
按照实验要求应该使用由随机数生成的矩阵
但是由于浮点数的精度问题,且逆矩阵各数值可能是无理数
所以导致求出的逆矩阵各数值只是“近似”
进而导致验证出现问题
"""
print('原矩阵:')
print(x)

inv = np.matrix(np.linalg.inv(x))
print('原矩阵的逆:')
print(inv)

res = np.matrix(x) * inv
print(res)

"""
Code 3-1
随机输入一个矩阵,求它的逆矩阵并验证
"""
import numpy as np

print('请输入方阵大小:')
size = int(input())
s = ''
irr = 0

for i in range(0, int(size)):
    s = s + input()

mat = np.zeros(shape=(size, size))

for i in range(0, len(s)):
    mat[int(irr / size)][irr % size] = s[irr]
    irr = irr + 1

inv = np.matrix(np.linalg.inv(mat))

res = mat * inv
print(inv)
print(res)

T4

"""
猜数字游戏,随机生成一个数x(1<x<10000),玩家每次输入一个数y
如果y大于或小于x,则给出相应提示,如y=x则表示数字猜对了。
"""
import random

x = random.randint(1, 10000)


def check(flag):
    if int(flag) > int(x):
        bigger()
        return False
    elif int(flag) < int(x):
        smaller()
        return False
    else:
        print('Congratulations!')
        return True


def bigger():
    print('too big')


def smaller():
    print('too small')


while True:
    y = input()
    if check(y):
        exit(0)

五、实验体会

查询资料,显示Python中使用双精度浮点数来存储小数,8字节64位存储空间分配了52位来存储浮点数的有效数字,11位存储指数,1位存储正负号(本质上是二进制表示的科学计数法),舍入(round)的规则为“0 舍 1 入”。
如果需要更高精度,可以使用类型Decimal并使用decimal.Decimal() 来存储精确的数字。或者使用Fraction模块来表示分数进行运算。

相关推荐

  1. 利用 Python 进行数据分析实验

    2023-12-08 15:08:05       29 阅读
  2. 利用 Python 进行数据分析实验(二)

    2023-12-08 15:08:05       37 阅读
  3. 利用 Python进行数据分析实验(一)

    2023-12-08 15:08:05       32 阅读
  4. 利用 Python 进行数据分析实验(七)

    2023-12-08 15:08:05       40 阅读
  5. 利用 Python 进行数据分析实验(四)

    2023-12-08 15:08:05       27 阅读
  6. 利用 Python 进行数据分析实验(五)

    2023-12-08 15:08:05       33 阅读
  7. 利用 Python 进行数据分析实验(六)

    2023-12-08 15:08:05       34 阅读
  8. 利用Pandas进行数据清洗与过滤:Python实战指南

    2023-12-08 15:08:05       9 阅读
  9. 如何利用Python处理和分析实时物联网数据

    2023-12-08 15:08:05       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 15:08:05       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 15:08:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 15:08:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 15:08:05       18 阅读

热门阅读

  1. 利用 Python 进行数据分析实验(五)

    2023-12-08 15:08:05       33 阅读
  2. docker网络

    2023-12-08 15:08:05       28 阅读
  3. VBA 数组写入ACCESS

    2023-12-08 15:08:05       37 阅读
  4. 数据结构的存储方式

    2023-12-08 15:08:05       34 阅读
  5. Kotlin(十三) 延迟初始化和密封类

    2023-12-08 15:08:05       34 阅读
  6. rpc服务、微服务架构、分布式应用是什么

    2023-12-08 15:08:05       36 阅读
  7. 人工智能助力医疗:科技护航健康未来

    2023-12-08 15:08:05       37 阅读
  8. MySQL报错:sql_mode=only_full_group_by 解决方法含举例

    2023-12-08 15:08:05       34 阅读
  9. 设计模式基础——工厂模式剖析(2/2)

    2023-12-08 15:08:05       27 阅读
  10. leetcode:468. 验证IP地址

    2023-12-08 15:08:05       35 阅读