mhou022 发表于 2020-6-30 08:12:24

课后作业关于创建写入新文件

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

这个程序:
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)
的根本区别是什么?

谢谢



qiuyouzhi 发表于 2020-6-30 08:13:42

第一个是输入一个字符串,第二个是写入输入的字符串

Twilight6 发表于 2020-6-30 08:16:36




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

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

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

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



heidern0612 发表于 2020-6-30 08:17:15

input是跟用户交互,而write是程序跟系统交互。

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

然后程序用write指令跟系统进行交互,写入文件,这一步是程序跟系统交互的过程,是不可控的。

mhou022 发表于 2020-6-30 08:24:05

好的,谢谢,但我运行程序时,输入文件名后,输了一大堆这个:
jflakdfas
dkfsajlsafdjfajfkdjflajldjf
fjdasjflajsfdklajf

然后按:w退出
我就不知道哪个是我在 create_file = input()输入的,
哪些是在f.write('%s\n' % create_file)下输入的。
‘%s\n’是什么意思?

mhou022 发表于 2020-6-30 08:26:04

还有,在这个程序中,create_file = input() 的作用是什么?它与f.write('%s\n' % create_file)缺一不可吗?

Twilight6 发表于 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 文件不会自动换行导致你写入全在一行


mhou022 发表于 2020-6-30 09:05:45

Twilight6 发表于 2020-6-30 08:47
你回复他人要点击回复,否则别人看不见你的回复

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

明白了,多谢{:10_282:}

Twilight6 发表于 2020-6-30 09:06:15

mhou022 发表于 2020-6-30 09:05
明白了,多谢

没事   客气了~~~

mhou022 发表于 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()时,在执行程序时,我们输入东西后,是点击回车,电脑才判定为输入吧?
页: [1]
查看完整版本: 课后作业关于创建写入新文件