《Linux与Python编程R》实验报告(2020)

实验一 Linux系统安装与使用基础

一、 实验目的和要求
(一) 目的
本实验的目的是使学生学会Linux的安装、配置和基础使用;掌握Linux常用命令的格式和操作以及系统管理、设备管理、用户管理和文件存取权限管理的基本方法;熟悉编译工具GCC的作用,学会在Linux环境下进行工作。
(二) 要求
熟悉并完成Linux(CentOS 7)的安装和基本配置的操作过程;

  1. 了解Linux的基本操作命令的格式,掌握基本操作命令功能和使用;
  2. 了解Linux的文本编辑器vi的3种工作模式,掌握3种工作模式的转换并学会利用vi进行文本编辑;
  3. 掌握Linux下存储设备的挂载与卸载的方法,并学会如何控制文件和目录的存取权限。
  4. 熟悉编译工具GCC的作用和基本使用方法。

二、 实验内容及步骤

  1. 安装并配置Linux(CentOS 7)操作系统。
    要求将主机名设置为用户姓名的全拼,并建立一个用户名为姓名简拼的普通用户。
    在这里插入图片描述

  2. 熟悉Linux操作系统vi编辑器、编译工具GCC的使用并掌握文件、目录基本操作命令的使用。
    1) 首先查看用户配置文件/etc/passwd中普通用户的记录。
    在这里插入图片描述

2) 在用户主目录下建立一个名字为“班级姓名”(例如“rj1701zhangsan”)的子目录,使用ls显示该子目录的详细信息。
在这里插入图片描述

3) 然后在用户主目录下使用vi编辑器编辑一个C语言源程序hello.c,并使用编译工具GCC编译该源程序,可执行文件的文件名为hello,运行编译成功的可执行程序hello,并将运行结果重定位到“班级姓名”(例如“rj1701zhangsan”)的子目录下的一个名为“姓名”(例如:“zhangsan”的文件中,然后显示该文件的内容。
hello.c源程序代码:
#include <stdio.h>
main()
{char name[20];
printf(“Please input your name:”);
scanf(“%s”,name);
printf(“Welcome %s!\n”,name);
reture 0;}
在这里插入图片描述在这里插入图片描述

  1. 控制文件和目录的存取权限。
    1) 将/usr/bin目录中的cal文件和/bin目录中的cat文件复制到rj1701zhangsan子目录中,并分别命名为zhangsancal和zhangsancat。使用ls查看rj1701zhangsan子目录中的各个文件的详细信息。
    在这里插入图片描述

2) 使用长列表命令ls查看/usr/bin目录中的cal文件和/bin目录中的cat文件,并把它们与rj1701zhangsan子目录中的文件进行比较。
在这里插入图片描述

3) 通过建立硬链接在rj1701zhangsan子目录中以hello.link的文件名来运行文件hello。
在这里插入图片描述

比较链接文件和被链接文件有什么不同?文件的硬链接数是多少?执行hello.link的执行结果是什么?
4)改变文件hello.link的权限,使拥有者只具有读的权限。试着再运行hello.link,它运行了吗?为什么? 在这里插入图片描述

5)删除hello.link,这样做也删除了hello文件吗?为什么?
在这里插入图片描述

  1. 掌握Linux下存储设备的挂载与卸载的方法。
    1) 建立挂载点/mnt/usb。
    在这里插入图片描述

2) 使用#fdisk -l命令查看设备的连接情况,主要查看U盘的名称及文件系统类型。
在这里插入图片描述

3)使用mount命令手工挂载本地磁盘(U盘)。

mount -t vfat /dev/sdb1 /mnt/usb

4)用ls -l查看U盘中文件的详细信息。

ll /mnt/usb

5)使用umount命令手工卸载本地磁盘(U盘)。
在这里插入图片描述

