1、输入a,b,c,d4个整数,计算a+b-c*d的结果?
2、编写程序,从键盘输入某个分钟数,将其转换成小时和分钟表示。
3、输入一个16位学号如,1001010220170101,其中100是学校代号、101是院系代号、02专业代号、2017年级、01班级、01学号,请使用切片获取出各个代码。
# 1、输入a,b,c,d4个整数,计算a+b-c*d的结果?
# 从键盘输入数字
str_input = input('请输入a、b、c、d四个整数(数字之前使用,逗号连接):')
# 使用split对数据进行切分
list_data = str_input.split(',')
if len(list_data) == 4:
a = int(list_data[0])
b = int(list_data[1])
c = int(list_data[2])
d = int(list_data[2])
# 计算测试结果
ret = a + b - c * d
print(f'a+b-c*d={ret}')
else:
print('输入的数字有误!')
请输入a、b、c、d四个整数(数字之前使用,逗号连接):5,3,1,3 a+b-c*d=7
# 2、编写程序,从键盘输入某个分钟数,将其转换成小时和分钟表示。
# 从键盘输入分钟数
minutes = int(input('请输入分钟数:'))
# 计算小时和分钟
hours = minutes // 60
remaining_minutes = minutes % 60
# 输出结果
print(f'{minutes} 分钟是 {hours} 小时和 {remaining_minutes} 分钟')
请输入分钟数:29 29 分钟是 0 小时和 29 分钟
# 3,输入一个16位学号如,1001010220170101,
# 其中100是学校代号、101是院系代号、02专业代号、2017年级、01班级、01学号,
# 请使用切片获取出各个代码。
stu_no = input('请输入16位学号:')
if len(stu_no) != 16:
print('学号长度有误!')
else:
print(f'学校代号: {stu_no[0:2]}')
print(f'院系代号: {stu_no[3:5]}')
print(f'专业代号: {stu_no[6:7]}')
print(f'年级: {stu_no[8:11]}')
print(f'班级: {stu_no[12:13]}')
print(f'学号: {stu_no[14:]}')
请输入16位学号:1001010220170101 学校代号: 10 院系代号: 10 专业代号: 0 年级: 201 班级: 0 学号: 01
Day3练习题目¶
1、输入年份,判断该年是否为闰年。闰年的条件:能够被4整除但不能被100整除,或者能够被400整除的。
2、输出10行内容,每行的内容都不一样,第1行一个星号,第2行2个星号…
3、输出所有的水仙花数(三位数,各位数字的立方和等于自身)。
# 1、输入年份,判断该年是否为闰年。闰年的条件:能够被4整除但不能被100整除,或者能够被400整除的。
year = int(input('请输入年份:(系统会判断输入的年份是否为闰年)'))
if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):
print(f'{year}是闰年')
else:
print(f'{year}不是闰年')
请输入年份:(系统会判断输入的年份是否为闰年)2008 2008是闰年
# 2、输出10行内容,每行的内容都不一样,第1行一个星号,第2行2个星号…
# 设置输出10行
len_num = 10
for i in range(1, len_num + 1):
print('*' * i)
* ** *** **** ***** ****** ******* ******** ********* **********
# 3、输出所有的水仙花数(三位数,各位数字的立方和等于自身)。
list_data = [100, 407, 370, 456]
for inumber in list_data:
ones = inumber % 10
tens = (inumber // 10) % 10
hundreds = inumber // 100
ret = ones ** 3 + tens ** 3 + hundreds ** 3
print(f"{hundreds}的三次方+{tens}的三次方+{ones}的三次方 = {ret}")
if inumber == ones ** 3 + tens ** 3 + hundreds ** 3:
print(f'{inumber}是一个水仙花数')
1的三次方+0的三次方+0的三次方 = 1 4的三次方+0的三次方+7的三次方 = 407 407是一个水仙花数 3的三次方+7的三次方+0的三次方 = 370 370是一个水仙花数 4的三次方+5的三次方+6的三次方 = 405
Day4练习题目¶
1、假定有下面的列表: names = [‘fentiao’,’fendai’,’fensi’,’apple’] 输出结果为:’I have fentiao, fendai, fensi and apple.’
2、已知一个数字列表,求所有元素和。
3、将列表逆序输出,使用三种方式。
# 1、假定有下面的列表: names = ['fentiao','fendai','fensi','apple']
# 输出结果为:'I have fentiao, fendai, fensi and apple.'
names = ['fentiao','fendai','fensi','apple']
result = f'I hava {names[0]}, {names[1]}, {names[2]} and {names[3]}.'
print(result)
I hava fentiao, fendai, fensi and apple.
# 2、已知一个数字列表,求所有元素和。
num = [1, 3, 5, 6, 7, 8, 9]
sum = 0
for i in num:
sum = sum + i
print(f'数字列表的和为:{sum}')
数字列表的和为:39
# 3、将列表逆序输出,使用三种方式。
num = [1, 3, 5, 6, 7, 8, 9]
# 方式一:使用切片函数
print('方式一:')
print(num[::-1])
# 方式二:使用for循环从后往前遍历输出
print('方式二:')
for i in range(len(num)-1, -1, -1): # range的用法是(start, end , step),其中end是开区间,即并不包含
print(num[i], end=' ')
print('')
# 方式三:将num数组翻转,然后顺序输出
print('方式三:')
reversed_num = reversed(num)
for num in reversed_num:
print(num, end=' ')
print('')
方式一: [9, 8, 7, 6, 5, 3, 1] 方式二: 9 8 7 6 5 3 1 方式三: 9 8 7 6 5 3 1
Day5练习题目¶
1、去除列表中的重复元素:li=[1,1,2,3,4,7,8,2,1,2]
2、现存任意两个字符串s1与s2,判断s1中的字符在s2中存在的个数(重复的字符算1个,一条语句实现)
3、编写程序,将字典中的键与值互换。
# 1、去除列表中的重复元素:li=[1,1,2,3,4,7,8,2,1,2]
li = [1, 1, 2, 3, 4, 7, 8, 2, 1, 2]
# 声明新的new_li用于保存去除重复元素后的list
new_li = list()
dic_appear = dict()
for i in li:
if i in dic_appear:
continue
else:
dic_appear.setdefault(i)
new_li.append(i)
print(new_li)
[1, 2, 3, 4, 7, 8]
# 2、现存任意两个字符串s1与s2,判断s1中的字符在s2中存在的个数(重复的字符算1个,一条语句实现)
s1 = 'hello world'
s2 = 'this is a test'
# 将字符串转换为集合,然后使用&运算符计算两个集合的交集,最后通过len()函数获取交集的元素个数
count = len(set(s1) & set(s2))
print(count)
{'h', 'r', 'l', 'd', 'e', 'o', 'w', ' '} 3
# 3、编写程序,将字典中的键与值互换。
data = {'a': 'apple',
'b': 'banana',
'c': 'cina'}
# 使用字典推导式将键与值互换
flipped_data = {v: k for k, v in data.items()}
print(flipped_data)
{'apple': 'a', 'banana': 'b', 'cina': 'c'}
Day6练习题目¶
1、写一个lambda表达式,实现两个数的相加
2、编写函数,第一个参数指定今天是星期几(1 ~ 7),第二个参数指定天数n,返回n天后是星期几。
3、求平方和,有列表[1,……9],把每一个元素都取一下平方,然后累加求和,使用普通函数和使用高阶函数两种方式解决问题
# 1、写一个lambda表达式,实现两个数的相加
addition = lambda x, y: x + y
sum_result = addition(5,3)
print(f'lambda相加结果:{sum_result}')
lambda相加结果:8
# 2、编写函数,第一个参数指定今天是星期几(1 ~ 7),第二个参数指定天数n,返回n天后是星期几。
def get_future_weekday(today, n):
weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
# 计算n天后的星期几
future_weekday = weekdays[(today + n) % 7]
return future_weekday
# 假设今天是星期一(1代表星期一,以此类推)
today = 2
# 假设n为30天后
n = 30
future_weekday = get_future_weekday(today, n)
print(future_weekday) # 输出结果为星期六
Thursday
# 3、求平方和,有列表[1,……9],把每一个元素都取一下平方,然后累加求和,使用普通函数和使用高阶函数两种方式解决问题
# 普通函数方式:
def square_sum_normal(lst):
total = 0
for num in lst:
total += num ** 2
return total
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result_normal = square_sum_normal(nums)
print("平方和(普通函数):", result_normal)
# 高阶函数方式:
def square_sum_advance(lst):
# 使用sum函数直接计算map对象中元素的和
return sum(map(lambda x: x ** 2, lst))
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result_advance = square_sum_advance(nums)
print("平方和(高阶函数):", result_advance)
平方和(普通函数): 285 平方和(高阶函数): 285
Day7练习题目¶
- 1、编写“计算机类”,属性包括CPU型号,内存大小,硬盘大小。行为包括介绍CPU型号,展示内存大小,展示硬盘大小,综合介绍。
作业Tips:定义构造函数的时候,init左右两边各有两条下划线,这里在写的时候容易出错作业的目的是让大家熟悉一下怎么写一个类,类里面包括属性和方法,属性是需要的数据,方法就是函数
class Computer:
def __init__(self, cpu = 'i7', mem = '8M', hd = '500G'):
self.cpu = cpu
self.mem = mem
self.hd = hd
def get_cpu(self):
print(f'CPU : {self.cpu}')
def get_mem(self):
print(f'内存 : {self.mem}')
def get_hdisk(self):
print(f'硬盘 : {self.mem}')
def get_info(self):
self.get_cpu()
self.get_mem()
self.get_hdisk()
computer = Computer('i9-10400k', '16G', '10T')
computer.get_info()
CPU : i9-10400k 内存 : 16G 硬盘 : 16G
Day8练习题目¶
- 1、将一个列表中所有元素转换成浮点类型,如果不能转换,则丢弃该元素。
# 1、将一个列表中所有元素转换成浮点类型,如果不能转换,则丢弃该元素。
original_list = [1, "2.5", 3, "hello", 4.2]
float_list = []
for item in original_list:
try:
# 直接尝试将元素转换为浮点数
float_item = float(item)
float_list.append(float_item)
except ValueError:
# 如果转换失败(例如,因为元素是不能转换为浮点数的字符串),则忽略该元素
pass
print(float_list)
[1.0, 2.5, 3.0, 4.2]
Day9练习题目¶
- 1、说明r,w与a三者间的区别。
- 2、读取iris.txt文件数据,并存入列表中:
1、说明r,w与a三者间的区别。
- r(read):以只读方式打开文件,文件的指针将会放在文件的开头,如果文件不存在则会抛出异常。
- w(write):以写入方式打开文件,如果文件存在,则将其内容清空;如果文件不存在,则创建新文件进行写入。
- a(append):以追加方式打开文件,文件的指针会放在文件末尾,如果文件不存在则创建新文件进行写入。
# 2、读取iris.txt文件数据,并存入列表中
iris_data = []
with open('testdata/iris.txt', 'r') as file:
for line in file:
# 去除换行符并按逗号分割每行数据
data = line.strip().split(',')
iris_data.append(data)
# 打印存储的数据列表
for data in iris_data:
print(data)
['98', '14'] ['19', '83'] ['11', '48'] ['73', '21'] ['71', '25'] ['19', ''] ['19', '6'] ['26', '20'] ['99', '60'] ['', '65'] ['97', '47'] ['54', '87'] ['19', '6'] ['13', '92'] ['1', '91'] ['95', '56'] ['4', '57'] ['19', '28'] ['74', '9'] ['44', '6']
Day10练习题目¶
- 1、生成一个文件夹,文件夹下面生成100个txt文件,分别命名为1.txt ,2.txt到100.txt,其中1.txt内容为1到100,2.txt的内容为101到200,以此类推到100.txt的内容为9901到10000。
- 2、输出如下格式的日志信息
# 2022年01月01日 12:00:00 DEBUG:logging debug message # 2022年01月01日 12:00:00 INFO:logging info message # 2022年01月01日 12:00:00 WARNING:logging warning message # 2022年01月01日 12:00:00 ERROR:logging error message # 2022年01月01日 12:00:00 CRITICAL:logging critical message
# 1、生成一个文件夹,文件夹下面生成100个txt文件,分别命名为1.txt ,2.txt到100.txt,其中1.txt内容为1到100,2.txt的内容为101到200,以此类推到100.txt的内容为9901到10000。
import os
# 创建文件夹
folder_name = "testdata/txt_files"
os.makedirs(folder_name, exist_ok=True)
for i in range(1, 101):
file_name = f"{folder_name}/{i}.txt"
with open(file_name, 'w') as file:
start_num = (i - 1) * 100 + 1
end_num = i * 100
for num in range(start_num, end_num + 1):
file.write(str(num) + '\n')
print("生成100个txt文件成功!")
生成100个txt文件成功!
# 2、输出如下格式的日志信息
import logging
# 配置日志格式
logging.basicConfig(format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y年%m月%d日 %H:%M:%S', level=logging.DEBUG)
# 输出不同级别的日志信息
logging.debug('logging debug message')
logging.info('logging info message')
logging.warning('logging warning message')
logging.error('logging error message')
logging.critical('logging critical message')
2024年04月22日 09:20:50 DEBUG: logging debug message 2024年04月22日 09:20:50 INFO: logging info message 2024年04月22日 09:20:50 WARNING: logging warning message 2024年04月22日 09:20:50 ERROR: logging error message 2024年04月22日 09:20:50 CRITICAL: logging critical message
Day11练习题目¶
1、创建一个 3×3 并且值从0到8的矩阵
2、创建一个 10×10 的随机数组并找到它的最大值和最小值提示:可以使用np.random.random((10,10))创建随机数组
3、一个5×3的矩阵与一个3×2的矩阵相乘,矩阵乘积是什么?
4、创建一个长度为10,并且除了第五个值为1,其他值均为0的一维数组。
# 1、创建一个 3x3 并且值从0到8的矩阵
import numpy as np
matrix = np.arange(9).reshape(3, 3)
print(matrix)
[[0 1 2] [3 4 5] [6 7 8]]
# 2、创建一个 10x10 的随机数组并找到它的最大值和最小值提示:可以使用np.random.random((10,10))创建随机数组
import numpy as np
random_array = np.random.random((10, 10))
max_value = np.max(random_array)
min_value = np.min(random_array)
print("随机数组:")
print(random_array)
print("\n最大值:", max_value)
print("最小值:", min_value)
随机数组: [[0.41646091 0.76268491 0.8027547 0.07879767 0.2786576 0.88425242 0.28658444 0.74776637 0.41233868 0.32297105] [0.21039263 0.06501205 0.87144013 0.73771496 0.12272004 0.85997049 0.31746399 0.99572349 0.09340432 0.68814992] [0.96743424 0.32871158 0.92731148 0.24965248 0.50401202 0.81146523 0.17036534 0.27377578 0.5670022 0.31153979] [0.78947913 0.58240784 0.82024191 0.91664242 0.82796759 0.20206346 0.01763296 0.74009348 0.90003514 0.48709394] [0.06366397 0.52629561 0.70159714 0.6340718 0.61273687 0.47774244 0.59995568 0.74580533 0.00923359 0.61734662] [0.47060455 0.34227707 0.52955684 0.38164476 0.9745751 0.89587607 0.566844 0.55639096 0.00243256 0.23722075] [0.80980503 0.1059686 0.26123569 0.67878504 0.06215617 0.71449143 0.7961097 0.30456189 0.50651335 0.96909547] [0.10062132 0.17229285 0.02597255 0.43761145 0.43058834 0.29616738 0.05489159 0.26615003 0.07136456 0.18497854] [0.02918334 0.58183818 0.59022902 0.03000709 0.97401913 0.80082518 0.34545513 0.08547082 0.39629509 0.43040203] [0.63114354 0.78981213 0.23856714 0.29144246 0.91915796 0.83409382 0.27951694 0.67767135 0.31779928 0.57309354]] 最大值: 0.9957234911707606 最小值: 0.002432555323395813
# 3、一个5x3的矩阵与一个3x2的矩阵相乘,矩阵乘积是什么?
import numpy as np
matrix1 = np.random.rand(5, 3)
matrix2 = np.random.rand(3, 2)
# 将两个矩阵相乘
result_matrix = np.dot(matrix1, matrix2)
print("第一个矩阵:")
print(matrix1)
print("\n第二个矩阵:")
print(matrix2)
print("\n矩阵相乘的结果:")
print(result_matrix)
第一个矩阵: [[0.02087531 0.51778982 0.1692845 ] [0.92838896 0.17300452 0.8179881 ] [0.38890158 0.68052362 0.98037865] [0.70004022 0.33496434 0.02390338] [0.66634947 0.37745194 0.62522045]] 第二个矩阵: [[0.16817947 0.34016113] [0.28683971 0.61891259] [0.44172847 0.60353383]] 矩阵相乘的结果: [[0.22681126 0.42973653] [0.56708916 0.91656 ] [0.69366762 1.14516551] [0.22437227 0.45986662] [0.49651218 0.83761764]]
# 4、创建一个长度为10,并且除了第五个值为1,其他值均为0的一维数组。
import numpy as np
# 创建长度为10的一维数组
array = np.zeros(10)
array[4] = 1
print(array)
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
Day12练习题目¶
import numpy as np
import matplotlib.pyplot as plt
# 定义函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 生成 x 值
x = np.linspace(-5, 5, 100) # 在区间 [-5, 5] 生成 100 个点
# 计算对应的 y 值
y = sigmoid(-x)
# 绘制函数图像
plt.figure()
plt.plot(x, y, label='y = 1 / (1 + e^(-x))')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Plot of y = 1 / (1 + e^(-x))')
plt.grid(True)
plt.legend()
plt.show()
- 2、创建一个DataFrame(df),用data做数据,labels做行索引
data = {
'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],
'age': [2.5, 3, 0.5, 3.6, 5, 2, 4.5, 5, 7, 3],
'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']
}
labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
问题:
(1) 选择df中列标签为animal和age的数据
(2)选择visits大于2的行
(3)将f行的age改为1.5
(4)计算visits列的数据总和
import numpy as np
import pandas as pd
data = {
'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],
'age': [2.5, 3, 0.5, 3.6, 5, 2, 4.5, 5, 7, 3],
'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']
}
labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
df = pd.DataFrame(data, index=labels)
df
animal | age | visits | priority | |
---|---|---|---|---|
a | cat | 2.5 | 1 | yes |
b | cat | 3.0 | 3 | yes |
c | snake | 0.5 | 2 | no |
d | dog | 3.6 | 3 | yes |
e | dog | 5.0 | 2 | no |
f | cat | 2.0 | 3 | no |
g | snake | 4.5 | 1 | no |
h | cat | 5.0 | 1 | yes |
i | dog | 7.0 | 2 | no |
j | dog | 3.0 | 1 | no |
# (1) 选择df中列标签为animal和age的数据
selected_data = df[['animal', 'age']]
selected_data
animal | age | |
---|---|---|
a | cat | 2.5 |
b | cat | 3.0 |
c | snake | 0.5 |
d | dog | 3.6 |
e | dog | 5.0 |
f | cat | 2.0 |
g | snake | 4.5 |
h | cat | 5.0 |
i | dog | 7.0 |
j | dog | 3.0 |
# (2)选择visits大于2的行
selected_rows = df[df['visits'] > 2]
selected_rows
animal | age | visits | priority | |
---|---|---|---|---|
b | cat | 3.0 | 3 | yes |
d | dog | 3.6 | 3 | yes |
f | cat | 2.0 | 3 | no |
# (3)将f行的age改为1.5
df.loc['f','age'] = 1.5
df
animal | age | visits | priority | |
---|---|---|---|---|
a | cat | 2.5 | 1 | yes |
b | cat | 3.0 | 3 | yes |
c | snake | 0.5 | 2 | no |
d | dog | 3.6 | 3 | yes |
e | dog | 5.0 | 2 | no |
f | cat | 1.5 | 3 | no |
g | snake | 4.5 | 1 | no |
h | cat | 5.0 | 1 | yes |
i | dog | 7.0 | 2 | no |
j | dog | 3.0 | 1 | no |
# (4)计算visits列的数据总和
df['visits'].sum()
19