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)相关推荐

  1. Siri详解之输入系统和活跃本体(转)

    Siri详解之输入系统和活跃本体(转) 文 / 张俊林 Siri是iPhone 4S内置的智能语音识别系统,吸引了许多用户的关注.本文将从技术层面详解Siri,主要讲述输入系统和活跃本体两部分内容. ...

  2. c 语言的输出函数cout,详解C++ cout格式化输出完全攻略

    写算法题的时候突然发现自己忘记基本的C++:cout格式化输出了,赶紧拉出以前的C++学习笔记重新看一看. 部分内容来自教程:C语言中文网(一个很棒的网站) 有时希望按照一定的格式进行输出,如按十六进 ...

  3. [pytorch]yolov3.cfg参数详解(每层输出及route、yolo、shortcut层详解)

    文章目录 Backbone(Darknet53) 第一次下采样(to 208) 第二次下采样(to 104) 第三次下采样(to 52) 第四次下采样(to 26) 第五次下采样(to 13) YOL ...

  4. python 多数据输出到txt_详解python读取和输出到txt

    读取txt的数据和把数据保存到txt中是经常要用到的,下面我就总结一下. 读txt文件 python常用的读取文件函数有三种read().readline().readlines() 以读取上述txt ...

  5. iostat命令详解_对iostat输出结果的理解

    前言: 日常工作中,线上服务会出现各种奇奇怪怪的问题,每次出现问题都是根据现象猜测出现问题的原因,比如请求响应慢了,就排查整个请求的逻辑,每一步花了多少时间,分析半天终于发现是某一步慢了以后,在分析为 ...

  6. JS常用的输出内容的方式详解(5种输出方式)

    1.alert("要输出的内容"); ->在浏览器中弹出一个对话框,然后把要输出的内容展示出来 ->alert都是把要输出的内容首先转换为字符串然后在输出的 2.doc ...

  7. 计算机组成原理——输入输出设备(Input Output Equip-ment)

    输入输出设备 输入输出系统的发展阶段 第一阶段(早期阶段) 第二阶段(接口模块与DMA阶段)(讲解的重点) 第三阶段(具有通道结构的阶段) 第四阶段(具有I/O处理机的阶段) 输入输出系统的组成 I/ ...

  8. python文件输入符_python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)...

    一.变量和表达式 >>> 1 + 1 2 >>> print 'hello world' hello world >>> x = 1 >&g ...

  9. keras train_on_batch详解(train_on_batch的输出输入详解,train_on_batch多GPU训练详解,自定义学习率调整策略)

    利用 train_on_batch 精细管理训练过程 大部分使用 keras 的同学使用 fit() 或者 fit_generator() 进行模型训练, 这两个 api 对于刚接触深度学习的同学非常 ...

  10. python循环控制语句将数值转化成字符串_python基础入门详解(文件输入/输出内建类型字典操作使用方法)...

    f=open("foo.txt") line=f.readline() while line: print line, line=f.readline() #读取一行,包括换行符' ...

最新文章

  1. python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
  2. 3704对象关闭时_JVM 通过逃逸分析就能让对象在栈上分配?没那么简单!
  3. 猜数字if循环(1)
  4. json c语言 数组转字符串数组中,json和字符串/数组/集合的互相转换の神操作总结...
  5. linux aio拷贝文件,Linux通过AIO进行异步读文件
  6. 汉字不能编程?别闹了,只是看着有点豪横,容易被开除!| 原力计划
  7. 【网摘】ActiveX组件及其注册
  8. 关于 linux c 清屏命令
  9. 什么是集合?数组与集合的区别
  10. 什么是分布式操作系统?有哪些优缺点?
  11. VM虚拟机装Windows XP系统
  12. IDEA kotlin项目报错 kotlin not configured
  13. 配置JDK、Tomcat环境、DNK环境
  14. SQL SERVE 2008远程连接 提示sqlserver远程主机强迫关闭了一个现有连接
  15. 公园遛狗 / 小白逛公园【线段树】
  16. 几年前的项目用了YYYY-MM-dd,跨年夜老板喊我回去改Bug
  17. 【DB宝3】在Docker中使用rpm包的方式安装Oracle 19c
  18. 计算机毕业设计之 医院管理系统
  19. 电源完整性仿真PDN-电源完整性是什么?
  20. DELL-DRAC远程控制卡使用教程

热门文章

  1. selenium设置文件下载路径
  2. Python学习之路-NLP(人物提取)
  3. 线性组合(linear combinations), 生成空间(span), 基向量(basis vectors)——线性代数本质(二)
  4. 如何让别人看不懂java代码_为什么你写的代码别人看不懂?
  5. 论文的重复率多少算正常?
  6. 微信红包,企业付款到零钱报错:此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置 的原因
  7. Jsp 页面白页问题
  8. 行人重识别论文阅读12-Bi-directional Exponential Angular Triplet Loss for RGB-Infrared Person ReID
  9. jsencrypt php,js加密php解密(一)
  10. 继承者来了!CentOS 创始人开辟新项目 Rocky Linux