实验二 Python程序运行方式和程序流程控制
一、 实验目的和要求
(一) 目的
本实验的目的是使学生熟悉Python程序运行方式和程序流程控制,在熟练掌握Python语言基础知识的基础上,能应用控制流程编写程序,培养学生对应用软件的认知、结构、设计及实施能力。
(二) 要求

  1. 能熟练掌握Python的安装、执行Python命令和脚本文件的方法、集成开发环境Pycharm。

  2. 了解Python语言的基本语法和编码规范。

  3. 掌握Python语言的数据类型、运算符、常量、变量、表达式和常用语句等基础知识。

  4. 掌握Python语言控制语句。
    二、实验内容及步骤

  5. 下载并安装Python。
    在这里插入图片描述

  6. 安装Python集成开发环境Pycharm。
    在这里插入图片描述

  7. 下载并安装至少一个第三方模块。

  8. 请编写一个程序,能接收用户输入的一个复数的实部和虚部,输出其复数表示形式,并求其模。

  9. 编写一个程序,根据输入的3个成绩,计算平均分。

  10. 输出1000以内的素数以及这些素数只和。

  11. 按公式s=12+22+32+…+n2,求累计加和,s不超过1000的最大项数n,程序运行结果如下所示:
    n s
    1 1
    2 5
    3 14
    4 30

    累计和不超过1000的最大项数是n=13

三、实验代码清单
4、

import math
x = float(input())
y = float(input())
print("复数表示形式为:"+str(x)+"+"+str(y)+"j")
mochang = math.sqrt(math.pow(x,2)+math.pow(y,2))
print(mochang)

5、

a,b,c = map(int,input().split())
sum = a + b + c
aver = sum/3
print("sum=",sum)
print("aver=",aver)

6、

sum =0
for i in range(2,1000):
    panduan = 1
    for j in range(2,i):
        if i%j ==0:
            panduan = 0
            break
    if panduan == 1:
        print(i)
        sum += i
print(sum)

7、

s = 0
flag = 0
print('程序运行如下图所示:')
print('n'+'   '+'s')
for i in range(1,1000):
    s += i*i
    if s<=1000:
        print(str(i) + "   " + str(s))
        flag = i
print("累计和不超过1000的最大项数是n="+str(flag))

四、实验运行结果
4在这里插入图片描述

5
在这里插入图片描述
6在这里插入图片描述
7在这里插入图片描述

实验三 Python函数
一、 实验目的和要求
(一) 目的
通过函数的设计,熟练掌握函数的使用,进一步了解函数的各类参数、及参数传递过程,实现减少程序的代码量,同时提高程序执行时的效率和可维护性。
(二) 要求
1. 掌握函数的定义
2. 掌握函数的调用
3. 掌握函数的形参、实参及返回值
4. 掌握位置参数
5. 掌握序列作为参数

二、实验内容及步骤

  1. 编写函数,求出一个数除1和自身以外的因子。从键盘输入一个数,调用该函数输出除1和它自身以外的所有因子。
  2. 编写两个函数,分别求两个整数的最大公约数和最小公倍数,在主函数调用这两个函数,并输出结果。两个整数由键盘输入。
  3. 编写程序,利用元组作为函数的返回值,求系列类型的最大值、最小值和元素个数,并编写测试代码。假设测试数据分别为:
    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
    提示:函数形参为系列类型,返回值形如“(最大值,最小值,元素个数)”
    三、实验代码清单
    1、
def yinzi(num):
    for i in range(2, num):
        if num % i == 0:
            print(i)

x = int(input())
print(str(x)+"的所有因子:")
yinzi(x)

2、

def zuida(x,y):
    t=0
    if x<y:
        t = x
        x = y
        y = t
    while (y !=0):
        t = x%y
        x = y
        y = t
    return x
def zuixiao(x,y):
    t = 0
    t = (x*y)/ zuida(x,y)
    return t
x = int(input())
y = int(input())
max=zuida(x,y)
min=zuixiao(x,y)
print("最大公约数:"+str(max))
print("最小公倍数:"+str(min))

3、``

def demo(x):
    z = max(x)
    y = min(x)
    f = len(x)
    print("最大值={0},最小值={1},元素个数={2}".format(z,y,f))
    return z,y,f

List1 =[9,7,8,3,2,1,55,6]
List2 =["apple","pear","melon","kiwi"]
List3 ="TheQuickBrownFox"
demo(List1)
demo(List2)
demo(List3)

四、实验运行结果
1、 在这里插入图片描述

2 在这里插入图片描述

3 在这里插入图片描述

