问题1:1. 输入输出学习
输入两个整数,并计算二者的加减乘除的结果
解决:
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
# 分别把 a、b 转换成整数
a=int(a)
b=int(b)
# 计算 a、b 的和、差、积、商,赋值给变量c
c=a+b
# 打印c
print("c = ", c)
c=a-b
print("c = ", c)
c=a*b
print("c = ", c)
c=a//b
print("c = ", c)
问题2. 条件判断
输入两个整数,如果两个整数之和小于100,则输出 '小于100',否则输出 '不小于100'
解决:
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
# 分别把 a、b 转换成整数
a=int(a)
b=int(b)
# 计算 a、b 的和,赋值给变量c
c=a+b
# 判断c是否小于100,按要求输出
if c<100:
print("小于100")
else:
print("不小于100")
问题3:
.创建一个含有元素1,2,4,8,16,32的列表
尽可能的写多种的方法实现(两种以上该问满分)
2.分别完成以下操作(在原列表基础上)
· 输出第2个元素
· 删除第2个元素
· 更改第2个元素为0
解决:
# 列表统一命名为L
# 方法一:
L = [1,2,4,8,16,32]
print(L[1])
del L[1]
print(L)
L.insert(1, 2)
L[1]=0
print(L)
# 方法二:
L = list ([1,2,4,8,16,32])
print(L[1])
del L[1]
print(L)
L.insert(1, 2)
L[1]=0
print(L)
#方法三
L = [2**x for x in range(6)]
print(L[1])
del L[1]
print(L)
L.insert(1, 2)
L[1]=0
print(L)
问题4:
问题描述
Fibonacci数列的递推公式为:FnF_nFn = F(n−1)F_(n−1)F(n−1) + F(n−2)F_(n−2)F(n−2) 其中F1F_1F1=F2F_{2}F2 = 1
当n比较大时,FnF_nFn也非常大,现在我们想知道,FnF_nFn除以10007的余数是多少。
输入格式
输入包含一个整数n。
输出格式
输出一行,包含一个整数,表示Fn除以10007的余数。
解决:
n = int(input())
F = [1, 1]
if n <= 2:
for ALL in range(n):
F.append(F[ALL] + F[ALL + 1])
print(F[n - 1]%10007)
else:
for ALL in range(n - 2):
result = (F[0] + F[1]) % 10007
F[0], F[1] = F[1], result
print(result)
问题5:对随机生成并且打乱的arr从小到大依次进行冒泡排序,快速排序,插入排序和希尔排序算法的补全
解决:
# 随机生成
import numpy as np
#请把冒泡排序算法补充完整
def bubbleSort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]
if __name__ == '__main__':
# 打乱顺序并随机生成
nums=np.random.permutation(20)
print(nums)
bubbleSort(nums)
print(nums)
# 随机生成
import numpy as np
#请把快速排序算法补充完整
def quickSort(arr):
if len(arr)>=2:
data_index=arr[len(arr)//2]
low, high=[], []
arr.remove(data_index)
for num in arr:
if num low.append(num)
else:
high.append(num)
return quickSort(low)+[data_index]+quickSort(high)
return arr
if __name__ == '__main__':
nums=np.random.permutation(20)
nums=nums.tolist()
print('随机生成数组:', nums)
print('快速排序后数组:',quickSort(nums))
# 随机生成
import numpy as np
#请把希尔排序算法补充完整
def shellSort(arr):
n = len(arr)
gap = int(n/2)
while gap > 0:
for i in range(gap,n):
temp = arr[i]
j = i
while j >= gap and arr[j-gap] >temp:
arr[j] = arr[j-gap]
j -= gap
arr[j] = temp
gap = int(gap/2)
return arr
if __name__ == '__main__':
nums=np.random.permutation(20)
print('随机生成数组:', nums)
print('希尔排序后数组:',shellSort(nums))
# 随机生成
import numpy as np
#请把插入排序算法补充完整
def insertionSort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i-1
while j >=0 and key < arr[j] :
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
return arr
if __name__ == '__main__':
nums=np.random.permutation(20)
print('随机生成数组:', nums)
print('插入排序后数组:',insertionSort(nums))
问题6:定义Student类,包括name、dob、age、gender和score属性,包括top3方法用来返回学生的最大的3个成绩(可重复)、sanitize方法用来将负的分数变为正的分数,负的分数可能是输入错误。声明stu_list对象组数用于存储所有的学生对象。最后输出所有的学生信息包括姓名、生日、年龄、性别、最高的3个分数。
数据如下:
stu1.txt 孙同学,2020-5-21,20,'男',77,56,77,76,92,58,-91,84,69,-91
stu2.txt 赵同学,2020-11-3,24,'女',65,68,72,95,-81,71,86,91,57,91
stu3.txt 王同学,2021-8-7,25,'男',87,78,90,-76,88,47,100,65,69,100
stu4.txt 李同学,2021-8-10,29,'男',92,54,85,71,-91,68,77,68,95,95
解决:
# 请在此处完成代码
class Student(object):
@staticmethod
def sanitize(score):
return abs(int(score))
def get_info(self,txt_path):
with open(txt_path) as fr:
data_info = fr.readline()
name,dob,age,gender=data_info.split(',')[:4]
scores=data_info.split(',')[4:]
scores=[self.sanitize(s) for s in scores]
self.name=name
self.dob=dob
self.age=age
self.gender=gender
self.scores=scores
def get_top3(self):
return sorted(self.scores,reverse=True)[:3]
def __str__(self):
return f'姓名:{self.name},生日:{self.dob},年龄:{self.age},性别:{self.gender},最好的三次成绩:{self.get_top3()}'
import os
txt_root='work'
txt_files=['stu1.txt','stu2.txt','stu3.txt','stu4.txt']
stu_list=[]
for txt_file in txt_files:
txt_file_path=os.path.join(txt_root,txt_file)
print(os.path.join(txt_root,txt_file))
new_stu=Student()
new_stu.get_info(txt_file_path)
stu_list.append(new_stu)
for stu in stu_list:
print(stu)