鱼C论坛

 找回密码
 立即注册
查看: 2935|回复: 7

[已解决]有关print()和input()的问题

[复制链接]
发表于 2022-10-24 17:37:18 | 显示全部楼层 |阅读模式
20鱼币
红线标注的地方是什么意思,能解释一下吗(最好通俗易懂一些,我是新手)
最佳答案
2022-10-24 17:37:19
这个学C++的懂的都懂

flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

这个一般要和file配合使用

我们的输出流(人话:输出的地方)就是sys.stdout

那么我们可以把这个改成文件的形式

还有,这些都是很少用的内容(我学python几年都没有用过)


Q2:

标准输入流就是输入的地方

Q3:

文件结尾(英语:End of File,缩写为EOF),是操作系统无法从数据源读取更多数据的情形。数据源通常为文件或流。
屏幕截图 2022-10-24 173325.png
屏幕截图 2022-10-24 173538.png

最佳答案

查看完整内容

这个学C++的懂的都懂 flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。 一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。 这个一般要和file配合使用 我们的输出流(人话:输出的地方)就是sys.stdout 那么我们可以把这个改成文件的形式 还有,这些都是很少用的内容(我学python几年都没 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-24 17:37:19 | 显示全部楼层    本楼为最佳答案   
这个学C++的懂的都懂

flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

这个一般要和file配合使用

我们的输出流(人话:输出的地方)就是sys.stdout

那么我们可以把这个改成文件的形式

还有,这些都是很少用的内容(我学python几年都没有用过)


Q2:

标准输入流就是输入的地方

Q3:

文件结尾(英语:End of File,缩写为EOF),是操作系统无法从数据源读取更多数据的情形。数据源通常为文件或流。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-24 18:40:11 From FishC Mobile | 显示全部楼层
计算机和人能够互动的也就是输入输出了
输入比较常见的也就是键盘鼠标一类的
输出则是打印机,显示器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-24 20:30:50 | 显示全部楼层
wp231957 发表于 2022-10-24 18:40
计算机和人能够互动的也就是输入输出了
输入比较常见的也就是键盘鼠标一类的
输出则是打印机,显示器

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

使用道具 举报

发表于 2022-10-24 22:58:29 | 显示全部楼层
标准输入流(sys.stdin):一个可读取的流,可以通过它来读取输入
标准输出流(sys.stdout):一个可写入的流,可以通过它来输出
示例:
>>> import sys
>>> sys.stdin.readline()
hello
'hello\n'
>>> sys.stdout.write("Hello\n")
Hello
6
>>>
1.指定要写入的文件对象,默认是标准输出流(sys.stdout)
这里的要写入的文件对象其实就是一个可写入的流,而这个流默认是标准输出流,所以我们才能用print来将字符输出到屏幕上
我们也可以指定file参数
示例:
print("Hello, World!",file=open("temp.txt","w"))
temp.txt内容
Hello, World!
这里我就将file参数指定为open("temp.txt","w")这个流
2.EOF
Windows下EOF是Ctrl+Z,Linux下Ctrl+D
Windows
>>> input()
^Z
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
EOFError
>>>
Linux(Ctrl+D没有显示)
>>> input()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
EOFError
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-24 23:16:39 | 显示全部楼层
本帖最后由 阿奇_o 于 2022-10-24 23:24 编辑


学点Linux命令,以及各种重定向操作,然后你就应该懂得什么是 stdin 标准输入,stdout 标准输出  了。 。

现在要在Window+Python的环境下说明白,有点费事,说个关键点吧:
print() 其实等价于或类似于: sys.stdout.write() 和 sys.stdout.flush()  的组合。  
能理解这两个,以及Buffer缓冲的概念, 就应该可以理解 print 的 file和flush的参数了。

举个例子:
import sys, time 

sys.stdout.write('Hello')

sys.stdout.flush()  # 手动刷出

sys.stdout.write('--->World')

time.sleep(3)
sys.stdout.flush()   # 3秒后,才从缓冲里刷出来 (手动刷)

while 1:   # 死循环
    pass   # 模拟,cmd的pause  (不然不好观察上面的不同效果)

# 注意:程序结束前,或遇到\n换行符,或其他输出命令的“催促” 等情况,也会触发 flush()  
# 注2:先只做脚本运行。 IDLE下会又涉及它自己的“回显命令”,也不好看效果。但关键还是上面这两个。

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

使用道具 举报

 楼主| 发表于 2022-10-25 09:09:43 | 显示全部楼层
xiaosi4081 发表于 2022-10-25 08:40
这个学C++的懂的都懂

flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲 ...

所以缓冲区又是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-25 09:11:15 | 显示全部楼层

就是存字符串的地方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 23:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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