实验四 Python面向对象程序设计
一、 实验目的和要求
(一) 目的
面向对象程序设计的方法是从日常处理问题思路中形成的一种新的设计方法。通过了解对象、类、封装、继承、方法、构造函数和析构函数等面向对象的程序设计的基本概念,掌握Python类的定义、类的方法、类的继承等,为解决复杂现实问题,培养编程能力及工程应用技能,打下坚实的基础。
(二) 要求
1. 了解面向对象的程序设计思想
2. 掌握Python对象、类、封装、继承、方法、构造函数和析构函数等.
3. 掌握Python的类的继承与组合
二、实验内容及步骤

  1. 设计一个Circle类来表示园,这个类包含圆的半径以及求周长和面积的函数。再使用这个类创建半径为1~100的圆,并计算出相应的周长及面积。
  2. 编写程序并测试,有一个汽车类Vehicle,类中的私有数据成员为车轮个数wheels和车重weight;小车类Car是汽车类vehicle派生类,其中包含载客人数passenger_load,默认4人;卡车类Truck是汽车类vehicle派生类,其中包含载客人数passenger_load和载重量payload。
    提示:编写类时要使用get和set方法,Vehicle类定义display()显示车轮和重量,Car和Truck中要对display()进行同名覆盖。
  3. 编写一个学生和教师数据输入和输出的程序。学生数据包括编号、姓名、班号、和成绩;教师的数据含有编号、姓名、职称和部门。要求设计一个person类,作为学生数据操作类student和教师数据操作类teacher的基类。

三、实验代码清单
1、

from math import pi
from random import randint
class Circle():
    def __init__(self,banjing):
        self.banjing = banjing
    def zhouchang(self):
        print(2*pi*self.banjing)
    def mianji(self):
        print(pi*self.banjing*self.banjing)
    def shuchu(self):
        print("半径为{0}的圆,周长:{0},面积:{1}".format(self.banjing,Circle.zhouchang(self),Circle.mianji(self)))

x =randint(1,100)
circle1 = Circle(x)
circle1.shuchu()

2、

class Vehicle(object):
    def __init__(self,wheels,weight):
        self.__wheels = wheels
        self.__weight = weight
    def getwheels(self):
        return  self.__wheels
    def setwheels(self,wheels):
        self.__wheels =wheels
    def setweight(self,weight):
        self.__weight = weight
    def getweight(self):
        return self.__weight
    def display(self):
        print("车有{0}个轮子,车重{1}".format(self.__wheels,self.__weight))
class Car(Vehicle):
    def __init__(self, wheels, weight,passengerload = 4):
        Vehicle.__init__(self,wheels,weight)
        self.passengerload = passengerload
    def display(self):
        print("车有{0}个轮子,车重{1},载客人数{2}人".format(self.getwheels(),self.getweight(),self.passengerload))
class Truck(Vehicle):
    def __init__(self, wheels, weight,payload,passengerload = 4):
        Vehicle.__init__(self,wheels,weight)
        self.passengerload = passengerload
        self.payload = payload
    def display(self):
        print("车有{0}个轮子,车重{1},载客人数{2}人,载重量{3}kg".format(self.getwheels(),self.getweight(),self.passengerload,self.payload))

vehicle1 = Vehicle(4 ,20)
vehicle1.display()
car1 =  Car(4,1000,4)
car1.display()
truck = Truck(6,10000,1000,2)
truck.display()

3、

class Person(object):
    def __init__(self,bianhao,xingming):
        self.bianhao =bianhao
        self.xingming = xingming
    def printing(self):
        print("我是父类")
class teacher(Person):
    def __init__(self,bianhao,xingming,zhicheng,bumen):
        Person.__init__(self,bianhao,xingming)
        self.zhicheng = zhicheng
        self.bumen = bumen
    def printing(self):
        print("编号:{0},姓名:{1},职称:{2},部门:{3}".format(self.bianhao,self.xingming,self.zhicheng,self.bumen))
class student(Person):
    def __init__(self,bianhao,xingming,banhao,chengji):
        Person.__init__(self,bianhao,xingming)
        self.banhao = banhao
        self.chengji = chengji
    def printing(self):
        print("编号:{0},姓名:{1},班号:{2},成绩:{3}".format(self.bianhao,self.xingming,self.banhao,self.chengji))

student1 = student(1,"张三",4,250)
student1.printing()
print("-"*30)
teacher1 =teacher(3,"李四","高级职称","化学")
teacher1.printing()

四、实验运行结果
1
在这里插入图片描述

2
在这里插入图片描述

3
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦森森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值