python读取输出
写一个程序,让它输出用户指定文件中的第一个数字。程序的表现应该是这样的:
请输入文件名:l11-1.txt
第一个数字是20。
你需要使用文件对象的方法 .read(1) 来一次读取一个字符,并用字符串对象的方法来检查这个字符是否是数字。如果文件里没有数字,程序应该这样反应:
请输入文件名:l11-2.txt
l11-2.txt 中没有数字。
为什么一次读取一个字符的方式比一次性调用 .read() 然后用循环处理结果字符串要更好呢?
我有这些文件,它们的内容和上面的答案是对应的,但我不太确定怎么让程序正确输出。
我现在的代码如下:
filenm = raw_input("Enter a file name: ")
datain=file(filenm,"r")
try:
c=datain.read(1)
result = []
while int(c) >= 0:
result.append(c)
c = datain.read(1)
except:
pass
if len(result) > 0:
print "The first number is",(" ".join(result))+" . "
else:
print "There is no number in" , filenm + "."
到目前为止,这段代码可以打开文件并读取内容,但输出总是显示没有数字,即使文件里有数字。有人能帮我吗?
5 个回答
0
你最后那一行代码是循环读取文件中的每一行,这听起来不是老师想要的——老师希望你只读取一个字符。文件对象有一个 .read()
方法,可以让你指定要读取多少个字节,所以:
c = datain.read(1)
这段代码会把一个字符读进一个字符串里。然后你可以用 .isdigit()
方法来判断这个字符是不是数字:
c.isdigit()
听起来你应该一直读取数字,直到没有数字可读为止,然后把它们都连接在一起;如果你读到的第一个字符不是数字(也就是 c.isdigit()
返回 False
),你就应该报错。
0
你的 datain
变量是一个文件对象。你可以用它的 .read(1)
方法一次读取一个字符。可以看看这个 字符串方法,找一个可以告诉你字符串是否是数字的方法。
1
好的,你得到了以下一些指示:
- 从用户那里读取一个字符串输入
- 打开由这个字符串指定的文件
.read(1)
每次读取一个字符,直到找到第一个数字或者文件结束- 打印这个数字
你已经完成了前两部分(不过你应该用 open
而不是 file
来打开文件),接下来该做什么呢?第一步是弄清楚你的算法:你希望计算机做什么?