Prolog 在读写命令中给出随机数而不是字符串

发布于 2025-01-14 10:30:19 字数 329 浏览 1 评论 0原文

say_hi:-
    write('Your name? '),
    read(X),
    write('hi'),
    write(X).

这是我的代码但是!!! 当我运行它时就会发生这种情况。为什么?

?- say_hi.
Your name? Ali.
hi_884
true.

这不是给予

> hi Ali

。为什么?

请指导我并给我简单的代码来读取和写入名称。 每次输入不同的名称都会给出不同的数字。

say_hi:-
    write('Your name? '),
    read(X),
    write('hi'),
    write(X).

THIS IS MY CODE BUT!!!
THIS HAPPEN WHEN I RUN IT. WHY?

?- say_hi.
Your name? Ali.
hi_884
true.

It's not giving

> hi Ali

. WHY?

please guide me and give me simple code to read and write name.
every time put different name it gives different numbers.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若沐 2025-01-21 10:30:19

发生这种情况是因为 read/1 旨在解析 Prolog 术语,而以大写字母开头的字母序列是变量。按照惯例,奇怪的_NNN输出是Prolog显示未实例化变量的方式。在 SWI-Prolog 中,您可以使用 read_line_to_codes/2 或 read_line_to_string/2 来得到你的绳子。例如

?- read_line_to_string(user_input,S).
|: Ali
S = "Ali".

This happens because read/1 is meant to parse Prolog terms, and a sequence of letters starting with an uppercase letter is a variable. The strange _NNN output is - conventionally - the way Prolog display an uninstantiated variable. In SWI-Prolog you can use read_line_to_codes/2 or read_line_to_string/2 to get your string. For example

?- read_line_to_string(user_input,S).
|: Ali
S = "Ali".
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文