【无标题】

编程题1:

1. 假设有一个英文文本文件birds.txt,编写一个程序读取其内容并将里面的大写字母变成小写字母,小写字母变成大写字母,输出到原文件。

程序代码:

f=open ("E:\实验报告4素材\\birds.txt","r+")

s=f.read()

a=""

for i in s:

    if "a"<=i<="z":

        a=a+i.upper()

    elif "A"<=i<= "z":

        a=a+i.lower()

    else:

        a=a+i

f.seek(0,0)

f.write(a)

f.close()

运行结果截图:

编程题2:

2.下面是一个传感器采集数据文件sensor.txt的一部分:

2018-02-28 01:03:16 19.3024 38.4629 45.08 2.68742

2018-02-28 01:03:17 19.1652 38.8039 45.08 2.68742

2018-02-28 01:03:18 19.175 38.8379 45.08 2.69964

分别表示日期、时间、温度、湿度、光照和电压。其中温度处于第3列。

编写程序,统计并输出温度部分的最大值、最小值以及平均值,保留小数点后2位。

程序代码:

f=open("E:\实验报告4素材\\sensor.txt","r+",encoding="utf-8")

ls=[]

s=f.readline()

while s:

    ls.append(float(list(s.split())[4]))

    s=f.readline()

print("最大值,最小值,平均值分别是:%.2f,%.2f,%.2f"%(max(ls),min(ls),sum(ls)/len(ls)))

f.close()

运行结果截图:

编程题3:

3.《侠客行》是金庸的重要武侠作品之一,主要叙述一个懵懂少年石破天的江湖经历。这里给出一个《侠客行》的网络版本,文件名为“侠客行-网络版.txt”。

基础中文字符的Unicode编码范围是[0x4e00,0x9fa5],请统计给定文本中存在多少该范围内的基础中文字符以及每个字符的出现次数。以如下模式(CSV格式)保存在“侠客行-字符统计.txt”文件中。示例输出中括号内是对应字符的十六进制Unicode编码形式,冒号后是出现次数,逗号两侧无空格。

输出格式

侠(0x4fa0):888, 客(0x5ba2):666, 行(0x884c):111

程序代码:

fi = open("E:\实验报告4素材\\侠客行-网络版.txt", "r", encoding='utf-8')

fo = open("E:\实验报告4素材\\侠客行-字符统计.txt", "w", encoding='utf-8')

txt = fi.read()

d = {}

for c in txt:

    if 0x4e00 <= ord(c) <= 0x9fa5: 

        d[c] = d.get(c, 0) + 1

ls = []

for key in d:

    ls.append("{}(0x{:x}):{}".format(key, ord(key),d[key]))

fo.write(",".join(ls))

fi.close()

fo.close()

运行结果截图:

编程题4:

4.编写程序随机产生 20 个长度不超过 3 位的数字,让其首尾相连以字符串形式输出,随机数种子为 17。

程序代码:

import random

n=eval(input())

random.seed(17)

for i in range(10):

    print("{}".format(random.randint(0,999)),end='')

运行结果截图:

编程题5:

5. 随机密码生成。编写程序从26个字母大小写和10个数字组成的列表中随机生成10个8位密码。

程序代码:

import random
import string
a=string.ascii_letters+string.digits
'''
a=['1','2','3','4','5','6','7','8','9',
   'a','b','c','d','e','f','g','h','i',
   'j','k','l','m','n','o','p','q','r',
   's','t','u','v','w','x','y','z',
    'A','B','C','D','E','F','G','H','I',
    'J','K','L','M','N','O','P','Q','R',
    'S','T','U','V','W','X','Y','Z']
    '''
key=[]
def getKey():
key=random.sample(a,8)
keys="".join(key)
return keys
for i in range(10):
print(getKey())

运行结果截图:

编程题6:

6.绘制红色五角星,边长100像素。

程序代码:

#Five_Star.py  

from turtle import *    

pensize(10)               

begin_fill()             

pencolor('red')      

fillcolor('yellow')        

for i in range(5):   

    fd(200)             

    right(144)             

