鱼C论坛

 找回密码
 立即注册
查看: 2495|回复: 8

[已解决]大佬们教教我

[复制链接]
发表于 2020-10-28 20:59:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
写一个Python程序  输出如下结果:
what is your first name:dennis
what is your last name:liu
Enter a symbol:*
*
*e
*e*
*e*n
*e*n*
*e*n*s
*e*n*s
*e*n*s l
*e*n*s l*
*e*n*s l*u
*e*n*s l*
*e*n*s l
*e*n*s
*e*n*s
*e*n*
*e*n
*e*
*e
*

我想着要用循环可是不知道怎么整   这个排列实在排不出。
最佳答案
2020-10-28 21:52:35
firstName=input('what is your first name:')
lastName=input('what is your last name:')
symbol=input('Enter a symbol:')

fullName=firstName+' '+lastName
pList=list()
for i in range(len(fullName)):
    if i==0:
        pList.append(symbol)
    elif fullName[i]==' ':
        pList.append(pList[-1]+' ')
    elif i%2:
        pList.append(pList[-1]+fullName[i])
    else:
        pList.append(pList[-1]+symbol)

reverseList=pList.copy()
reverseList.pop()
reverseList.reverse()
pList.extend(reverseList)

for i in pList:
    print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-28 21:34:21 | 显示全部楼层
这里提供一个思路:
1、定义函数,把列表(或字符串)的字符逐个打印。
def slistprint(s_list,n):
    #s_list 是列表,n是打印到第几个为止
    result = ''
    for each in s_list:
         if each > n
              break
         else:
              result += each
      print(result)
2、定义一个字符串,或者字符列表s_list:*e*n*s l*u(最长的那段)
3、构建循环,循环次数就是len(s_list)*2-1次
4、循环内再设置判断,计数器i <= len(s_list)时,传入函数的n = i,否则n = len(s_list)*2 - i
5、循环内均调用函数,把字符列表或者字符串,以及n传入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 21:42:47 | 显示全部楼层
fname = input('what is your first name:')
lname = input('what is your last name:')
symbol = input('Enter a symbol: ')
list1 = [c if i % 2 else symbol for i, c in enumerate(fname)]
list1 += [symbol if i % 2 else c for i, c in enumerate(lname)]
length = len(list1)
for i in range(length + 1):
    print(''.join(list1[:i]))
for i in range(length - 1, 0 , -1):
    print(''.join(list1[:i]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-10-28 21:52:35 | 显示全部楼层    本楼为最佳答案   
firstName=input('what is your first name:')
lastName=input('what is your last name:')
symbol=input('Enter a symbol:')

fullName=firstName+' '+lastName
pList=list()
for i in range(len(fullName)):
    if i==0:
        pList.append(symbol)
    elif fullName[i]==' ':
        pList.append(pList[-1]+' ')
    elif i%2:
        pList.append(pList[-1]+fullName[i])
    else:
        pList.append(pList[-1]+symbol)

reverseList=pList.copy()
reverseList.pop()
reverseList.reverse()
pList.extend(reverseList)

for i in pList:
    print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 22:50:21 | 显示全部楼层
fname = input('what is your first name:')
lname = input('what is your last name:')
symbol = input('Enter a symbol: ')
s = symbol.join(fname[1::2]) + symbol.join(lname[::2])  # 构建字符串 e*n*sl*u
# 正序切片取一遍
for i in range(len(s) + 1):
    print(symbol + s[:i])
# 逆序切片取一遍
for j in range(len(s) - 1, -1, -1):
    print(symbol + s[:j])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-11-5 02:05:45 | 显示全部楼层

请问一下这个第三个elif i%2 这个条件是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-6 14:25:08 | 显示全部楼层
英俊男孩建坤 发表于 2020-11-5 02:05
请问一下这个第三个elif i%2 这个条件是什么意思?

fullName是将First Name和Last Name拼接后的结果。
需要最终显示的效果是在fullName中将一个字符显示原先的内容,接下来一个字符显示预定义的符号,如'*'。
所以这里就判断每个字符的index是奇数还是偶数,i%2表示index被2取余后的结果。如果为1,表示index为奇数,则直接显示原字符,否则就显示'*'。
因为事例中遇到空格会直接显示,所以在这个之前对空格也进行了一次判断。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-11 00:01:53 | 显示全部楼层
zhaosiyu29 发表于 2020-11-6 14:25
fullName是将First Name和Last Name拼接后的结果。
需要最终显示的效果是在fullName中将一个字符显示原 ...

为啥不写成elif i%2 ==     的形式???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-12 13:09:17 | 显示全部楼层
英俊男孩建坤 发表于 2020-11-11 00:01
为啥不写成elif i%2 ==     的形式???

因为if i%2等同于if i%2 == 1
任何一个整数被2取余的时候都是两种结果,0或者1。0的话相当关于False,非0的话都是True。
所以直接用i%2作为判断条件跟if i%2 == 1的效果一样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 21:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表