以下哪种解决方案更好?

时间:2019-05-20 17:32:29

标签: python printing programming-languages

关于计划:

  • 接受字符串输入
  • 如果字符串的长度小于10(含),则按原样打印字符串
  • 如果长度大于10,则打印第一个字符,然后显示字符数,最后一个字符

自我解决方案1:

为了解决这个问题,我想出了这个解决方案。

1    for _ in [0]*int(input()):
2    s = input()
3    if len(s)>10:
4       print(f'{s[0]}{len(s)-2}{s[-1]}')
5    else:
6       print(s)

第4行中的打印语句正在使用格式进行打印。

自我解决方案2:

在这里,使用了新的变量l来存储字符串的长度。在第4行中,print语句正在执行比较和串联。

    1    for _ in [0]*int(input()):
    2        s=input()
    3        l=len(s)-2
    4        print([s,s[0]+str(l)+s[-1]][l>8])

问题/疑问:

尽管这两个程序在显示的输出方面均能正常工作,但在

中推荐/首选该程序
  • 可读性
  • 效率条款
  • 性能
  • 工业或专业环境
  • 列表项
  • 从所有角度来看。

1 个答案:

答案 0 :(得分:1)

Cylinder

首先,它接受用户(我们称之为for _ in [0]*int(input()): s=input() l=len(s)-2 print([s,s[0]+str(l)+s[-1]][l>8]) )的输入,然后创建一个长度为(n)的零数组([0,0,...,0]

然后遍历该数组。在每个步骤中,它都需要来自用户(n)的字符串输入。然后计算出s,它等于s减去2的长度。

然后它创建一个列表,如下所示:

列表的第一个元素是l(用户输入)本身

第二个元素是一个字符串,它由s的第一个字母+ s的值+ l的最后一个字母组成。例如,如果s,则列表的第二个元素将是s = 'apple'

最后,它检查条件:如果a3e大于8,则返回第二个元素,否则返回l本身。

因此它缩短了s

例如:

输入:s->输出:apple

输入:apple-> a long string more than 8 characters