【问题标题】:swi prolog , how to read the data for the txt.fileswi prolog,如何读取 txt.file 的数据
【发布时间】:2021-11-21 21:11:03
【问题描述】:

有人可以帮我解决我的文件读取谓词吗?

get_userinfo: write('\nEnter Name:'),
          readln(Name),
          write('\nEnter Gender:'),
          read(Gender),
          append('marriage.txt') ,
          write(personal(Name,Gender,Age,Attr)),nl,
          told.

这是我的文本文件:

personal(chong,male).
personal(jack,female).
personal(kk,male).

【问题讨论】:

    标签: prolog


    【解决方案1】:

    不确定问题出在哪里:阅读还是写作?看起来你有你需要的代码。我重写了它以将事情分开一点并想出了这个:

    get_userinfo(personal(Name, Gender, Age, Attr)) :-
          write('Enter name: '),
          readln([Name|_]),
          write('Enter gender: '),
          readln([Gender|_]),
          write('Enter age: '),
          readln([Age|_]),
          write('Enter attr: '),
          readln([Attr|_]).
    
    record_userinfo(Filename, Person) :-
          append(Filename),
          write(Person), nl,
          told.
    

    从这里你可以像这样使用它:

    :- get_userinfo(Person), record_userinfo('marriage.txt', Person).
    

    如果您尝试阅读此内容,您可能应该只是 consult 它:[marriages] 但您需要将其重命名为以“.pl”结尾。

    编辑:有关读取文件的更多信息。

    在 Prolog 中,有阅读和咨询。阅读与其他语言一样,您手动从文件中读取数据并进行处理。在输入文件也是 Prolog 的情况下,您可以使用咨询;它相当于解析文件并将其中定义的事实和谓词添加到当前活动的会话中。例如,要查阅marriage.txt 文件,您可以使用:

    :- ['marriage.txt'].
    

    现在您已经查阅了它,您可以使用数据库中的新事实执行查询:

    ?- ['marriages.txt'].
    % marriages.txt compiled 0.00 sec, 1,328 bytes
    true.
    
    ?- personal(X, Gender).
    X = chong,
    Gender = male ;
    X = jack,
    Gender = female ;
    X = kk,
    Gender = male.
    
    ?- personal(X, male).
    X = chong ;
    X = kk.
    
    ?- personal(chong, X).
    X = male.
    

    如果您想获取所有personal/2 事实的列表,您可以执行以下操作:

    ?- setof(personal(X,Y), personal(X,Y), Qs).
    Qs = [personal(chong, male), personal(jack, female), personal(kk, male)].
    

    【讨论】:

    • 我明白了...我可以直接从程序中追踪数据吗?
    • 我在做patner匹配系统,我做一个菜单列表,如果用户选择1,然后用户输入姓名,性别,属性...等......然后如果用户选择2,显示出来所有的用户信息,所以我不知道如何显示marriage.txt中的所有信息.....你明白我的意思吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多