python读取输出

0 投票
5 回答
822 浏览
提问于 2025-04-16 07:54

写一个程序,让它输出用户指定文件中的第一个数字。程序的表现应该是这样的:

请输入文件名: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 来打开文件),接下来该做什么呢?第一步是弄清楚你的算法:你希望计算机做什么?

撰写回答