鱼C论坛

 找回密码
 立即注册
查看: 2972|回复: 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
  1. firstName=input('what is your first name:')
  2. lastName=input('what is your last name:')
  3. symbol=input('Enter a symbol:')

  4. fullName=firstName+' '+lastName
  5. pList=list()
  6. for i in range(len(fullName)):
  7.     if i==0:
  8.         pList.append(symbol)
  9.     elif fullName[i]==' ':
  10.         pList.append(pList[-1]+' ')
  11.     elif i%2:
  12.         pList.append(pList[-1]+fullName[i])
  13.     else:
  14.         pList.append(pList[-1]+symbol)

  15. reverseList=pList.copy()
  16. reverseList.pop()
  17. reverseList.reverse()
  18. pList.extend(reverseList)

  19. for i in pList:
  20.     print(i)
复制代码
小甲鱼最新课程 -> https://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传入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 21:42:47 | 显示全部楼层
  1. fname = input('what is your first name:')
  2. lname = input('what is your last name:')
  3. symbol = input('Enter a symbol: ')
  4. list1 = [c if i % 2 else symbol for i, c in enumerate(fname)]
  5. list1 += [symbol if i % 2 else c for i, c in enumerate(lname)]
  6. length = len(list1)
  7. for i in range(length + 1):
  8.     print(''.join(list1[:i]))
  9. for i in range(length - 1, 0 , -1):
  10.     print(''.join(list1[:i]))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

  4. fullName=firstName+' '+lastName
  5. pList=list()
  6. for i in range(len(fullName)):
  7.     if i==0:
  8.         pList.append(symbol)
  9.     elif fullName[i]==' ':
  10.         pList.append(pList[-1]+' ')
  11.     elif i%2:
  12.         pList.append(pList[-1]+fullName[i])
  13.     else:
  14.         pList.append(pList[-1]+symbol)

  15. reverseList=pList.copy()
  16. reverseList.pop()
  17. reverseList.reverse()
  18. pList.extend(reverseList)

  19. for i in pList:
  20.     print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 22:50:21 | 显示全部楼层
  1. fname = input('what is your first name:')
  2. lname = input('what is your last name:')
  3. symbol = input('Enter a symbol: ')
  4. s = symbol.join(fname[1::2]) + symbol.join(lname[::2])  # 构建字符串 e*n*sl*u
  5. # 正序切片取一遍
  6. for i in range(len(s) + 1):
  7.     print(symbol + s[:i])
  8. # 逆序切片取一遍
  9. for j in range(len(s) - 1, -1, -1):
  10.     print(symbol + s[:j])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

请问一下这个第三个elif i%2 这个条件是什么意思?
小甲鱼最新课程 -> https://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为奇数,则直接显示原字符,否则就显示'*'。
因为事例中遇到空格会直接显示,所以在这个之前对空格也进行了一次判断。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

为啥不写成elif i%2 ==     的形式???
小甲鱼最新课程 -> https://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的效果一样。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 14:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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