end_fill()                 

hideturtle()               

don()

运行结果截图:

编程题7:

7.绘制正方形螺旋线,初始线段长度10像素。

程序代码:

import turtle as t

t.pen(speed=0)   

t.penup()

t.goto(-200, -200)    
t.pendown()

t.seth(0)

length = 400

while (length !=0):   

    t.fd(length)

    t.left(90)

    length -= 2.5

t.hideturtle()        

t.done()

运行结果截图:

编程题8:

8.《射雕英雄传》是金庸的重要武侠作品之一。这里给出一个《射雕英雄传》的网络版本,文件名为“射雕英雄传-网络版.txt”。

请编写程序,统计该文件出现的所有中文词语及出现次数,要求:

  1. 以CSV格式输出到文件“射雕英雄传-词频统计.txt”中。

CSV格式如下:词语1:233,词语2:564,词语3:344,……

(2)在屏幕上打印输出词频最高的8个词语。

屏幕输出格式如下:

词语1,词语2,词语3,词语4,词语5,词语6,词语7,词语8

程序代码:

fi = open("E:\实验报告4素材\\射雕英雄传-网络版.txt", "r", encoding='utf-8')

txt = fi.read()

fi.close()

ls = list(txt)

d = {}

for w in ls:

    d[w] = d.get(w, 0) + 1

for x in " \n,。!“”:":

    del d[x]

rst = []

for i in range(8):

    mx = 0

    mxj = 0

    for j in d:

        if d[j] > mx:

            mx = d[j]

            mxj = j

    rst.append(mxj)

    del d[mxj]

print(",".join(rst))

fi.close()

运行结果截图:

编程题1:

1. 假设有一个英文文本文件birds.txt,编写一个程序读取其内容并将里面的大写字母变成小写字母,小写字母变成大写字母,输出到原文件。

程序代码:

f=open ("E:\实验报告4素材\\birds.txt","r+")

s=f.read()

a=""

for i in s:

    if "a"<=i<="z":

        a=a+i.upper()

    elif "A"<=i<= "z":

        a=a+i.lower()

    else:

        a=a+i

f.seek(0,0)

f.write(a)

f.close()

运行结果截图:

编程题2:

2.下面是一个传感器采集数据文件sensor.txt的一部分:

2018-02-28 01:03:16 19.3024 38.4629 45.08 2.68742

2018-02-28 01:03:17 19.1652 38.8039 45.08 2.68742

2018-02-28 01:03:18 19.175 38.8379 45.08 2.69964

分别表示日期、时间、温度、湿度、光照和电压。其中温度处于第3列。

编写程序,统计并输出温度部分的最大值、最小值以及平均值,保留小数点后2位。

程序代码:

f=open("E:\实验报告4素材\\sensor.txt","r+",encoding="utf-8")

ls=[]

s=f.readline()

while s:

    ls.append(float(list(s.split())[4]))

    s=f.readline()

print("最大值,最小值,平均值分别是:%.2f,%.2f,%.2f"%(max(ls),min(ls),sum(ls)/len(ls)))

f.close()

运行结果截图:

编程题3:

3.《侠客行》是金庸的重要武侠作品之一,主要叙述一个懵懂少年石破天的江湖经历。这里给出一个《侠客行》的网络版本,文件名为“侠客行-网络版.txt”。

基础中文字符的Unicode编码范围是[0x4e00,0x9fa5],请统计给定文本中存在多少该范围内的基础中文字符以及每个字符的出现次数。以如下模式(CSV格式)保存在“侠客行-字符统计.txt”文件中。示例输出中括号内是对应字符的十六进制Unicode编码形式,冒号后是出现次数,逗号两侧无空格。

输出格式

侠(0x4fa0):888, 客(0x5ba2):666, 行(0x884c):111

程序代码:

fi = open("E:\实验报告4素材\\侠客行-网络版.txt", "r", encoding='utf-8')

fo = open("E:\实验报告4素材\\侠客行-字符统计.txt", "w", encoding='utf-8')

txt = fi.read()

d = {}

