所以这是我需要为这个类做的以下问题,我可以轻松地做到但我们不允许使用readline或read,只有for循环:
湾编写一个程序,从用户那里获取两个文件名 - 一个用于 输入(我们将使用poem.txt和suess.txt作为测试文件)和一个用于 输出。然后程序读取指定的输入文件并创建 包含输入中每五个字符的新输出文件 仅当该字符是字母时才归档。另外,这个角色 如果它是元音,则应为大写;如果是元音,则应为小写 辅音。最后,该程序应输出统计数据 改动的文字,包括:
•字符数•辅音数•数量 元音
例如,如果输入文件包含:
Do you like green eggs and ham? I like them, Sam I am! Do you like green eggs and ham, Sam? Do you like them, Sam I am?
然后输出文件应为:OkEgnmltIOkEgnmmltI
字符数: 19辅音数:13元音数:6
这是我到目前为止所得到的(忽略文件占位符):
#init vars
vowels = 'aeiou'
cons = 'bcdfghjklmnpqrstvwxyz'
noVowels = 0
noCons = 0
noChars = 0
i = 0
#Get input and output files
#usrIn = input("Input File: ")
#usrOut = input("Output File: ")
#File Manage
fi = open('suess.txt', 'r')
fo = open('test.txt', 'w')
#For loop
for line in fi:
if (line[i+4].lower() in vowels):
noVowels += 1
fo.write(line[i+4].upper())
elif (line[i+4].lower() in cons):
noCons += 1
fo.write(line[i+4].lower())
#Output stats
noChars = noCons + noVowels
print("The number of characters: {}".format(noChars))
print("The number of consonants: {}".format(noCons))
print("The number of vowels: {}".format(noVowels))
#close files
fi.close()
fo.close()
我已经尝试过增加' i'但它会产生错误的输出,我想这是因为它只会增加“我”。在线已经读完之后,这显然是错误的。我需要它来获取该行中的每个第5个字符,然后从下一行的第5个字符开始。 请帮助!
答案 0 :(得分:1)
您可以将范围功能与for循环一起使用:
text = "Do you like green eggs and ham? I like them, Sam I am! Do you like green eggs and ham, Sam? Do you like them, Sam I am?"
transform = ''
for l in range(4, len(text), 5):
transform += text[l]
#remove spaces (as your example).
transform = transform.replace(' ', '')
答案 1 :(得分:0)
使用以下方法:
info = {
'vowels': 'aeiou',
'cons': 'bcdfghjklmnpqrstvwxyz',
'noVowels': 0,
'noCons': 0,
'noChars': 0
}
with open("suess.txt", 'r') as fh:
text = list(''.join([l for l in fh]))
output = ''
for k, v in enumerate(text):
if ((k+1) % 5) == 0 and v.lower() in info['vowels'] + info['cons']:
if v in info['cons']:
info['noCons'] += 1
else:
info['noVowels'] += 1
v = v.upper()
output += v
fh.close()
print(output)
print("The number of characters: {}".format(info['noCons'] + info['noVowels']))
print("The number of consonants: {}".format(info['noCons']))
print("The number of vowels: {}".format(info['noVowels']))
输出:
OkEgnmltIOkEgnmmltI
The number of characters: 19
The number of consonants: 13
The number of vowels: 6