鱼C论坛

 找回密码
 立即注册
查看: 1514|回复: 9

[已解决]课后作业关于创建写入新文件

[复制链接]
发表于 2020-6-30 08:12:24 | 显示全部楼层 |阅读模式

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

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

x
请教各位学长一个关于写新文件的问题:

这个程序:
def create_file(file_name):
    f = open(file_name, 'w', encoding = 'utf-8')
    print('请输入内容, 按\':w\'保存退出: ')
    while True:
        create_file = input()
        if create_file != ':w':
            f.write('%s\n' % create_file)
        else:
            break
    f.close()
   
file_name = input('Please input file name: ')
create_file(file_name)

在‘创建’并‘打开’新文件后:
在while True循环的第一行:
create_file = input()是表示输入了
可是f.write('%s\n' % create_file)也是在文件里输入东西。

我运行程序时,在给文件起名后,感觉就是在输入了一大堆东西,不晓得什么地方输入的是 create_file = input()什么地方是 f.write('%s\n' % create_file)。
create_file = input() 与
f.write('%s\n' % create_file)
的根本区别是什么?

谢谢



最佳答案
2020-6-30 08:16:36



input 函数 接受用户输入并将其转为字符串返回,并没用写入文件之中去

f.write 是对 一个文件对象的写入,参数必须要填字符串类型,并将这个字符串写入文件当中去

单独看这些区别就很大了,一个 input 只是单纯的在代码中接受用户输入的数据并转为字符串

而 f.write 是对文件对象的写入



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-30 08:13:42 | 显示全部楼层
第一个是输入一个字符串,第二个是写入输入的字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 08:16:36 | 显示全部楼层    本楼为最佳答案   



input 函数 接受用户输入并将其转为字符串返回,并没用写入文件之中去

f.write 是对 一个文件对象的写入,参数必须要填字符串类型,并将这个字符串写入文件当中去

单独看这些区别就很大了,一个 input 只是单纯的在代码中接受用户输入的数据并转为字符串

而 f.write 是对文件对象的写入



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 08:17:15 | 显示全部楼层
input是跟用户交互,而write是程序跟系统交互。

也就是说,input是用于接收用户的输入,这一步是你程序可控的。

然后程序用write指令跟系统进行交互,写入文件,这一步是程序跟系统交互的过程,是不可控的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-30 08:24:05 | 显示全部楼层
好的,谢谢,但我运行程序时,输入文件名后,输了一大堆这个:
jflakdfas
dkfsajlsafdjfajfkdjflajldjf
fjdasjflajsfdklajf

然后按:w退出
我就不知道哪个是我在 create_file = input()输入的,
哪些是在f.write('%s\n' % create_file)下输入的。
‘%s\n’是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-30 08:26:04 | 显示全部楼层
还有,在这个程序中,create_file = input() 的作用是什么?它与f.write('%s\n' % create_file)缺一不可吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 08:47:49 | 显示全部楼层
本帖最后由 Twilight6 于 2020-6-30 08:50 编辑
mhou022 发表于 2020-6-30 08:24
好的,谢谢,但我运行程序时,输入文件名后,输了一大堆这个:
jflakdfas
dkfsajlsafdjfajfkdjflajldjf




你回复他人要点击回复,否则别人看不见你的回复


f.write('%s\n' % create_file) 是不能输入的呀,他是负责将字符串写入文本中去....

只有 input 函数 才能输入!

'%s\n'%create_file    这边就是百分号格式化,%s 为格式化字符串的占位符,将 create_file 变量的值与 %s 进行替换

而这里的 \n 就是换行符呀,没有这个 \n 文件不会自动换行导致你写入全在一行


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-30 09:05:45 | 显示全部楼层
Twilight6 发表于 2020-6-30 08:47
你回复他人要点击回复,否则别人看不见你的回复

f.write('%s\n' % create_file) 是不能输入的呀 ...

明白了,多谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 09:06:15 | 显示全部楼层

没事   客气了~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-30 09:59:05 | 显示全部楼层
又来问题了,不好意思:
这次是关于电脑执行顺序:
    while True:
        create_file = input()
        if create_file != ':w':
            f.write('%s\n' % create_file)
        else:
            break
在这个while循环中,电脑工作的顺序是怎样的。
比如我通过create_file = input()命令输入了这样一段话:

“fishC file, fishC file,
This file belongs to fishC.”

电脑是说:我输入一个字符它判断一次,还是说等我输完了以后,直到输入 ':w'退出,它才截止,将我之前输入的一股脑写入create_file里?
是说,电脑看我输入:'f',然后if判断,'f' != ':w',好的,回到循环,等我敲击下一个字符,‘i’, 电脑再将‘i’进行判断,好的,也 != ':w', 下一个, 我敲‘s’, 电脑再判断,然后
再回到while开始,以此类推?还是当我输入整个
“fishC file, fishC file,
This file belongs to fishC.”后,一起,一个字符一个字符地判断,然后再写入?

因为我的印象里:好像是在用something = input()时,在执行程序时,我们输入东西后,是点击回车,电脑才判定为输入吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 07:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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