python实验(超详细)

目录

      • 实验一 python编程基础
      • 实验二 python序列、字符串处理
      • 实验三 函数及python类的定义与使用
      • 实验四 python综合应用

实验一 python编程基础

  1. 在交互式环境中打印“Hello world”字符串。记录操作过程。

  1. 创建脚本helloworld.py,在命令符提示环境中执行程序,打印“Hello world”字符串。记录操作过程。

  1. 使用pip命令查看当前已安装的所有模块
pip list
  1. 编写一个猜年龄的小游戏,如果输入的年龄正确输出“Yes,it is right!”否则输出“No, you are wrong!”
year = 19
guess_age = int(input("请输入你猜的年龄:"))
if year == guess_age:
    print("Yes,it is right!")
else:
    print("No,you are wrong!")
  1. 编写程序,输入<人名 1>和<人名 2>,在屏幕上显示如下的新年贺卡:

【源程序】
###################################
<人名 1> 新年贺卡 <人名 2>
python0101.py
2015
###################################

name1 = input("Please enter a value for name1:")
name2 = input("Please enter a value for name2:")
print(f'''
###################################
# {name1} 新年贺卡 {name2}
# python0101.py
# 2015
###################################
''')
  1. 编写程序,输入球的半径,计算球的表面积和体积,半径为实数,用π,结果输出为浮点数,共10位其中2位有效数字。
import math
 
r = float(input("Please enter a valur for radius:"))
surface = '%.10f' % round(4 * math.pi * r * r, 2)
volume = '%.10f' % round(4 / 3 * math.pi * (r ** 3), 2)
print(f"The surface area of sphere is {surface}")
print(f'The volume of sphere if {volume}')
  1. 用id()函数输出变量地址的示例程序
str1 = "这是一个变量"
print("变量str1的值是:" + str1)
print("变量str1的地址是:%d" % (id(str1)))
str2 = str1
print("变量str2的值是:" + str2)
print("变量str2的地址是:%d" % (id(str2)))
str1 = "这是另一个变量"
print("变量str1的值是:" + str1)
print("变量str1的地址是:%d" % (id(str1)))
print("变量str2的值是:" + str2)
print("变量str2的地址是:%d" % (id(str2)))
  1. 参照下面的步骤练习使用运算符
x = 3
x += 3
print(x)
x -= 3
print(x)
x *= 3
print(x)
x /= 3
print(x)

实验二 python序列、字符串处理

  1. 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
list = [1, 2, 3, 4]
 
count = 0
 
for i in list:
    for j in list:
        for k in list:
            if (i != j) and (i != k) and (j != k):
                count += 1
                print(f"{i}{j}{k}", end=" ")
 
print("")
print(f"The count is {count}")
  1. 输入某年某月某日,判断这一天是这一年的第几天?
year = int(input('year: '))
mouth = int(input('month:'))
day = int(input('day:'))
mouths = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
 
if year % 400 == 0 or year % 4 == 0:
    mouths[3] += 1
 
if 0 < mouth <= 12:
    days = 0
 
    for item in range(mouth):
        sum = mouths[item]
        days += sum
 
    result = days + day
    print(f'今天是今年的第{result}天')
else:
    print('输入日期超出范围')
  1. 输入三个整数x,y,z,请把这三个数由小到大输出。
list = [int(input("Please input a value for x:")), int(input("Please input a value for y:")),
         int(input("Please input a value for z:"))]
 
print(sorted(list))
  1. 输出9*9乘法口诀表
print('\n'.join([' '.join([f"{j}x{i}={i * j}" for j in range(1, i + 1)]) for i in range(1, 10)]))
  1. 判断101-200之间有多少个素数,并输出所有素数
result = []
 
for i in range(101, 200):
    for j in range(2, i - 1):
        if i % j == 0:
            break
    else:
        result.append(i)
 
print(f"素数一共有{len(result)}个")
print(result)
  1. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
str = input("请输入一行字符:")
 
count_alpha = 0
count_space = 0
count_digit = 0
count_other = 0
 
for i in str:
    if i.isalpha():
        count_alpha += 1
    if i.isspace():
        count_space += 1
    if i.isdigit():
        count_digit += 1
    else:
        count_other += 1
 
print(f"{str}中的英文字母个数为:{count_alpha}")
print(f"{str}中的空格个数为:{count_space}")
print(f"{str}中的数字个数为:{count_digit}")
print(f"{str}中的其他字符个数为:{count_other}")
  1. 求1!+2!+3!+…+20!的和
result = []
 
