c******2 发帖数: 957 | 1 首先多谢各位热心解答,我根本没想过一行代码就可以解决我尝试了很久、写了5、6行
却总是不能正确运行的程序。。。膜拜。。。
新问题来了。。我先把原题贴出来,大家看看我理解的对不对
Make a function out of the previous programming assignment that takes a
string as a parameter and returns its acronym. Then write a program that
asks the user to input two file names. It then opens the first file and
for
the string on each of its lines makes an acronym using the function, and
writes the acronyms in the second file, one per line.
把上次的题用函数表达出来。然后写一个program,让用户输入两个文件名,它能打开第
一个文件;对它每一行的字符串使用上述函数,以求出每个单词首字母,把结果一行一
个输出,此为第二个文件。
如果我理解的没有错,第二个文件应该是套在第一个文件的下一层的。但是当我首先写
了def main():
再把之前的代码贴进去,还没来得及回车到下一行继续写,已经出现错误不给我继续了
。。。哭。。。
想请大家帮忙解答一下,是不是不需要重新把之前的代码再放进去,直接import吗?但
是import书上的套路貌似也用不对,很烦很纠结呀!根本都不能继续下面第二个文件了!
求助求助呀!!如果问题太小白,还望高手见谅海涵! | l********a 发帖数: 1154 | 2 直接上次的当函数就行了,
#! /usr/bin/env python
def getAcronym(s):
return ''.join([x for x in s.title() if x.isupper()])
# main entry
fnin = raw_input('Please specify the input filename:\n')
fnout = raw_input('Please specify the output filename:\n')
sout = ''
if len(fnin.strip())>0 and len(fnout.strip())>0:
fin = open(fnin,'r')
for sline in fin.readlines():
sout += getAcronym(sline)+'\n'
fin.close()
fout = open(fnout,'w')
fout.write(sout)
fout.close()
print 'Done'
else:
print 'Please check the input!'
#=测试
IDLE 2.6.6 ==== No Subprocess ====
>>>
Please specify the input filename:
test.py
Please specify the output filename:
test.txt
Done
>>> | c******2 发帖数: 957 | 3
您用的版本是不是和我不一样的?我的是python3.2
因为我输进去之后,有好些地方说SyntaxError: inconsistent use of tabs and
spaces in indentation不知道是怎么回事呀。。。
如果有时间,能不能麻烦您也帮忙看看我和同学讨论出来的还是有错误的一段代码:
def main():
print("Please input the filename to read: ")
f2read=input()
print("Please input the filename to write: ")
f2write=input()
f1=file(f2read, "r")
f2=file(f2write, "w")
def acronym(string):
p=string.split("")
for word in p:
s+=(word[0].upper())
return s
lines=f1.readlines()
for line in lines:
f2.write(acronym(line))
f2.write( )
f2.close()
f1.close()
说是NameError: global name 'file' is not defined
谢谢啦
【在 l********a 的大作中提到】 : 直接上次的当函数就行了, : #! /usr/bin/env python : def getAcronym(s): : return ''.join([x for x in s.title() if x.isupper()]) : # main entry : fnin = raw_input('Please specify the input filename:\n') : fnout = raw_input('Please specify the output filename:\n') : sout = '' : if len(fnin.strip())>0 and len(fnout.strip())>0: : fin = open(fnin,'r')
| l********a 发帖数: 1154 | 4 我是2.6.6
3.x改了不少东西
另,你还没明白函数的意义,嵌套显得无比乱,而且不确定在python可行
NameError: global name 'file' is not defined
是说file()没这个函数?3.x我没用过啊 | p******g 发帖数: 347 | 5 你这是家庭作业还是自己学呢.看你的描述如果这是作业你上课根本就没听懂.要是自学
你看起来完全没有编程经验还是从头来吧.找个男朋友教你,有人手把手教上手最快
【在 c******2 的大作中提到】 : 首先多谢各位热心解答,我根本没想过一行代码就可以解决我尝试了很久、写了5、6行 : 却总是不能正确运行的程序。。。膜拜。。。 : 新问题来了。。我先把原题贴出来,大家看看我理解的对不对 : Make a function out of the previous programming assignment that takes a : string as a parameter and returns its acronym. Then write a program that : asks the user to input two file names. It then opens the first file and : for : the string on each of its lines makes an acronym using the function, and : writes the acronyms in the second file, one per line. : 把上次的题用函数表达出来。然后写一个program,让用户输入两个文件名,它能打开第
| c******2 发帖数: 957 | 6
男朋友也不会阿....
【在 p******g 的大作中提到】 : 你这是家庭作业还是自己学呢.看你的描述如果这是作业你上课根本就没听懂.要是自学 : 你看起来完全没有编程经验还是从头来吧.找个男朋友教你,有人手把手教上手最快
| l********a 发帖数: 1154 | 7 always learn python with documentation and library
【在 c******2 的大作中提到】 : : 男朋友也不会阿....
| m*********n 发帖数: 28 | 8 离
【在 c******2 的大作中提到】 : : 男朋友也不会阿....
| m*********n 发帖数: 28 | 9 do u know python don't use "{" or "}" to delimit a function, but use
idention (tab or space). and the ident must be consistent, if you use tab,
use tab everywhere. otherwise, use space everywhere. and lines that are at
the same layer of logic must have the same amount of indention? after you
copy/paste code from bbs, you must make sure your indent is correct.
also, that guy's code is missing __main__. i think it's better for u to look
at the python doc on how to define a function, and what's a __main__
function
as for your own code, what does this line mean: f1=file(f2read, "r")? is
there a function (your definition or python build-in function) named file?!
use open function, replace file with open, to open a file.
i am wondering what course are you taking?
【在 c******2 的大作中提到】 : : 男朋友也不会阿....
| w****i 发帖数: 964 | 10 main不main的无所谓。python是multi paradigm
那些流行写法里前面定义class后面来个if __name__ == "__main__"的格式其实很丑陋
file()是constructor, python2x里效果和open()一样,不过不是推荐的用法
你连这都没整明白就开始给别人上课了
look
!
【在 m*********n 的大作中提到】 : do u know python don't use "{" or "}" to delimit a function, but use : idention (tab or space). and the ident must be consistent, if you use tab, : use tab everywhere. otherwise, use space everywhere. and lines that are at : the same layer of logic must have the same amount of indention? after you : copy/paste code from bbs, you must make sure your indent is correct. : also, that guy's code is missing __main__. i think it's better for u to look : at the python doc on how to define a function, and what's a __main__ : function : as for your own code, what does this line mean: f1=file(f2read, "r")? is : there a function (your definition or python build-in function) named file?!
| l********a 发帖数: 1154 | 11 这个说if __name__=='__main__'丑陋不敢苟同
python的模块化管理非常简洁,我觉得优于其他语言的
一个py既可以是函数(实现某个功能),也可以是程序(一句一句写下去),还可以是模块(
函数,变量的集合)
这个时候,if __name__=='__main__':就有用了
可以用来做unit test,非常方便,
test代码放在这个if下面,直接运行此py,会运行test代码,方便查错
如果被其他文件import,又不需要修改这个模块文件,因为被import后不会运行测试代码
,很方便
【在 w****i 的大作中提到】 : main不main的无所谓。python是multi paradigm : 那些流行写法里前面定义class后面来个if __name__ == "__main__"的格式其实很丑陋 : file()是constructor, python2x里效果和open()一样,不过不是推荐的用法 : 你连这都没整明白就开始给别人上课了 : : look : !
| w****i 发帖数: 964 | 12 我知道这么写的目的。但是有用不代表不丑陋
【在 l********a 的大作中提到】 : 这个说if __name__=='__main__'丑陋不敢苟同 : python的模块化管理非常简洁,我觉得优于其他语言的 : 一个py既可以是函数(实现某个功能),也可以是程序(一句一句写下去),还可以是模块( : 函数,变量的集合) : 这个时候,if __name__=='__main__':就有用了 : 可以用来做unit test,非常方便, : test代码放在这个if下面,直接运行此py,会运行test代码,方便查错 : 如果被其他文件import,又不需要修改这个模块文件,因为被import后不会运行测试代码 : ,很方便
| l********a 发帖数: 1154 | 13 我其他语言不是很熟,对了,别打如果要unit test是不是得专门写段程序啊?请教下
【在 w****i 的大作中提到】 : 我知道这么写的目的。但是有用不代表不丑陋
|
|