Python编写程序,打开一篇英文文章(存在当前目录下的文件intxt中),为该文章生成词汇表(存到当前目录下的另一个文件wordstx t中)。文章中单词指的是只由小写或大写字母组成的字符串,但词汇表中的单词都是以小写字母的形式出现,若文章中出现多个大小写无关的相同单词,只在词汇表中生成一个单词。假设生成的词汇表中单词个数不会超过100个,且每个单词的长度不会超过20。词汇表中的单词以字典顺序由小到大存放。 【输入形式】 输入的英文文章存储在当前目录下的文件intxt中。 【输出形式】 输出的词汇表存储到当前目录下的文件wordstxt中,每个单词独占一行,以字典顺序由小到大存
时间: 2024-01-22 22:18:26 浏览: 95
以下是Python代码实现:
```python
import string
# 读取文章
with open('intxt', 'r') as f:
content = f.read()
words = set() # 用set存储单词,可以去重
# 将文章中的单词加入set中
for word in content.split():
# 去除单词中的标点符号和数字
word = word.translate(str.maketrans('', '', string.punctuation + string.digits))
# 将单词转换为小写
word = word.lower()
words.add(word)
# 将set中的单词按字典序排序
words = sorted(words)
# 将单词写入文件
with open('wordstxt', 'w') as f:
for word in words:
f.write(word + '\n')
```
以上代码先读取文章,然后使用set存储单词,可以自动去重。在将单词加入set前,需要先将单词中的标点符号和数字去除,并将单词转换为小写形式。最后将set中的单词按字典序排序,并写入到文件中。
相关问题
#include “stdio.h” int maino intxt=1.x2=0.x3-0; if(x1=x2+x3) printf("");
你好,看起来你提供了一个不完整的C程序片段,我看到了一些语法错误。首先,`maino`应该是`main()`, 另外变量名应该以字母开头,`.`用于表示小数点,但在这里似乎被误解为分隔符。此外,比较运算符应该用`==`而不是`=`, 并且`printf()`后面缺少括号。
正确的代码可能是这样的:
```c
#include <stdio.h>
int main()
{
int x1 = 1, x2 = 0, x3 = 0;
if (x1 == x2 + x3) // 使用等于运算符(==)
{
printf("x1 equals x2 plus x3\n"); // 添加字符串参数
}
else
{
printf("x1 does not equal x2 plus x3\n");
}
return 0; // 结束main函数
}
```
这个程序会检查`x1`是否等于`x2`和`x3`的和,并根据结果输出相应信息。
如果你的问题不是关于这个具体的修复,而是关于其他概念,请告诉我。如果想了解`#include`语句、条件语句或printf函数的工作原理,我可以进一步解释。
#include "stdio.h" int maino intxt=1.x2=0.x3-0; if(x1=x2+x3) printf("**x*); else printf(“#并井#”); return 0;
这段C程序首先包含了`stdio.h`头文件,然后定义了一个名为`main`的主函数。在主函数内部,有三个变量`x1`, `x2`, 和`x3`被声明为整型并且赋值为1, 0, 和0,分别。
接下来的`if`语句尝试比较`x1`是否等于`x2`加上`x3`的结果。由于在C语言中,`.`运算符用于访问对象成员(如在结构体或类中),而这里的`.`并没有连接到任何对象,所以它会被当作`.`运算符来解析,而不是指代数组下标或者对象属性。因此,`x1 = x2 + x3`这部分实际上是错误的语法,编译时可能会报错。
正确的写法可能是使用加号`+`来执行加法操作:
```c
if (x1 == (x2 + x3))
```
或者如果这里想对`x1`、`x2`和`x3`进行求和后再做比较,可以这样写:
```c
int sum = x1 + x2 + x3;
if (x1 == sum)
```
至于输出,原始代码中的`**x*`和`“#并井#”`分别是两个字符串常量,它们之间应该用逗号分隔。修复后的正确输出应该是:
```c
if (x1 == (x2 + x3)) {
printf("**x*");
} else {
printf("#并井#");
}
```
阅读全文