Python小实验,疯狂填词

#! python
# coding: utf-8
##创建一个疯狂填词(Mad Libs)程序,它将读入文本文件,并让用户在该文本文件中出现ADJECTIVE、NOUN、ADVERB 或VERB 等单词的地方,加上他们自
#己的文本。例如,一个文本文件可能看起来像这样:
# The ADJECTIVE panda walked to the NOUN and then VERB. A nearby NOUN wasunaffected by these events.
#程序将找到这些出现的单词,并提示用户取代它们。
#Enter an adjective:
#silly
#Enter a noun:
#chandelier
#Enter a verb:
#screamed
#Enter a noun:
#pickup truck
#以下的文本文件将被创建:
#The silly panda walked to the chandelier and then screamed. A nearby pickup truck was unaffected by these events.
#结果应该打印到屏幕上,并保存为一个新的文本文件。

# 程序代码如下:
import re
f1 = open(‘a.txt‘,‘r‘)
strf1 = f1.read()
print("原文件内容为:")
print(strf1)
#将字符串以空格为分隔符生成一个列表
strf1_list = strf1.split()
#去除列表中元素结尾的逗号和句号,并获取有逗号和句号的元素索引和值保存在一个字典中
i = 0
j = {}
for strs in strf1_list:
    if ‘.‘ in strs or ‘,‘ in strs:
        j[i]=strs
        strf1_list[i] = strs[:-1]
    i += 1
print("打印出没有句号和逗号的列表")
print(strf1_list)
print("打印出有句号有逗号的元素索引和值")
print(j)
f1.close()
# 由于原文件需要被替换的单词都是大写的英文单词
#  使用正则表达式找出原文件中所有将被替换的单词
replist = re.findall(r‘[A-Z]{2,}‘,strf1)
print("原文件中将被替换的单词为:")
print(replist)
for rep in replist:
    #元音字母开头的字母提示信息不一样
    if rep[0] in ‘AEIOU‘:
        inputstr = input("Enter an %s " % rep)
    else:
        inputstr = input("Enter a %s " % rep)
    print(inputstr)
    # 先将替换后的单词插入到原列表对应的位置
    strf1_list.insert(strf1_list.index(rep),inputstr)
    # 再将原先的单词删除
    strf1_list.remove(rep)
#将上面去除逗号或句号的元素后面将逗号或句号添加回去,根据j字典可以准确找到结尾有逗号或句号的元素
for key,value in j.items():
   strf1_list[key] = str(strf1_list[key]) + str(value[-1])
# 将列表转换为字符串
newstr = ‘ ‘.join(strf1_list)
print("替换后的内容为:") #
print(newstr)
# 将新的字符串写入文件b.txt中,并打印到屏幕
f2 = open(‘b.txt‘,‘w+‘)
f2.write(newstr)
f2.close()
时间: 2024-08-07 00:08:35

Python小实验,疯狂填词的相关文章

30个Python物联网小实验5:光线感应灯

30个Python物联网小实验5:光线感应灯 光线传感器 光线变化执行函数 光线状态执行函数 30个Python物联网小实验5:光线感应灯 光线传感器 可以检测周围环境的亮度: 方向性较好,感知特定方向的亮度: 灵敏度可调,用螺丝刀旋转图中蓝色电位器即可: 工作电压:3.3v~5v 数字开关输出:0或1 设有固定螺栓孔,方便安装 光线变化执行函数 接线方法:正极接树莓派的5v正极,负极接树莓派的GND地线,信号输出针脚接GPIO18号口. 上代码: from gpiozero import Li

python小游戏之课堂提问器

今天,接着前边的python小游戏,又写了个课堂提问器小程序.供大家一乐! #coding:utf-8 from random import randint print '\033[1;32;40m', print '你好,请选择需要几位作答者?\n' print '请输入作答者的人数:', t=1 i=input() data=[] while t<=i:     r=randint(0,32)    # print m[r],     data.append(m[r])     t+=1 p

DCDC纹波小实验

关于使用示波器测试纹波的注意事项 使用示波器的AC耦合方式测量 由于示波器的头套容易引人噪声,因此在测试前必需把探头的头套去掉 因为电源的高频噪声很容易通过小电感就可以滤掉,因此更关心的是中低频的噪声.测试时将示波器的带宽限制调到尽可能的低(20MHz),避免从表笔引入噪声(我之前就吃过这方面的亏) DCDC后端接LDO AMS1117-5V的Datasheet上要求的最低压差(VIN-VOUT)为1.1V到1.25V,这就要求输入要大于5V+1.1V=6.1V,如果输入不满足这个条件会怎么样呢

初识句柄操作(控制台窗口小实验)

今日学习了控制台使用句柄操作的方法. 我们都知道,使用iostream也可以向屏幕中输出语句. 但它们只能实现基本的输入输出 操作,对于控制台窗口界面的控制却无能为力,而且不能与stdio.h和conio.h友好相处,因为iostream和它们是C++两套不同的输入. 因此,我们需要句柄类来帮助我们完成这个操作. 下面直接上练习小代码,为贪食蛇清屏的小片段. 经一番查找,习得基本用法. 1 void clrscr(void) { 2 //控制台窗口信息类型 存有缓冲区大小 当前光标位置 窗口显示

python小程序之一

来个Python小程序 #输入年月日确定这个日期是一年中的第多少天# -*- coding: UTF-8 -*-y=int(raw_input("请输入年:"))m=int(raw_input("请输入月份:"))d=int(raw_input("请输入日期:"))a=(0,31,28,31,30,31,30,31,31,30,31,30,31)if m>12: raise ValueError("输入月份错误")if

留言本小实验

实验目的: 利用PHP实现发布留言,并存在txt文本文件中,还可以从文本文件中读取留言,并显示在网页上. 实验代码: 先要用个表单提交留言,写一个简单的html如下: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2 <html xmlns="http://www

Python 小程序,对文件操作及其他

下面是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比如说,从文件中读取一行数据,分别存放于列表中,再对列表进行操作,如去掉里面的重复项,排序等操作. 常见对文件中行进行操作: #这里列出两个常用的方法 方法01: 一次性读取所有行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print l

ES6小实验-let和const(2)

继续小实验,上次写到块级作用域,那么为什么需要块级作用域呢?书中给了两个场景: 1.没有块级作用域,内层变量可能会覆盖外层变量.举例: var tmp = new Date() function f() { console.log(tmp) if(false) { var tmp = "hello world" } } f();//undefined 内层的tmp变量把外层的tmp变量覆盖,所以输出结果为undefined 2.用来计数的循环变量泄露为全局变量,举例: var s =

关于java中equals与==的区别的小实验

java中equals与==经常容易混淆,简单一点说就是equals比较的是值是否相等,是一种方法,==比较的是二者是都为同一对象,是一种操作符. 做了几个小实验比较结果. 实验一: String str1="ab": String str2="ab": System.out.println(s1==s2)://trueSystem.out.println(str1.equals(str2));//true 这里的str1与str2都指向了常量池中的同一对象,所以S