如何获取用户输入的每个单词的第一个字母 [英] How to get the first letter of each word enter by user
问题描述
这是我的代码的详细信息
name:-read(X),write('Name : '),write(X),nameCode(X).
nameCode(X):-nl, write('Name Code : ').
我想从每个单词中取出前 3 个字母并显示出来.应该在我的代码中添加什么?此外,我得到的结果只允许我输入用户的一个名字.当我尝试在查询中输入多个名字(peter jane mary)时,它显示如下语法消息
| ?- name.
|: peter jane mary.
* Syntax Error
下面是我要打印的结果
Name : peter jane mary
Name Code : PJM
推荐答案
1- 首先,用户输入他/她的名字/中间名/姓氏.
1- First the user enters his/her first/middle/last name.
2- 已读取.
3- string_chars 将字符串分解成字符:peter 将变成 p,e,t,e,r
3- string_chars breaks the string into characters : peter will become p,e,t,e,r
4- getFirstLetter 谓词从列表中提取第一个元素:从彼得我们得到 p.
4- getFirstLetter Predicate extracts the first element from the list: from peter we get p.
5- upcase_atom 将小写字母转换为大写:p 将变为 P.
5- upcase_atom convert lowercase letters to uppercase: p will become P.
6- 使用 write 显示答案.
6- display the answer using write.
k:-
write('Enter First name: '),nl,
read(FName),nl,
string_chars(FName,N1),
getFirstLetter(N1,L1),
upcase_atom(L1,Str1),
write('Enter Middle name: '),nl,
read(MName),nl,
string_chars(MName,N2),
getFirstLetter(N2,L2),
upcase_atom(L2,Str2),
write('Enter Last name: '),nl,
read(LName),nl,
string_chars(LName,N3),
getFirstLetter(N3,L3),
upcase_atom(L3,Str3),
write(Str1),write(' '),write(Str2),write(' '),write(Str3).
getFirstLetter([H|_],H).
示例:
?-k.
Enter First name:
peter
Enter Middle name:
jane
Enter Last name:
mary
P J M
___
更具挑战性的任务:删除名称的第一个字母.
1- 首先,用户输入他/她的名字/中间名/姓氏.
1- First the user enters his/her first/middle/last name.
2- 已读取.
3- string_chars 将字符串分解成字符:peter 将变成 p,e,t,e,r
3- string_chars breaks the string into characters : peter will become p,e,t,e,r
4- removeFirstLetter 谓词删除第一个字母:p,e,t,e,r 将变为 e,t,e,r
4- removeFirstLetter predicate removes the first letter: p,e,t,e,r will become e,t,e,r
5- charstring 谓词将 e,t,e,r 转换为e"、t"、e"、r",我们使用 term_string(这对于下一个步骤)
5- charstring predicate will convert e,t,e,r to "e","t","e","r", we do this using term_string (this is important for the next step)
6- atomic_list_concat 将所有单独的字符连接在一起:e"、t"、e"、r";将要成为永恒
6- atomic_list_concat joins all the separate charaters together: "e","t","e","r" will become eter
k:-
write('Enter first name: '),nl,
read(FName),nl,
string_chars(FName,N1),
removeFirstLetter(N1,L1),
charstring(L1,String1),
atomic_list_concat( String1 , Cs1),
write('Enter Middle name: '),nl,
read(MidName),nl,
string_chars(MidName,N2),
removeFirstLetter(N2,L2),
charstring(L2,String2),
atomic_list_concat( String2 , Cs2),
write('Enter Last name: '),nl,
read(LName),nl,
string_chars(LName,N3),
removeFirstLetter(N3,L3),
charstring(L3,String3),
atomic_list_concat( String3 , Cs3),
write(Cs1),write(" "),write(Cs2), write(" "),write(Cs3).
charstring([],[]).
charstring([H|T],[H2|L]):-
term_string(H,H2),
charstring(T,L).
removeFirstLetter([_|T],T).
示例:
?-k.
Enter first name:
peter
Enter Middle name:
jane
Enter Last name:
mary
eter ane ary
1true
这篇关于如何获取用户输入的每个单词的第一个字母的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!