lisp princ详解_LISP - 输入和输出(Input Output)
LISP - 输入和输出(Input & Output)
通用LISP提供多种输入输出功能。 我们已经使用了格式化功能,并输出了打印功能。 在本节中,我们将研究LISP中提供的一些最常用的输入输出函数。
输入功能 (Input Functions)
下表提供了LISP最常用的输入功能 -Sr.No.功能说明
1read和可选input-stream eof-error-p eof-value recursive-p
它从输入流中读取Lisp对象的打印表示,构建相应的Lisp对象,并返回该对象。
2read-preserving-whitespace &optional in-stream eof-error-p eof-value recursive-p
它用于某些特殊情况,在这些情况下,需要准确确定哪个字符终止了扩展令牌。
3read-line &optional input-stream eof-error-p eof-value recursive-p
它读入由换行符终止的一行文本。
4read-char &optional input-stream eof-error-p eof-value recursive-p
它从输入流中获取一个字符并将其作为字符对象返回。
5unread-char character & optional input-stream
它将最近从输入流中读取的字符放在输入流的前面。
6peek-char &optional peek-type input-stream eof-error-p eof-value recursive-p
它返回从输入流中读取的下一个字符,而不实际从输入流中删除它。
7listen和可选的input-stream
如果存在从输入流中立即可用的字符,则谓词listen为真,否则为假。
8read-char-no-hang &optional input-stream eof-error-p eof-value recursive-p
它类似于read-char ,但如果它没有得到一个字符,它不会等待一个字符,但会立即返回nil。
9clear-input和可选input-stream
它清除与input-stream.关联的任何缓冲输入input-stream.
10read-from-string string &optional eof-error-p eof-value & key :start :end :preserve-whitespace
它连续获取字符串的字符并构建一个LISP对象并返回该对象。 它还返回字符串中未读取的第一个字符的索引,或字符串的长度(或长度+1),视情况而定。
11parse-integer string & key :start :end :radix :junk-allowed
它检查由以下内容分隔的字符串的子字符串:start和:end(默认为字符串的开头和结尾)。 它会跳过空白字符,然后尝试解析整数。
12read-byte binary-input-stream和可选的eof-error-p eof-value
它从二进制输入流中读取一个字节,并以整数形式返回。
从键盘读取输入
read功能用于从键盘输入。 它可能不会有任何争论。
例如,考虑代码段 -(write ( + 15.0 (read)))
假设用户从STDIN输入输入10.2,它返回,25.2
read函数从输入流中读取字符,并通过解析为Lisp对象的表示来解释它们。
例子 (Example)
创建一个名为main.lisp的新源代码文件,并在其中键入以下代码 -; the function AreaOfCircle
; calculates area of a circle
; when the radius is input from keyboard
(defun AreaOfCircle()
(terpri)
(princ "Enter Radius: ")
(setq radius (read))
(setq area (* 3.1416 radius radius))
(princ "Area: ")
(write area))
(AreaOfCircle)
执行代码时,它返回以下结果 -Enter Radius: 5 (STDIN Input)
Area: 78.53999
例子 (Example)
创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。(with-input-from-string (stream "Welcome to IOWIKI!")
(print (read-char stream))
(print (read-char stream))
(print (read-char stream))
(print (read-char stream))
(print (read-char stream))
(print (read-char stream))
(print (read-char stream))
(print (read-char stream))
(print (read-char stream))
(print (read-char stream))
(print (peek-char nil stream nil 'the-end))
(values)
)
执行代码时,它返回以下结果 -#\W
#\e
#\l
#\c
#\o
#\m
#\e
#\Space
#\t
#\o
#\Space
输出函数 (The Output Functions)
LISP中的所有输出函数都使用一个名为output-stream,的可选参数output-stream,其中输出被发送。 如果未提及或为nil,输出流默认为变量* standard-output *的值。
下表提供了LISP最常用的输出功能 -Sr.No.功能和描述
1write object &key:stream:escape:radix:base:circle:pretty:level:length:case:gensym:array
write object &key:stream:escape:radix:base:circle:pretty:level:length:case:gensym:array:readably:right-margin:miser-width:lines:pprint-dispatch
两者都将对象写入由以下指定的输出流:stream,默认为* standard-output *的值。 其他值默认为为打印设置的相应全局变量。
2prin1 object和可选的output-stream
print object和可选的output-stream
pprint object和可选的output-stream
princ object和可选的output-stream
所有这些函数都将对象的打印表示output-stream到output-stream 。 但是,存在以下差异 -prin1返回对象作为其值。
print使用前一个换行符打印对象,后跟一个空格。 它返回对象。
pprint就像print一样,只是省略了尾随空格。
princ就像prin1,但输出没有转义字符
3write-to-string object & key :escape:radix:base:circle:pretty:level:length:case:gensym:array
write-to-string object &key:escape:radix:base:circle:pretty:level:length:case:gensym:array:readably:right-margin:miser-width:lines:pprint-dispatch
prin1-to-string object
princ-to-string object
有效地打印对象,并将输出字符转换为字符串,并返回该字符串。
4write-char character和可选的output-stream
它将字符output-stream,到output-stream,并返回字符。
5write-string string &optional output-stream &key:start:end
它将string的指定子string的字符写入output-stream.
6write-line string &optional output-stream &key:start:end
它的工作方式与write-string相同,但之后会输出换行符。
7terpri和可选的output-stream
它为output-stream.输出换行符output-stream.
8fresh-line和可选output-stream
仅当流不在行的开头时才输出换行符。
9finish-output和可选output-stream
force-output和可选output-stream
clear-output和可选output-stream函数finish-output尝试确保发送到output-stream的所有输出都已到达其目标,然后才返回nil。
函数force-output启动任何内部缓冲区的清空,但返回nil而不等待完成或确认。
函数clear-output尝试中止正在进行的任何未完成的输出操作,以便允许尽可能少的输出继续到目标。
10write-byte integer binary-output-stream
它写入一个字节,即integer.的值integer.
例子 (Example)
创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。; this program inputs a numbers and doubles it
(defun DoubleNumber()
(terpri)
(princ "Enter Number : ")
(setq n1 (read))
(setq doubled (* 2.0 n1))
(princ "The Number: ")
(write n1)
(terpri)
(princ "The Number Doubled: ")
(write doubled)
)
(DoubleNumber)
执行代码时,它返回以下结果 -Enter Number : 3456.78 (STDIN Input)
The Number: 3456.78
The Number Doubled: 6913.56
格式化输出
函数format用于生成格式良好的文本。 它具有以下语法 -format destination control-string &rest arguments
Where,目的地是标准输出
control-string保存要输出的字符和打印指令。
format directive由波浪号(〜),用逗号分隔的可选前缀参数,可选冒号(:)和at符号(@)修饰符以及指示这是什么类型的指令的单个字符组成。
前缀参数通常是整数,标记为可选的带符号十进制数。
下表提供了常用指令的简要说明 -Sr.No.指令和说明
1~A
后跟ASCII参数。
2~S
接下来是S表达式。
3~D
对于十进制参数。
4~B
对于二进制参数。
5~O
对于八进制参数。
6~X
对于十六进制参数。
7~C
对于角色论点。
8~F
对于固定格式的浮点参数。
9~E
指数浮点参数。
10~$
美元和浮点论证。
11~%
打印一个新行。
12~*
下一个参数被忽略。
13~?
间接。 下一个参数必须是一个字符串,后面的一个是列表。
例子 (Example)
让我们重写计算圆圈区域的程序 -
创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。(defun AreaOfCircle()
(terpri)
(princ "Enter Radius: ")
(setq radius (read))
(setq area (* 3.1416 radius radius))
(format t "Radius: = ~F~% Area = ~F" radius area)
)
(AreaOfCircle)
执行代码时,它返回以下结果 -Enter Radius: 10.234 (STDIN Input)
Radius: = 10.234
Area = 329.03473
LISP - 哈希表(Hash Table)
lisp princ详解_LISP - 输入和输出(Input Output)相关推荐
- Siri详解之输入系统和活跃本体(转)
Siri详解之输入系统和活跃本体(转) 文 / 张俊林 Siri是iPhone 4S内置的智能语音识别系统,吸引了许多用户的关注.本文将从技术层面详解Siri,主要讲述输入系统和活跃本体两部分内容. ...
- c 语言的输出函数cout,详解C++ cout格式化输出完全攻略
写算法题的时候突然发现自己忘记基本的C++:cout格式化输出了,赶紧拉出以前的C++学习笔记重新看一看. 部分内容来自教程:C语言中文网(一个很棒的网站) 有时希望按照一定的格式进行输出,如按十六进 ...
- [pytorch]yolov3.cfg参数详解(每层输出及route、yolo、shortcut层详解)
文章目录 Backbone(Darknet53) 第一次下采样(to 208) 第二次下采样(to 104) 第三次下采样(to 52) 第四次下采样(to 26) 第五次下采样(to 13) YOL ...
- python 多数据输出到txt_详解python读取和输出到txt
读取txt的数据和把数据保存到txt中是经常要用到的,下面我就总结一下. 读txt文件 python常用的读取文件函数有三种read().readline().readlines() 以读取上述txt ...
- iostat命令详解_对iostat输出结果的理解
前言: 日常工作中,线上服务会出现各种奇奇怪怪的问题,每次出现问题都是根据现象猜测出现问题的原因,比如请求响应慢了,就排查整个请求的逻辑,每一步花了多少时间,分析半天终于发现是某一步慢了以后,在分析为 ...
- JS常用的输出内容的方式详解(5种输出方式)
1.alert("要输出的内容"); ->在浏览器中弹出一个对话框,然后把要输出的内容展示出来 ->alert都是把要输出的内容首先转换为字符串然后在输出的 2.doc ...
- 计算机组成原理——输入输出设备(Input Output Equip-ment)
输入输出设备 输入输出系统的发展阶段 第一阶段(早期阶段) 第二阶段(接口模块与DMA阶段)(讲解的重点) 第三阶段(具有通道结构的阶段) 第四阶段(具有I/O处理机的阶段) 输入输出系统的组成 I/ ...
- python文件输入符_python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)...
一.变量和表达式 >>> 1 + 1 2 >>> print 'hello world' hello world >>> x = 1 >&g ...
- keras train_on_batch详解(train_on_batch的输出输入详解,train_on_batch多GPU训练详解,自定义学习率调整策略)
利用 train_on_batch 精细管理训练过程 大部分使用 keras 的同学使用 fit() 或者 fit_generator() 进行模型训练, 这两个 api 对于刚接触深度学习的同学非常 ...
- python循环控制语句将数值转化成字符串_python基础入门详解(文件输入/输出内建类型字典操作使用方法)...
f=open("foo.txt") line=f.readline() while line: print line, line=f.readline() #读取一行,包括换行符' ...
最新文章
- python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
- 3704对象关闭时_JVM 通过逃逸分析就能让对象在栈上分配?没那么简单!
- 猜数字if循环(1)
- json c语言 数组转字符串数组中,json和字符串/数组/集合的互相转换の神操作总结...
- linux aio拷贝文件,Linux通过AIO进行异步读文件
- 汉字不能编程?别闹了,只是看着有点豪横,容易被开除!| 原力计划
- 【网摘】ActiveX组件及其注册
- 关于 linux c 清屏命令
- 什么是集合?数组与集合的区别
- 什么是分布式操作系统?有哪些优缺点?
- VM虚拟机装Windows XP系统
- IDEA kotlin项目报错 kotlin not configured
- 配置JDK、Tomcat环境、DNK环境
- SQL SERVE 2008远程连接 提示sqlserver远程主机强迫关闭了一个现有连接
- 公园遛狗 / 小白逛公园【线段树】
- 几年前的项目用了YYYY-MM-dd,跨年夜老板喊我回去改Bug
- 【DB宝3】在Docker中使用rpm包的方式安装Oracle 19c
- 计算机毕业设计之 医院管理系统
- 电源完整性仿真PDN-电源完整性是什么?
- DELL-DRAC远程控制卡使用教程
热门文章
- selenium设置文件下载路径
- Python学习之路-NLP(人物提取)
- 线性组合(linear combinations), 生成空间(span), 基向量(basis vectors)——线性代数本质(二)
- 如何让别人看不懂java代码_为什么你写的代码别人看不懂?
- 论文的重复率多少算正常?
- 微信红包,企业付款到零钱报错:此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置 的原因
- Jsp 页面白页问题
- 行人重识别论文阅读12-Bi-directional Exponential Angular Triplet Loss for RGB-Infrared Person ReID
- jsencrypt php,js加密php解密(一)
- 继承者来了!CentOS 创始人开辟新项目 Rocky Linux