[题目描述]
编写一个程序,将句子中每个单词的首字母移位到下一个单词。定义函数shift_first_letter(),参数为sentence(字符串)。在函数内,将句子中每个单词的首字母移位到下一个单词。最后一个单词的首字母移位到句子的第一个单词。
比如create a function,移位后为freate c aunction,步骤为:句子中单词的首字母为:
create → c
a → a
function → f
经过右移一步后:
f → freate
c → c
a → aunction
所以最终结果为freate c aunction。
示例输入:
create a function
示例输出:
freate c aunction
完整代码展示:
a=list(map(str,input().split()))
b=[]
for i in range(0,len(a)):
for j in range(0,len(str(a[i]))):
if j==0:
b.append(a[i][j])
b.reverse()
b.append(b[0])
b.remove(b[0])
b.reverse()
c=0
e=[]
while c<len(a):
sum=""
d=list(str(a[c]))
for k in range(0,len(d)):
if k==0:
sum+=b[c]
else:
sum+=d[k]
e.append(sum)
c+=1
for l in range(0,len(e)):
print(e[l],end=" ")
代码解释:
“a=list(map(str,input().split())) ”,让用户输入一行字符串,并将其分割后储存进列表a中。
“b=[]
for i in range(0,len(a)):
for j in range(0,len(str(a[i]))):
if j==0:
b.append(a[i][j]) ”,建立一个空列表b,依次遍历列表a中的每一个元素,并依次遍历每个元素中的每个字符,判断其是否为该元素的首字符:如果是,则将该元素的首字符添加进列表b中;否则不作处理。直至遍历结束。
“b.reverse()
b.append(b[0])
b.remove(b[0])
b.reverse() ”,先反转列表b,再将其第一个元素添加进末尾,再删除第一个元素,再反转列表b,意义在于将列表b中每个元素向右旋转一位。
“c=0
e=[]
while c<len(a):
sum=""
d=list(str(a[c]))
for k in range(0,len(d)):
if k==0:
sum+=b[c]
else:
sum+=d[k]
e.append(sum)
c+=1 ”,设循环密码子为c,并将其初始值设为0,建立一个空列表e。当c<len(a)时,建立一个空字符串sum,将a[c]转换为字符储存进列表d中。接着遍历列表d,如果k==0,则让sum连接b[c];否则sum连接d[k],遍历结束后,将连接完成的字符串sum添加进列表e中。每循换一次,就令c+1,直至c==len(a),跳出整个whle循环。
“for l in range(0,len(e)):
print(e[l],end=" ") ”,依次遍历列表e中所有元素并打印,每两个元素之间插入一个空格。
运行效果展示:
(声明:以上内容均为原创)