鱼C论坛

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

[已解决]第29讲的程序题

[复制链接]
发表于 2020-2-12 17:02:45 | 显示全部楼层 |阅读模式

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

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

x
  1. def file_write(file_name):
  2.     f = open(file_name, 'w')
  3.     print('请输入内容【单独输入\':w\'保存退出】:')

  4.     while True:
  5.         write_some = input()
  6.         if write_some != ':w':
  7.             f.write('%s\n' % write_some)
  8.         else:
  9.             break

  10.     f.close()

  11. file_name = input('请输入文件名:')
  12. file_write(file_name)
复制代码


这样写write_some = input()
            if write_some != ':w':可以对每一行进行检查吗,但是input函数不是把输入的所有当成一个字符串吗?
最佳答案
2020-2-12 17:22:35
素手就琴 发表于 2020-2-12 17:19
想再请问一下哈,为什么换行就是结束当前输入操作而不是换行继续输入没输入完的字符串呢

换行就是结束输入,没法继续输入。
要实现输入换行的内容也可以用 "\n" 分隔,但是就是不能在输入的时候换行。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-12 17:05:34 | 显示全部楼层
本帖最后由 yexing 于 2020-2-12 17:07 编辑

这个程序的原理就是循环执行 input() ,换行了就把内容写进文件,你应该也发现了,换行之后就无法修改上方的内容。
所以执行完 input() 后,如果 write_some != ':w' ,那就继续循环,如果等于,就退出循环,结束输入。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 17:07:39 | 显示全部楼层
yexing 发表于 2020-2-12 17:05
这个程序的原理就是循环执行 input() ,你应该也发现了,换行之后就无法修改上方的内容。
所以执行完 inpu ...

是每输入一个换行就会把刚写好的那一行和‘:w’对比吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 17:09:06 | 显示全部楼层
素手就琴 发表于 2020-2-12 17:07
是每输入一个换行就会把刚写好的那一行和‘:w’对比吗?

是的,每次换行就会检查输入的内容是不是 ":w" 。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 17:09:43 | 显示全部楼层
yexing 发表于 2020-2-12 17:09
是的,每次换行就会检查输入的内容是不是 ":w" 。

为什么可以这样丫,不太明白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 17:14:53 | 显示全部楼层
我跟你讲一下程序执行的过程吧:
首先输入文件名,创建文件,打印 '请输入内容【单独输入\':w\'保存退出】:' 。
然后进入循环,执行 write_some = input(),输入内容后,就换行,结束当前输入操作,这时程序:
检查如果输入的内容是 ":w" 就退出循环,保存文件并结束程序;
如果不是,那就继续循环,继续执行 write_some = input() 这个语句,直到输入的内容为 ":w"。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 17:19:39 | 显示全部楼层
yexing 发表于 2020-2-12 17:14
我跟你讲一下程序执行的过程吧:
首先输入文件名,创建文件,打印 '请输入内容【单独输入\':w\'保存退出】 ...

想再请问一下哈,为什么换行就是结束当前输入操作而不是换行继续输入没输入完的字符串呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 17:21:50 | 显示全部楼层
素手就琴 发表于 2020-2-12 17:19
想再请问一下哈,为什么换行就是结束当前输入操作而不是换行继续输入没输入完的字符串呢

按下回车,input() 就会接收字符串。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 17:22:35 | 显示全部楼层    本楼为最佳答案   
素手就琴 发表于 2020-2-12 17:19
想再请问一下哈,为什么换行就是结束当前输入操作而不是换行继续输入没输入完的字符串呢

换行就是结束输入,没法继续输入。
要实现输入换行的内容也可以用 "\n" 分隔,但是就是不能在输入的时候换行。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 17:24:35 | 显示全部楼层
yexing 发表于 2020-2-12 17:22
换行就是结束输入,没法继续输入。
要实现输入换行的内容也可以用 "\n" 分隔,但是就是不能在输入的时候 ...

哦哦,明白了,谢谢您~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 11:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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