for i in range(1, 21):
    num = 1
    for j in range(1, i + 1):
        num *= j
    result.append(num)
 
print(sum(result))
  1. 设计一个字典,并编写程序,用户输入内容作为键,然后输出字典中对应的值,如果用户输入的键不存在,则输出“您输入的键不存在!”
d = {'wzr': '1', 'Lebron': 2, 'is': 3, 'GOAT': 4}
n = input("请输入键:")
print(d.get(n, "您输入的键不存在!"))
  1. 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。
from random import choices
 
data = choices(range(100), k=20)
print(data)

data[:10] = sorted(data[:10])
data[10:] = sorted(data[10:], reverse=True)
print(data)
  1. 字符串 a = “aAsmr3idd4bgs7Dlsf9eAF”

a.请将 a 字符串的数字取出,并输出成一个新的字符串。
b.请统计 a 字符串出现的每个字母的出现次数(忽略大小写,a 与 A 是同一个字母),并输出成一个字典。 例 {‘a’:3,‘b’:1}
c.请去除 a 字符串多次出现的字母,仅留最先出现的一个,大小写不敏感。例
‘aAsmr3idd4bgs7Dlsf9eAF’,经过去除后,输出 ‘asmr3id4bg7lf9e’
d.按 a 字符串中字符出现频率从高到低输出到列表,如果次数相同则按字母顺序排列。

a = "aAsmr3idd4bgs7Dlsf9eAF"
 
str_digit = ''
 
for i in a:
    if i.isdigit():
        str_digit += i
 
print(str_digit)
 
lower_a = a.lower()
c = {key: lower_a.count(key) for key in lower_a if key.isalpha()}
print(c)
 
result = []
for i in a:
    if i not in result:
        if ('A' <= i <= 'Z') and (i.lower() not in result):
            result.append(i)
        elif ('a' <= i <= 'z') and (i.upper() not in result):
            result.append(i)
        elif not i.isalpha():
            result.append(i)
print("".join(result))
  1. 回文是一种“从前向后读”和“从后向前读”都相同的字符串。如“rotor”是一个回文字符串。定义一个函数,判断一个字符串是否为回文字符串,并测试函数的正确性。
def isPalindrome(str):
    rever_str = str[::-1]
    if rever_str == str:
        print(f"{str}是回文字符串!")
    else:
        print(f"{str}不是回文字符串!")
 
str = input(" ")
isPalindrome(str)

实验三 函数及python类的定义与使用

定义一个函数,实验给定任意字符串,查找其中每个字符的最后一次出现,并按每个字符最后一次出现的先后顺序依次存入列表。例如对于字符串’abcda’的处理结果为[‘b’, ‘c’, ‘d’, ‘a’],而字符串’abcbda’的处理结果为[‘c’, ‘b’, ‘d’, ‘a’]。测试函数的正确性。

List = list()
 
str1 = input("Please enter a value for str1:")
 
for i in str1:
    if List.__contains__(i):
        List.remove(i)
        List.append(i)
    else:
        List.append(i)
 
print(List)
  1. 编写函数,使用非递归方法对整数进行因数分解
def factorization(n):
    list = []
    while n > 1:
        for i in range(n-1):
            k = i + 2
            if n % k == 0:
                list.append(k)
                n = n//k
                break
    print(list)
 
factorization(20)
  1. 编写总的“车”类(VehicleClass),其中描述车名、车轮数,以及机动车和非机动车变量, 以及开车方法;编写继承“车”类的公共汽车类(BusClass)和自行车类(BicycleClass)
class VehicleClass:
    def __init__(self, vehicle_name, num_wheels):
        self.vehicle_name = vehicle_name
        self.num_wheels = num_wheels
        
    def drive(self):
        if self.is_movable:
            if self.is_motorized:
                return f"{self.vehicle_name}正在启动引擎并行驶。"
            else:
                return f"{self.vehicle_name}正在踩踏脚踏板。"
        else:
            return f"{self.vehicle_name}无法行驶,可能需要维修。"


class BusClass(VehicleClass):
    def __init__(self, vehicle_name):
        super().__init__(vehicle_name, num_wheels=4)

class BicycleClass(VehicleClass):
    def __init__(self, vehicle_name):
        super().__init__(vehicle_name, num_wheels=2)
  1. 自定义集合。模拟Python内置集合类型,实现元素添加、删除以及并集、交集、对称差集等基本运算
