英俊男孩建坤 发表于 2020-10-28 20:59:17

大佬们教教我

写一个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: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传入

冬雪雪冬 发表于 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 =
list1 +=
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]))

zhaosiyu29 发表于 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==' ':
      pList.append(pList[-1]+' ')
    elif i%2:
      pList.append(pList[-1]+fullName)
    else:
      pList.append(pList[-1]+symbol)

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

for i in pList:
    print(i)

altf11 发表于 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) + 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])

英俊男孩建坤 发表于 2020-11-5 02:05:45

zhaosiyu29 发表于 2020-10-28 21:52


请问一下这个第三个elif i%2 这个条件是什么意思?

zhaosiyu29 发表于 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为奇数,则直接显示原字符,否则就显示'*'。
因为事例中遇到空格会直接显示,所以在这个之前对空格也进行了一次判断。

英俊男孩建坤 发表于 2020-11-11 00:01:53

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

为啥不写成elif i%2 ==   的形式???

zhaosiyu29 发表于 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的效果一样。
页: [1]
查看完整版本: 大佬们教教我