- 实验一 Linux系统安装与使用基础
- 【目的与要求】
- 【实验内容】
- 实验二 Python程序运行方式和程序流程控制
- 【目的与要求】
- 【实验内容】
- 实验三 Python函数
- 【目的与要求】
- 【实验内容】
- 实验四 Python面向对象程序设计
- 【目的与要求】
- 【实验内容】
linux复习笔记-建议收藏
【目的与要求】(一) 目的
本实验的目的是使学生学会Linux的安装、配置和基础使用;掌握Linux常用命令的格式和操作以及系统管理、设备管理、用户管理和文件存取权限管理的基本方法;熟悉编译工具GCC的作用,学会在Linux环境下进行工作。
(二) 要求
熟悉并完成Linux(CentOS 7)的安装和基本配置的操作过程;
- 了解Linux的基本操作命令的格式,掌握基本操作命令功能和使用;
- 了解Linux的文本编辑器vi的3种工作模式,掌握3种工作模式的转换并学会利用vi进行文本编辑;
- 掌握Linux下存储设备的挂载与卸载的方法,并学会如何控制文件和目录的存取权限。
- 熟悉编译工具GCC的作用和基本使用方法。
- 安装并配置Linux(CentOS 7)操作系统。
要求将主机名设置为用户姓名的全拼,并建立一个用户名为姓名简拼的普通用户。
略
- 熟悉Linux操作系统vi编辑器、编译工具GCC的使用并掌握文件、目录基本操作命令的使用。
1)首先查看用户配置文件/etc/passwd中普通用户的记录。
[lyh@liuyuhang ~]$ cat /etc/passwd | grep lyh
2)在用户主目录下建立一个名字为“班级姓名”(例如“rj1701zhangsan”)的子目录,使用ls显示该子目录的详细信息。
[lyh@liuyuhang ~]$ mkdir rj2029liuyuhang [lyh@liuyuhang ~]$ ls
3)然后在用户主目录下使用vi编辑器编辑一个C语言源程序hello.c,并使用编译工具GCC编译该源程序,可执行文件的文件名为hello,运行编译成功的可执行程序hello,并将运行结果重定位到“班级姓名”(例如“rj1701zhangsan”)的子目录下的一个名为“姓名”(例如:“zhangsan”的文件中,然后显示该文件的内容。
hello.c源程序代码:
#includemain(){ char name[20]; printf("Please input your name:"); scanf("%s",name); printf("Welcome %s!n",name); return 0; }
命令:
[lyh@liuyuhang ~]$ vi hello.c [lyh@liuyuhang ~]$ gcc hello.c -o hello [lyh@liuyuhang ~]$ ./hello > ./rj2029liuyuhang/liuyuhang [lyh@liuyuhang ~]$ cat ./rj2029liuyuhang/liuyuhang
4. 控制文件和目录的存取权限。
1)将/usr/bin目录中的cal文件和/bin目录中的cat文件复制到rj1701zhangsan子目录中,并分别命名为zhangsancal和zhangsancat。使用ls查看rj1701zhangsan子目录中的各个文件的详细信息。
[lyh@liuyuhang ~]$ cp /usr/bin/{cal*,cat*} ./rj2029liuyuhang/
[lyh@liuyuhang ~]$ rename cal liuyuhangcal ./rj2029liuyuhang/cal*
[lyh@liuyuhang ~]$ rename cat liuyuhangcat ./rj2029liuyuhang/cat*
[lyh@liuyuhang ~]$ ll ./rj2029liuyuhang/
2)使用长列表命令ls查看/usr/bin目录中的cal文件和/bin目录中的cat文件,并把它们与rj1701zhangsan子目录中的文件进行比较。
[lyh@liuyuhang ~]$ ll /usr/bin/cal [lyh@liuyuhang ~]$ ll /usr/bin/cat [lyh@liuyuhang ~]$ diff /usr/bin/cal ./rj2029liuyuhang/liuyuhangcal [lyh@liuyuhang ~]$ diff /usr/bin/cat ./rj2029liuyuhang/liuyuhangcat [lyh@liuyuhang ~]$ ln hello ./rj2029liuyuhang/hello.link [lyh@liuyuhang ~]$ ./rj2029liuyuhang/hello.link
3)通过建立硬链接在rj1701zhangsan子目录中以hello.link的文件名来运行文件hello。
比较链接文件和被链接文件有什么不同?文件的硬链接数是多少?执行hello.link的执行结果是什么?
4)改变文件hello.link的权限,使拥有者只具有读的权限。试着再运行hello.link,它运行了吗?为什么?
[lyh@liuyuhang ~]$ ll ./rj2029liuyuhang/hello.link [lyh@liuyuhang ~]$ chmod 475 ./rj2029liuyuhang/hello.link [lyh@liuyuhang ~]$ ll ./rj2029liuyuhang/hello.link
5)删除hello.link,这样做也删除了hello文件吗?为什么?
[lyh@liuyuhang ~]$ rm -f ./rj2029liuyuhang/hello.link [lyh@liuyuhang ~]$ ls ./rj2029liuyuhang/
5. 掌握Linux下存储设备的挂载与卸载的方法。
1)建立挂载点/mnt/usb。
2)使用#fdisk -l命令查看设备的连接情况,主要查看U盘的名称及文件系统类型。
[lyh@liuyuhang ~]$ su 密码: [root@liuyuhang lyh]# ll /mnt/ 总用量 0 [root@liuyuhang lyh]# mkdir /mnt/usb 插入U盘ing [root@liuyuhang lyh]# fdisk -l
可能会遇到的问题:
3)使用mount命令手工挂载本地磁盘(U盘)。
4)用ls -l查看U盘中文件的详细信息。
5)使用umount命令手工卸载本地磁盘(U盘)。
[root@liuyuhang lyh]# mount -t vfat /dev/sdb1 /mnt/usb [root@liuyuhang lyh]# ll /mnt/usb [root@liuyuhang lyh]# umount /mnt/usb实验二 Python程序运行方式和程序流程控制
python复习资料
【目的与要求】(一) 目的
本实验的目的是使学生熟悉Python程序运行方式和程序流程控制,在熟练掌握Python语言基础知识的基础上,能应用控制流程编写程序,培养学生对应用软件的认知、结构、设计及实施能力。
(二) 要求
- 能熟练掌握Python的安装、执行Python命令和脚本文件的方法、集成开发环境Pycharm。
- 了解Python语言的基本语法和编码规范。
- 掌握Python语言的数据类型、运算符、常量、变量、表达式和常用语句等基础知识。
- 掌握Python语言控制语句。
- 下载并安装Python。
- 安装Python集成开发环境Pycharm。
- 下载并安装至少一个第三方模块。
略 - 请编写一个程序,能接收用户输入的一个复数的实部和虚部,输出其复数表示形式,并求其模。
import math
a, b = input("请输入实部和虚部:").split()
a = int(a)
b = int(b)
print(a, "+", b, "i, 模长为:", math.sqrt(a*a + b*b), sep="")
- 编写一个程序,根据输入的3个成绩,计算平均分。
x, y, z = input("请输入三个成绩:").split()
x = int(x)
y = int(y)
z = int(z)
print((x + y + z) / 3.0)
- 输出1000以内的素数以及这些素数只和。
import math
sum = 0
for i in range(2, int(math.sqrt(1000))):
if i & 1 == 0:
sum += i
print(i, end=",")
print("n素数和为", sum)
- 按公式s=12+22+32+…+n2,求累计加和,s不超过1000的最大项数n,程序运行结果如下所示:
n s
1 1
2 5
3 14
4 30
…
累计和不超过1000的最大项数是n=13
s = 0
n = 1
print("n", "s")
while True:
s = s + n * n
if s <= 1000: print(n, s)
else: break
n += 1
实验三 Python函数
【目的与要求】
(一) 目的
通过函数的设计,熟练掌握函数的使用,进一步了解函数的各类参数、及参数传递过程,实现减少程序的代码量,同时提高程序执行时的效率和可维护性。
(二) 要求
1. 掌握函数的定义
2. 掌握函数的调用
3. 掌握函数的形参、实参及返回值
4. 掌握位置参数
5. 掌握序列作为参数
- 编写函数,求出一个数除1和自身以外的因子。从键盘输入一个数,调用该函数输出除1和它自身以外的所有因子。
def fun(num):
for i in range(2, num//2 + 1):
if num % i == 0:
print(i, end=" ")
fun(12)
- 编写两个函数,分别求两个整数的最大公约数和最小公倍数,在主函数调用这两个函数,并输出结果。两个整数由键盘输入。
def gcd(a, b):
if a == b: return a
if (a & 1) == 0 and (b & 1) == 0:
return gcd(a >> 1, b >> 1) << 1
elif (a & 1) == 0 and (b & 1) != 0:
return gcd(a >> 1, b)
elif (a & 1) != 0 and (b & 1) == 0:
return gcd(a, b >> 1)
else:
return gcd(abs(a - b), min(a, b))
def fun(a, b):
return a * b // gcd(a, b)
print(gcd(4, 6))
print(fun(4, 6))
- 编写程序,利用元组作为函数的返回值,求系列类型的最大值、最小值和元素个数,并编写测试代码。假设测试数据分别为:
S1=[9,7,8,3,2,1,55,6]
S2=[“apple”,“pear”,“melon”,“kiwi”]
S3=”TheQuickBrownFox”。
程序运行效果如下所示:
List =[9,7,8,3,2,1,55,6]
最大值=55,最小值=1,元素个数=8
List =[“apple”,“pear”,“melon”,“kiwi”]
最大值= pear,最小值= apple,元素个数=4
List =“TheQuickBrownFox”
最大值=x,最小值=B,元素个数=16
提示:
函数形参为系列类型,返回值形如“(最大值,最小值,元素个数)”
def fun(args):
args = sorted(args)
res = (args.pop(), args[0], len(args))
return res
s1=[9,7,8,3,2,1,55,6]
s2=["apple", "pear", "melon", "kiwi"]
s3="TheQuickBrownFox"
print(fun(s1))
print(fun(s2))
print(fun(s3))
实验四 Python面向对象程序设计
【目的与要求】
(一) 目的
面向对象程序设计的方法是从日常处理问题思路中形成的一种新的设计方法。通过了解对象、类、封装、继承、方法、构造函数和析构函数等面向对象的程序设计的基本概念,掌握Python类的定义、类的方法、类的继承等,为解决复杂现实问题,培养编程能力及工程应用技能,打下坚实的基础。
(二) 要求
1. 了解面向对象的程序设计思想
2. 掌握Python对象、类、封装、继承、方法、构造函数和析构函数等.
3. 掌握Python的类的继承与组合
- 设计一个Circle类来表示园,这个类包含圆的半径以及求周长和面积的函数。再使用这个类创建半径为1~100的圆,并计算出相应的周长及面积。
import math
class Circle:
def __init__(self, r):
self.r = r
self.perimeter = 2 * math.pi * r
self.area = math.pi * r ** 2
def describe(self):
print("圆的半径为:%d, 周长为:%.2f,面积为:%.2f" %(self.r, self.perimeter, self.area))
circle = Circle(4)
circle.describe()
- 编写程序并测试,有一个汽车类Vehicle,类中的私有数据成员为车轮个数wheels和车重weight;小车类Car是汽车类vehicle派生类,其中包含载客人数passenger_load,默认4人;卡车类Truck是汽车类vehicle派生类,其中包含载客人数passenger_load和载重量payload。
提示:编写类时要使用get和set方法,Vehicle类定义display()显示车轮和重量,Car和Truck中要对display()进行同名覆盖。
class Vehicle:
__wheels = 0
__weight = 0
def setWheels(self, wheels):
self.__wheels = wheels
def getWheels(self):
return self.__wheels
def setWeight(self, weight):
self.__weight = weight
def getWeight(self):
return self.__weight
def display(self):
print("车轮数量为:%d 个, 车轮重量为:%d Kg" %(self.__wheels, self.__weight))
class Car(Vehicle):
passenger_load = 4
def display(self):
print("Car:车轮数量为:%d 个, 车轮重量为:%d Kg" %(self.getWheels(), self.getWeight()))
class Truck(Vehicle):
passenger_load = 10
payload = 10
def display(self):
print("Truck:车轮数量为:%d 个, 车轮重量为:%d Kg" %(self.getWheels(), self.getWeight()))
car = Car()
car.setWeight(5)
car.setWheels(4)
car.display()
truck = Truck()
truck.setWeight(10)
truck.setWheels(8)
truck.display()
- 编写一个学生和教师数据输入和输出的程序。学生数据包括编号、姓名、班号、和成绩;教师的数据含有编号、姓名、职称和部门。要求设计一个person类,作为学生数据操作类student和教师数据操作类teacher的基类。
class Person:
def __init__(self, id, name):
self.id = id
self.name = name
class Student(Person):
def __init__(self, stu):
Person.__init__(self, stu[0], stu[1])
self.classId = stu[2]
self.score = stu[3]
def showInfo(self):
print("学生的编号:%s, 姓名: %s, 班号:%s, 成绩:%s" %(self.id, self.name, self.classId, self.score))
class Teacher(Person):
def __init__(self, tea):
Person.__init__(self, tea[0], tea[1])
self.job = tea[2]
self.section = tea[3]
def showInfo(self):
print("教师的编号:%s, 姓名: %s, 班号:%s, 成绩:%s" %(self.id, self.name, self.job, self.section))
stu = input("请输入学生的编号、姓名、班号和成绩:").split()
student = Student(stu)
student.showInfo()
tea = input("请输入教师的编号、姓名、班号和成绩:").split()
teacher = Teacher(tea)
teacher.showInfo()