class CustomSet:
    def __init__(self):
        self.elements = []

    def add(self, element):
        if element not in self.elements:
            self.elements.append(element)

    def remove(self, element):
        if element in self.elements:
            self.elements.remove(element)

    def union(self, other_set):
        new_set = CustomSet()
        new_set.elements = self.elements.copy()

        for element in other_set.elements:
            if element not in new_set.elements:
                new_set.elements.append(element)

        return new_set

    def intersection(self, other_set):
        new_set = CustomSet()

        for element in self.elements:
            if element in other_set.elements:
                new_set.add(element)

        return new_set

    def symmetric_difference(self, other_set):
        union_set = self.union(other_set)
        intersection_set = self.intersection(other_set)
        symmetric_diff_set = union_set.difference(intersection_set)

        return symmetric_diff_set

    def difference(self, other_set):
        new_set = CustomSet()

        for element in self.elements:
            if element not in other_set.elements:
                new_set.add(element)

        return new_set

    def display(self):
        print(self.elements)
  1. 自定义栈,实现基本的入栈、出栈操作
class CustomStack:
    def __init__(self):
        self.items = []

    def is_empty(self):
        return len(self.items) == 0

    def push(self, item):
        self.items.append(item)

    def pop(self):
        if not self.is_empty():
            return self.items.pop()
        else:
            return None
  1. 设计点类,并为这个点类设计一个方法计算两点之间的距离。
import math
 
 
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
 
    def getDistance(self, other):
        print(f"两点之间的距离为:{round(math.sqrt((self.x - other.x) ** 2 + (self.y - other.y) ** 2),2)}")
 
 
point1 = Point(5, 1)
point2 = Point(6, 2)
point1.getDistance(point2)
  1. 设计长方形类,并用其成员函数计算两个给定的长方形的周长和面积
class Rectangle:
    def __init__(self, x, y):
        self.x = x
        self.y = y
 
    def getArea(self):
        print(f"长方形的面积为{self.x * self.y}")
 
    def getGirth(self):
        print(f"长方形的周长为{self.x * 2 + self.y * 2}")
 
 
rectangle1 = Rectangle(9, 10)
rectangle1.getArea()
rectangle1.getGirth()
 
rectangle2 = Rectangle(5, 5)
rectangle2.getArea()
rectangle2.getGirth()
  1. 试编码实现简单的银行业务:处理简单帐户存取款、查询。编写银行帐户类BankAccount,包含数据成员:余额(balance)、利率(interest);操作方法:查询余额、存款、取款、查询利率、设置利率。创建BankAccount类的对象,并完成相应操作。
class BankAccount:
    def __init__(self, initial_balance=0.0, interest_rate=0.01):
        self.balance = initial_balance
        self.interest_rate = interest_rate

    def get_balance(self):
        return self.balance

    def deposit(self, amount):
        if amount > 0:
            self.balance += amount
            return f"存款成功。当前余额:{self.balance}"
        else:
            return "存款金额必须大于0。"

    def withdraw(self, amount):
        if amount > 0 and self.balance >= amount:
            self.balance -= amount
            return f"取款成功。当前余额:{self.balance}"
        elif amount <= 0:
            return "取款金额必须大于0。"
        else:
            return "余额不足,无法取款。"

    def get_interest_rate(self):
        return self.interest_rate

    def set_interest_rate(self, new_rate):
        if new_rate >= 0:
            self.interest_rate = new_rate
            return f"利率已更新为 {self.interest_rate * 100}%。"
        else:
            return "利率不能为负数。"


# 创建银行帐户对象
account = BankAccount(initial_balance=1000.0, interest_rate=0.02)

# 查询余额
print("当前余额:", account.get_balance())  

# 存款
print(account.deposit(500))  

# 取款
print(account.withdraw(200))  
print(account.withdraw(1500)) 

# 查询利率
print("当前利率:", account.get_interest_rate())  
# 设置利率
print(account.set_interest_rate(0.03))  
print("当前利率:", account.get_interest_rate())  

实验四 python综合应用

  1. 假设有一个英文文本文件,编写程序读取其内容,并将其中的大写字母变为小写字母,小写字母变为大写字母。
with open("demo.txt", "r") as f:
    data = f.read().swapcase()
    print(data)
  1. 读取文本文件data.txt中所有整数,将其按升序排序后再写入文本文件。
with open('data.txt', 'r') as fp:
    data = fp.readlines()
data = [int(line.strip()) for line in data]
data.sort()
data = [str(i) + '\n' for i in data]
with open('data.txt', 'w') as fp:
    fp.writelines(data)
  1. 编写程序,将包含学生成绩的字典保存为二进制文件,然后再读取内容并显示。
