2020-11-30


1  从键盘输入 两数, 求其小公倍数和最大公因子。

2  分别以文本和二进制方式 写入 1,2,3,4,5  这些数据,并读出显示, 最后求取这些数据的平均值。

3 给定一矩阵[ 1.0   2.0   3.0   4.0
                       5.0  6.0   7.0   8.0  ]

    数据,将此矩阵写入文件,然后分别按行列读出并显示。

4 将全班同学的数据由excel 文件读出,写入csv 文件中。 全班同学的数据由班长汇集,有学号,姓名,性别,年龄,籍贯。

5 将全班同学数据写入 sqlite3 数据库, 并 按性别, 年龄和 籍贯进行统计显示。

import numpy as np
import pandas as pd
import csv
import os
import sqlite3
def fun1():
    print("第一题")
    num1=eval(input("请输入1个整数:"))
    num2=eval(input("请输入1个整数:"))
    if num1<num2:
        t=num1
        num1=num2
        num2=t
    t=gcd(num1,num2)
    print("最大公约数为:{}".format(t)) #输出
    print("最小公倍数为:{}".format(num1*num2/t))


def gcd(a,b):   #辗转相除法求最大公因数
    return a if b==0 else gcd(b,a%b)

def fun2():
    print("第二题")
    li1=['1','2','3','4','5']
    li2=['001','010','011','100','101']
    sum=0
    for i in li1:   #遍历求和
        sum+=int(i)
    t=sum/len(li1)
    print("文本输入的平均值为:{}".format(t))
    sum=0
    for i in li2:
        t=0
        for j in range(len(i)):     #二进制计算十进制
            t+=int(i[-1-j])*pow(2,j)
        sum+=t      #求和
    print("二进制输入的平均值为:{}".format(sum/len(li2)))

def fun3():
    li=np.array([[1.0,2.0,3.0,4.0],[5.0,6.0,7.0,8.0]])      #创建矩阵
    fo=open("suger.txt",'w+')
    for i in li:                        #读取每行
        for j in range(len(i)):         #遍历每个元素
            fo.write(str(i[j]))         #写入文件
            if j<len(i)-1:              #不是最后一个以空格分开
                fo.write(' ')
            else:                       #矩阵一行结束,换行
                fo.write('\n')
    fo.close()
    fo=open("suger.txt",'r')
    for data in fo:
        print(data,end='')              #输出每行,因为写入的时候有换行,所以输出不要换行,以end=‘’结尾
    fo.close

def openFile():
    path =os.getcwd()
    filePath = path+'\.vscode\python-班级同学信息.xlsx'
    #数据获取与处理
    data = pd.read_excel(filePath)
    dataList = np.array(data).tolist()
    return dataList

def fun4():
    dataList=openFile()
    # print(dataList)
    fo=open("班级同学信息.csv",'w+',encoding='utf-8',newline="")
    cw = csv.writer(fo)
    for data in dataList:
        cw.writerow(data)
    fo.close

def fun5():
    conn = sqlite3.connect('python.db')                                                 # 建立数据库连接
    c = conn.cursor()                                                                   # 创建游标

    print("连接成功")
    c.execute('''drop table student''')                                                                               # 执行 sql 语句创建表格
    c.execute('''create table student                                                   
        (ID        int primary key NOT NULL,
            NAME      varchar(10) NOT NULL,
            SEX       varchar(2)  NOT NULL,
            Age       int  NOT NULL,
            Province  varchar(10) NOT NULL);''') 
    print("表创建成功")

    conn.commit()                                                                        # 提交事务

    dataList=openFile()
    # 插入数据
    dic=dict()
    for data in dataList:
        if data[2] in dic:
            dic[data[2]]+=1
        else:
            dic[data[2]]=1
        if data[3] in dic:
            dic[data[3]]+=1
        else:
            dic[data[3]]=1
        if data[4] in dic:
            dic[data[4]]+=1
        else:
            dic[data[4]]=1

        c.execute("insert into student values ({},'{}','{}',{},'{}')".format(data[0],data[1],data[2],data[3],data[4]))

    print("插入成功")

    cursor = c.execute("select ID,NAME,Sex,Age,Province from student order by Sex,Age,Province ")       # 执行语句搜索结果

    for row in cursor:                                                                                  #  输出查询结果 

        print(row[0], row[1], row[2],row[3],row[4])

    print("查询成功")
    print(dic)
    conn.close()                                                                                        # 关闭连接


if __name__=='__main__':
    fun1()
    fun2()
    fun3()
    fun4()
    fun5()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值