for c in txt:

    if 0x4e00 <= ord(c) <= 0x9fa5: 

        d[c] = d.get(c, 0) + 1

ls = []

for key in d:

    ls.append("{}(0x{:x}):{}".format(key, ord(key),d[key]))

fo.write(",".join(ls))

fi.close()

fo.close()

运行结果截图:

编程题4:

4.编写程序随机产生 20 个长度不超过 3 位的数字,让其首尾相连以字符串形式输出,随机数种子为 17。

程序代码:

import random

n=eval(input())

random.seed(17)

for i in range(10):

    print("{}".format(random.randint(0,999)),end='')

运行结果截图:

编程题5:

5. 随机密码生成。编写程序从26个字母大小写和10个数字组成的列表中随机生成10个8位密码。

程序代码:

import random
import string
a=string.ascii_letters+string.digits
'''
a=['1','2','3','4','5','6','7','8','9',
   'a','b','c','d','e','f','g','h','i',
   'j','k','l','m','n','o','p','q','r',
   's','t','u','v','w','x','y','z',
    'A','B','C','D','E','F','G','H','I',
    'J','K','L','M','N','O','P','Q','R',
    'S','T','U','V','W','X','Y','Z']
    '''
key=[]
def getKey():
key=random.sample(a,8)
keys="".join(key)
return keys
for i in range(10):
print(getKey())

运行结果截图:

编程题6:

6.绘制红色五角星,边长100像素。

程序代码:

#Five_Star.py  

from turtle import *    

pensize(10)               

begin_fill()             

pencolor('red')      

fillcolor('yellow')        

for i in range(5):   

    fd(200)             

    right(144)             

end_fill()                 

hideturtle()               

don()

运行结果截图:

编程题7:

7.绘制正方形螺旋线,初始线段长度10像素。

程序代码:

import turtle as t

t.pen(speed=0)   

t.penup()

t.goto(-200, -200)    
t.pendown()

t.seth(0)

length = 400

while (length !=0):   

    t.fd(length)

    t.left(90)

    length -= 2.5

t.hideturtle()        

t.done()

运行结果截图:

编程题8:

8.《射雕英雄传》是金庸的重要武侠作品之一。这里给出一个《射雕英雄传》的网络版本,文件名为“射雕英雄传-网络版.txt”。

请编写程序,统计该文件出现的所有中文词语及出现次数,要求:

  1. 以CSV格式输出到文件“射雕英雄传-词频统计.txt”中。

CSV格式如下:词语1:233,词语2:564,词语3:344,……

(2)在屏幕上打印输出词频最高的8个词语。

屏幕输出格式如下:

词语1,词语2,词语3,词语4,词语5,词语6,词语7,词语8

程序代码:

fi = open("E:\实验报告4素材\\射雕英雄传-网络版.txt", "r", encoding='utf-8')

txt = fi.read()

fi.close()

ls = list(txt)

d = {}

for w in ls:

    d[w] = d.get(w, 0) + 1

for x in " \n,。!“”:":

    del d[x]

rst = []

for i in range(8):

    mx = 0

    mxj = 0

    for j in d:

        if d[j] > mx:

            mx = d[j]

            mxj = j

    rst.append(mxj)

    del d[mxj]

print(",".join(rst))

fi.close()

运行结果截图:

编程题1:

1. 编写一个函数fun(s),参数为字符串s,计算字符串中数字、字母、空格以及其他字符的个数,并返回个数。

程序代码:

s=input()

def fun(s):

    a=b=c=d=0

    for i in range(len(s)):

        if s[i]>="a"and s[i]<="z" or s[i]>="A"and s[i]<="Z":

            a=a+1

        elif s[i]>="0"and s[i]<="9":

            b=b+1

        elif s[i]==" "or s[i]=="":

            c=c+1

    else:

        d=d+1

    return(a,b,c,d)

print(fun(s))

运行结果截图:

编程题2:

2. 编写一个函数fun(s),参数为一个字符串s,如果这个字符串属于整数、浮点数或复数的表示,则返回True,否则返回False。

程序代码:

s=eval(input())

def fun(s):

    try:

        if type(s)==float or type(s)==int or type(s)==complex:

            return True

        else:

            return False

    except:

        return False

print(fun(s))

运行结果截图:

 

编程题3:

3. 实现函数fun(r,pi=3.14),设置可选参数,返回圆的周长及面积值。

程序代码:

r=eval(input())

def fun(r,pi=3.14):

    c=2*pi*r

    s=pi*r**2

    return(c,s)

print(fun(r,pi=3.14))

运行结果截图:

编程题4:

4. 编写函数gcd(m,n),计算并返回参数m和n的最大公约数和最小公倍数。

程序代码:

m,n=eval(input("请输入俩个数:"))

def gcd(m,n):

    a,b=max(m,n),min(m,n)

    while b:

        a,b=b,a%b

    gcd_num=a

    lcm_num=m*n//gcd_num

    return gcd_num,lcm_num

print (gcd(m,n))

运行结果截图:

编程题5:

5. 凯撒加密。凯撒加密是简单的消息编码方式,将字母移动常量位K。用户输入明文字符串,系统输出凯撒加密后的密文。例如设置常量K=3,输入字符串abcABZ, 输出凯撒加密后:defDEC。

编写函数Caesar(s,k),参数s表示明文字符串,k表示移动位数,计算并返回凯撒加密后的密文字符串。

程序代码:

k=eval(input("请输入字母移动常量位:"))

s=input("请输入原文:")

def Caesar(s,k):

    a=""

    for ch in s:

        if 'a'<=ch<='z':

            s=chr(ord('a')+(ord(ch)+k-ord('a'))%26)

        elif 'A'<=ch<='Z':

            s=chr(ord('A')+(ord(ch)+k-ord('A'))%26)

        else:

            s=ch

        a=a+s

    return a

print(Caesar(s,k))

运行结果截图:

编程题1:

1. 编写一个函数fun(s),参数为字符串s,计算字符串中数字、字母、空格以及其他字符的个数,并返回个数。

程序代码:s=input()

def fun(s):

    a=b=c=d=0

    for i in range(len(s)):

        if s[i]>="a"and s[i]<="z" or s[i]>="A"and s[i]<="Z":

            a=a+1

        elif s[i]>="0"and s[i]<="9":

            b=b+1

        elif s[i]==" "or s[i]=="":

            c=c+1

    else:

        d=d+1

    return(a,b,c,d)

print(fun(s))

           

运行结果截图:

编程题2:

2. 编写一个函数fun(s),参数为一个字符串s,如果这个字符串属于整数、浮点数或复数的表示,则返回True,否则返回False。

程序代码:s=eval(input())

def fun(s):

    try:

        if type(s)==float or type(s)==int or type(s)==complex:

            return True

        else:

            return False

    except:

        return False

print(fun(s))

运行结果截图:

编程题3:

3. 实现函数fun(r,pi=3.14),设置可选参数,返回圆的周长及面积值。

程序代码:r=eval(input())

def fun(r,pi=3.14):

    c=2*pi*r

    s=pi*r**2

    return(c,s)

print(fun(r,pi=3.14))

运行结果截图:

编程题4:

4. 编写函数gcd(m,n),计算并返回参数m和n的最大公约数和最小公倍数。

程序代码:def gcd(m,n):

    if m<n:

        m,n=n,m

    r=m%n

    while r!=0:

        m,n=n,r

        r=m%n

    return n

print(gcd(36,24))

运行结果截图:

编程题5:

5. 凯撒加密。凯撒加密是简单的消息编码方式,将字母移动常量位K。用户输入明文字符串,系统输出凯撒加密后的密文。例如设置常量K=3,输入字符串abcABZ, 输出凯撒加密后:defDEC。

编写函数Caesar(s,k),参数s表示明文字符串,k表示移动位数,计算并返回凯撒加密后的密文字符串。

程序代码:s=input("请输入字符串:")

k=eval(input("请输入位移量:"))