import pickle
 
stu_dict = {"数据结构": 99,
            "计算机网络": 90,
            "计算机组成原理": 80,
            "操作系统": 98}
 
s = pickle.dumps(stu_dict)
 
with open("./dict.txt", "wb") as f:
    f.write(s)
    f.close()
 
with open("./dict.txt", "rb") as f:
    a_dict = f.read()
    f.close()
a_dict = pickle.loads(a_dict)
 
print(a_dict)
  1. 编写程序,用户输入一个目录和一个文件名,搜索该目录及其子目录中是否存在该文件
import os
 
catalogue = input("请输入目录:")
filename = input("请输入文件名:")
flag = True
 
tuple_dirs = os.walk(catalogue)
 
for root, dirs, files in tuple_dirs:    
    if filename in files:
        print(f"{catalogue} 目录下有文件 {filename}")
        flag = False
        break
if flag:
    print(f"{catalogue} 目录下没有文件 {filename}")
  1. 不使用拷贝的方式计算((A+B)*(-A/2))
# 定义变量 A 和 B
A = 5
B = 10

# 计算表达式 ((A + B) * (-A / 2)) 并将结果存储在变量 result 中
result = ((A + B) * (-A / 2))

# 打印结果
print(result)

  1. 生成一个5*5的矩阵,其中每一行的值为0到4
import numpy as np
 
matrix = np.mod(np.arange(25), 5).reshape(5, 5)
print(matrix)
  1. 生成一个包含10个元素的向量,其其取值范围为[0,1]
import numpy as np
 
print(np.random.random(10))
  1. 给定一个4维向量,求倒数第一维、倒数第二维的和
# 假设给定的4维向量是一个列表
vector = [1, 2, 3, 4]

# 求倒数第一维和倒数第二维的和
last_dim_1 = vector[-1]
last_dim_2 = vector[-2]
sum_last_dims = last_dim_1 + last_dim_2

# 打印结果
print("倒数第一维和倒数第二维的和:", sum_last_dims)

  1. 画出以下函数,其取值范围为[0,20].需要增加坐标标签,图片标题等

python实验(超详细)_第1张图片

from matplotlib import pyplot as plt
import numpy as np
import math
 
x = list(np.arange(0, 20, 0.1))
y = []
for i in range(len(x)):
    y.append(math.sin(x[i] - 2) ** 2 * math.e ** (0 - x[i] ** 2))
plt.plot(x, y)
plt.xlabel('x-axis', fontsize=14)
plt.ylabel('y-axis', fontsize=14)
plt.title('f(x) = sin²(x-2)e^(-x²)')
plt.show()
  1. 画出正弦曲线, 需要增加坐标标签,图片标题等

python实验(超详细)_第2张图片

import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-20, 20, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xlabel('x-axis', fontsize=14)
plt.ylabel('y-axis', fontsize=14)
plt.title('f(x) = sinx')
plt.show()
  1. 根据企业成本及利润多年的变化情况,分析下一年的企业利润会是多少。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 假设有多年的成本和利润数据,用列表表示
years = [1, 2, 3, 4, 5]  # 年份
costs = [1000, 1200, 1500, 1700, 2000]  # 成本数据(假设单位是万元)
profits = [2000, 2200, 2300, 2500, 2800]  # 利润数据(假设单位是万元)

# 创建一个线性回归模型
model = LinearRegression()

# 将年份作为输入特征,利润作为目标变量进行拟合
years = np.array(years).reshape(-1, 1)  # 将年份转换为二维数组
model.fit(years, profits)

# 使用模型预测下一年的利润
next_year = 6  # 假设下一年的年份是6
next_year_profit = model.predict([[next_year]])[0]

print(f"预测下一年的利润为:{next_year_profit:.2f}万元")

# 绘制利润的折线图
years_for_plot = years.flatten()
profits_for_plot = profits

plt.figure(figsize=(8, 6))
plt.plot(years_for_plot, profits_for_plot, marker='o', linestyle='-', color='b')
plt.xlabel('年份')
plt.ylabel('利润(万元)')
plt.title('利润变化趋势')
plt.grid(True)

# 在图上标记预测值
plt.annotate(f'预测值:{next_year_profit:.2f}万元', xy=(next_year, next_year_profit), xytext=(next_year - 1, next_year_profit + 100),
             arrowprops=dict(facecolor='red', arrowstyle='->'))

plt.show()

你可能感兴趣的:(Python,python,开发语言,数据结构,学习)