Python程序设计 基础代码(三)

07组合逻辑类型-列表

1.阿拉伯数字转换成拼音

利用列表实现以下功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
0: ling‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬
1: yi‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

9: jiu

输入输出
-600fu liu ling ling
#方法一
num=input()
py=['ling','yi','er','san','si','wu','liu','qi','ba','jiu']
flag=0
if num[0]=='-':
    start=1
    print('fu',end='')
    flag=1
else:
    start=0
for i in range(start,len(num)):
    if flag==1:
        print(' {}'.format(py[int(num[i])]),end='')
    else:
        print('{}'.format(py[int(num[i])]),end='')
        flag=1

#方法二
pinying = {'0':'ling','1':'yi','2':'er','3':'san',
'4':'si','5':'wu','6':'liu','7':'qi','8':'ba','9':'jiu'}
a = input()
b = len(a)-1
for i in range (b):
    if i == 0 and a[i] == '-':
        print('fu',end=' ')
    else:
        print(pinying[a[i]],end=' ')
b=pinying[a[-1]]
print(b)

2. 打印出现次数最多的数

接收一个列表,找出其中数量最多的元素,如果元素数量相同,选择列表中靠前的元素输出。

counts={}
num=input()
for i in num:
    counts[i]=counts.get(i,0)+1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
NUM,ss=items[0]
print(int(NUM))

3.列表中一位特定数字的移动

对于一个列表,在保持非零元素相对顺序的同时,将元素中所有的数字0移动到末尾。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
例如,获得输入列表 [0, 1, 0, 3, 12],输出 [1, 3, 12, 0, 0]。

x=eval(input())
a = len(x)
for i in range(a):
    if x[i] != 0:
        i+=1
    elif x[i] == 0:
         del x[i]
         x.append(0)
print(x)

08组合逻辑类型-字典

1.词频统计

请统计该文件中出现英文的词频,按照如下格式打印输出前10个高频词语:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
the , 1138‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

即:英文单词(左对齐,宽度为10)+ 逗号 + 词语出现的频率(右对齐,宽度为5)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬ ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬
要求与说明:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

1. 标点符号及组合不算作英文词语,去除的标点及特殊符号如下 !"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

3. 同一单词的各种大小写形式记作一个词,如The和the相同 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

5. 在程序中,请使用文件名打开文件:hamlet.txt
def getText():      #第一步:分解并提取英文文章的单词
    txt = open("hamlet.txt", "r").read()
    txt = txt.lower()    #将字母变成小写,同一个单词不用加以区分大小写
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
        txt = txt.replace(ch, " ")   #将文本中特殊字符替换为空格
    return txt
hamletTxt = getText()
words  = hamletTxt.split()
counts = {}
for word in words:		#第二步:使用字典,键为单词,值为词频,对每个单词进行计数	
    counts[word] = counts.get(word,0) + 1   #如果word在counts中,则返回word对应的值,如果不在返回0
items = list(counts.items())    #字典类型没有顺序,将其转换为有顺序的列表类型
items.sort(key=lambda x:x[1], reverse=True)    #第三步:对单词的统计值从高到低进行排序
for i in range(10):     #输出词频高的前10项
    word, count = items[i]
    print ("{0:<10}{1:>5}".format(word, count))

2.统计字符出现频率

由用户输入若干个数字,中间用“,”分割。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
编写程序统计这些数字的出现频率,保存为:“数字:出现的次数”。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
如果用户没有输入数字(例如:回车、字符等),系统提示“请输入一个数字。”

输入输出
1,2,3,4,3,2,5,5,5{1: 1, 2: 2, 3: 2, 4: 1, 5: 3}
try:
          numbers = input().split(',')
          count = {}
          for num in numbers:
                    count[eval(num)] = count.get(eval(num), 0) +1
          print(count)
except:
          print('请输入一个数字。')

09文件和数据格式化

1.读取文件内容

编写代码读取文件fruit.txt中的内容,并输出到屏幕上。fruit.txt可提前自定义

#方法一
file = open('fruit.txt','r')  #打开附件中的文件
#file .seek(0)                   #指针回到文件开始
for line in file :              #逐行读文件,输出默认换行
    print(line)
file .close()                   #关闭文件

#方法二
with open('fruit.txt', 'r', encoding='utf-8') as f:
    print(f.read())
    

2. 简单文件写入

将学号和姓名写入文件,test.txt可自定义

file = open('test.txt','w+',encoding='utf-8')
ls = ['学号','姓名']
file.writelines(ls)
file.close()

3.分行写入文件

分三行将你的学号、姓名、和班级信息写入文件 name.txt,然后将文件name.txt中的内容输出到屏幕上显示。

#方法1
ls = input("请输入你的学号、姓名和班级:").split(",")
#ls = ['0001','小明','16软工1班']
print(ls)
file = open('D:/name.txt','w+')
file.writelines('\n'.join(ls))
file.seek(0)
print(file.read()) 
file.close()

#方法2
file = open('name.txt','w+',encoding='utf-8')
file.write('001'+'\n') #writelines默认不换行,用此法可以实现换行
file.write('小明'+'\n')
file.write('16级软工1班'+'\n')
file.seek(0)
for line in file:
    print(line,end='')
file.close()

4.随机生成密钥

用户输入一个整数n,编程实现如下操作:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

随机生成n个密钥,每个密钥24位,由大、小写字母和数字组成,每6位用一个连字符连接。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

将每行一个密钥输出在屏幕上,同时按每行一个密钥的格式写入当前路径下key.txt中。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬
提示:可以使用string库和下面的方法获取字母和数字

import string

characters = string.ascii_letters + string.digits

random.choice(characters)	#然后在characters 中随机生成密钥所需的元素
import random
import string

def key(num):
    f = open('key.txt', 'w')
    for _ in range(num):
        keySn = []
        for i in range(4):
            s = ''
            characters = string.ascii_letters + string.digits
            for i in range(6):
                s = s + random.choice(characters)
            keySn.append(s)
        key = '-'.join(keySn)
        f.write(key + '\n')
        print(key)
    f.close()

num = int(input())
key(num)
输入输出
2VMRtTM-ZmV0vf-ASNIog-tuyNkn
.5jIPCG-nOeFJD-JSJ7NH-4zUE8C

10处理csv文件中的数据

从签到文件“0925.csv”中读取数据。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬【需要文件请私聊】

只保留有软件工程6班学生签到信息的行(注意:6班、六班之类的都是软件工程6班),将其他多余的行删除,‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

并将处理后的学生签到信息按照原有格式写入“已签到_0925_out.csv”文件中。

f=open('公共1127.csv')
ls=[]
for line in f:
          line = line.replace('\n','')
          ls.append(line.split(','))
f.close()

del ls[1] #文件第二行是空行
index =0
while index<len(ls):
           ls[index][1] = ls[index][1].replace('.','')
           #第二列是数字,不是学生姓名,则删除,并且列表元素序号不累加
           if(ls[index][1].isnumeric()== True): 
                      del ls[index]
           else: #第二行是学生签到信息,则列表元素序号累加
                      index=index+1 

f=open('公共1127_out.csv','w')
for row in ls:
          f.write(",".join(row) + "\n")
f.close()

更多实例:

Python程序设计 课程代码(一)
Python程序设计 课程代码(二)

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值