def Caesar(s,k):

    for i in s:

        if "a"<=i<="z":

            s=chr((ord(i)-97+k)%26+97)

        elif "A"<=i<="Z":

            s=chr((ord(i)-65+k)%26+65)

        else:

            s=i

print(Caesar(s,k))

运行结果截图:

五、实验总结:学会编写fun函数,加强掌握凯撒加密

1、实验中需要注意的事项

注意区分大小写,中英文状态

2、存在问题与改进措施

知识点运用不灵活

3、个人小结

多做题,多看书

                                                                

编程题1:

1. 输入平面坐标系的两个点的坐标,计算两点之间的距离,使用适当的形式输出,结果保留两位小数。计算公式为d=(x1-x2)2+(y1-y2)2

程序代码:

a,b,c,m=eval(input("请输入两个点的坐标:"))

d=((a-c)**2+(b-m)**2)**0.5

print(round(d,2))

运行结果截图:

编程题2:

2.输出一个数值123456.789,使用格式如下:数值宽度为30、增加千分位分隔符、居中对齐方式,并使用”+”填充。

程序代码:

n=123456.789

print("{0:+^30}".format(n))

运行结果截图:

编程题3:

3.给定一个数值0x4321,请依次输出该数的十六进制、十进制、八进制、二进制的表示形式,用逗号隔开。

程序代码:

n=0x4321

print("{0:x},{0:d},{0:o},{0:b}".format(n))

运行结果截图:

编程题4:

4.某公司员工的工资计算方法如下:

(1)工作时数超过120小时者,超过部分加发15%。

(2)工作时数低于60小时者,扣发700元。

(3)其余按每小时80元计发。

输入员工的工作时数,计算应发工资。

程序代码:

n=eval(input("请输入员工的工作时数:"))

if n<60:

    s=80*n-700

elif 60<=n<120:

    s=80*n

else:

    s=80*120+(n-120)*(1+0.15)

print(s)

运行结果截图:

编程题5:

5.从键盘输入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其他字符的个数。

程序代码:

a,n,s,o=0,0,0,0

c=input("请输入一行字符:")

for i in c:

    if "a"<=i<="z"or"A"<=i<="Z":

        a=a+1

    elif "0"<=i<="9":

        n=n+1

    elif i==" ":

        s=s+1

    else:

        o=o+1

print("英文字符数{},数字字符数{},空格字符数{},其他字符数{}".format(a,n,s,o))

运行结果截图:

编程题6:

6. 凯撒加密。凯撒加密是简单的消息编码方式,将字母移动常量位K。用户输入明文字符串,系统输出凯撒加密后的密文。例如设置常量K=3,输入字符串abcABZ, 输出凯撒加密后:defDEC。

程序代码:

a=input ("请输入一段字符:")

k=eval (input("请输入位移量:"))

for i in a:

    if "a"<=i<="z":

        s=chr((ord(i)-97+k)%26+97)

    elif "A"<=i<="Z":

        s=chr((ord(i)-65+k)%26+65)

    else:

        s=i

    print(s,end="")

运行结果截图:

编程题7:

7. 系统随机产生一个1000以内的正整数,让用户输入所猜的数字。如果用户输入的数字大于目标数字,显示“猜大了”,继续猜测;如果小于目标数字,显示“猜小了”,继续猜测;如此循环,直至猜中该数。统计猜数的次数。

程序代码:

count=0

import random

target=random.randint(1,1000)

while True:

    guess=eval(input("输入一个整数:"))

    if guess<target:

        print("猜小了")

        count=count+1

    elif guess>target:

        print("猜大了")

        count=count+1

    else:

        print("猜对了")

        count=count+1

        break

    print(count)

       

运行结果截图:

编程题8:

8.输入两个整数,用辗转相除法计算两数的最大公约数和最小公倍数。

程序代码:

a=eval(input("请输入一个数:"))

b=eval(input("请输入另一个数:"))

if a<b:

    a,b=b,a

s=a*b

c=a%b

while c!=0:

    a=b

    b=c

    c=a%b

print("最大公约数为:{},最小公倍数为:{}。".format(b,int(s/b)))

运行结果截图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值