鱼C论坛

 找回密码
 立即注册
查看: 1418|回复: 3

[已解决]题卡中间了,求解

[复制链接]
发表于 2023-8-14 10:27:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Using the seek() built-in function, create a Python program to replace characters 10, 11, 12, and 13 with the characters GOOD, respectively in the file q16.txt. Note that seek(0) positions at the first character.

For example, if it contained abcdefghijklmnopqrstuvwxyz, the text should be updated to abcdefghiGOODnopqrstuvwxyz.

我的答案:
with open('q16.txt', "r+") as f:
        data = f.read()
        f.seek(10)
        f.write("GOOD")
        f.seek(11)
        f.write("GOOD")
        f.seek(12)
        f.write("GOOD")
        f.seek(13)
        f.write("GOOD")

求解

最佳答案
2023-8-14 10:52:26
本帖最后由 ba21 于 2023-8-14 10:55 编辑

注意:
seek(0)位于第 1 个字符处。
"abcdefghijklmnopqrstuvwxyz"  结果应是: "abcdefghiGOODnopqrstuvwxyz"

重点在于索引位置
with open("q16.txt", "r+") as file:
    file.seek(10-1)
    file.write("G")
    file.seek(11-1)
    file.write("O")
    file.seek(12-1)
    file.write("O")
    file.seek(13-1)
    file.write("D")

就列子中来说,索引是连续的,那么可以一次性来改写,但不知道符不符合题意:
with open("q16.txt", "r+") as file:
    file.seek(10-1)
    file.write("GOOD")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-14 10:28:31 | 显示全部楼层
你的答案基本正确,但是需要做一些修改。首先,你应该使用 r+ 模式打开文件,这样才能读取和写入文件。其次,你在每次调用 seek() 之后都需要将文件指针重置回原来的位置,否则后续的写入操作会出错。最后,你可以使用 write() 方法一次性写入字符串,而不是一个字符一个字符地写入。

下面是修改后的代码:
with open('q16.txt', 'r+') as f:
    data = f.read()
    f.seek(10)
    f.write('GOOD')
    f.seek(11)
    f.write('GOOD')
    f.seek(12)
    f.write('GOOD')
    f.seek(13)
    f.write('GOOD')
    f.seek(0)
    f.write(data)

这段代码首先使用 read() 方法读取文件的内容,并将结果保存在变量 data 中。然后,使用 seek() 方法将文件指针定位到需要替换的位置,并使用 write() 方法将字符串 GOOD 写入文件。接着,使用 seek(0) 将文件指针重置到文件开头,并使用 write() 方法将之前读取的内容重新写入文件。这样就完成了字符替换的操作。

请注意, seek() 方法的参数是以字节为单位的偏移量,所以你需要根据文件的编码方式来确定正确的位置。另外,如果文件中包含中文等多字节字符,你可能需要使用 seek() 方法的 encoding 参数来指定正确的编码方式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-14 10:28:42 | 显示全部楼层
你的答案基本上是正确的。使用 seek() 函数可以定位到文件中的特定位置,然后使用 write() 函数替换指定位置的字符。

以下是更新文件 q16.txt 的 Python 代码示例:
with open('q16.txt', 'r+') as f:
    data = f.read()
    f.seek(10)
    f.write("GOOD")
    f.seek(11)
    f.write("GOOD")
    f.seek(12)
    f.write("GOOD")
    f.seek(13)
    f.write("GOOD")

这个示例代码打开了文件 q16.txt,并使用 read() 函数读取了所有内容。然后,通过调用 seek() 函数将文件指针定位到需要替换的位置,依次使用 write() 函数写入 "GOOD"。

运行此代码后,文件 q16.txt 中的字符 10、11、12 和 13 将被替换为 "GOOD"。希望对你有所帮助!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-14 10:52:26 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ba21 于 2023-8-14 10:55 编辑

注意:
seek(0)位于第 1 个字符处。
"abcdefghijklmnopqrstuvwxyz"  结果应是: "abcdefghiGOODnopqrstuvwxyz"

重点在于索引位置
with open("q16.txt", "r+") as file:
    file.seek(10-1)
    file.write("G")
    file.seek(11-1)
    file.write("O")
    file.seek(12-1)
    file.write("O")
    file.seek(13-1)
    file.write("D")

就列子中来说,索引是连续的,那么可以一次性来改写,但不知道符不符合题意:
with open("q16.txt", "r+") as file:
    file.seek(10-1)
    file.write("GOOD")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 19:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表