输入与输出
本篇教学会介绍“输入和输出”的内建函数,借由输入 input 和输出 print 函数,可以简单地进行互动,并快速的测试程序执行是否正确。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
print(*objects, sep, end, file, flush)
print() 是 Python 负责将结果“输出”的函数,将输出的结果显示在程序执行的命令列中,print 有下列几个参数:
| 参数 | 说明 |
|---|---|
| *objects | 要印出的对象,可以用逗号分隔多个对象 |
| sep | 默认为“一个空白”,表示每个分隔的对象,在印出时中间的间隔符号 |
| end | 默认换行符“\n”,表示印出的结尾符号 |
| file | 默认“None”,表示要写入的文件对象 |
| flush | 默认“False”,设定为 True 可以防止函数对输出数据进行缓冲,并强行重新整理 |
下方的程序可以看到如果有设定 end,则会取代换行符,导致下一个 print 的结果和上一个连在一起。
print(1,2,3) # 1 2 3
print(1,2,3,sep=';') # 1;2;3
print(1,2,3,sep=';',end='!')
print(1,2,3) # 1;2;3!1 2 3
下面这段程序在“本机环境运作”,会看到“Loading”后方的“.”每隔 0.5 秒出现,若将 flush 移除或改为 False,会发现结果一次出现六个“.”( 因为云端主机缓存的机制,在 Google Colab 看不出效果 )
import time
print('Loading',end = '')
for i in range(6):
print('.',end = '',flush = True)
time.sleep(0.5)
如果在 print 的内容前方加上“\r”的命令,就能让每次印出时的光标位置,移动到该行的开头,搭配 end 不换行的方式,就能做出类似“画面更新”的效果,下方的程序码执行后,会以像是“更新”的方式,每隔一秒显示文字。
import time
n = 10
for i in range(n+1):
print(f'\r倒數 {n-i} 秒', end='')
time.sleep(1)
print('\r時間到', end='')
input(x)
执行 input(x) 后,命令列会显示 x 内容,并等待用户输入内容,按下 enter 之后再进行下方的动作,按下 enter 之后,可将输入的内容赋值给变数,进行后续的动作。
下方的程序码执行后,输入文字按下 enter,画面上就会出现输入的文字。
a = input('輸入文字:')
print('你輸入的是:'+a)
透过 input() 可以做出一些满有趣的互动,利如下方的程序码执行后,会要求输入两个数字,输入结束就会显示两个数字加总的结果。
a = int(input('輸入第一個數字:'))
b = int(input('輸入第二個數字:'))
print(f'兩個數字相加結果是:{a+b}')
如果是要追求输入的速度 ( 例如 ZeroJudge 里的某些题目为了追求速度 ),也可使用标准函数库 sys 的 stdin.readline() 进行输入 ( 但 Colab 与 anaconda jupyter 都不支援 )
import sys
a = int(sys.stdin.readline())
b = int(sys.stdin.readline())
print(f'兩個數字相加結果是:{a+b}')
微信扫码关注
抖音扫码关注