In [1]:
#练习一:自己定义一个reverse(s)函数,功能返回字符串s的倒序字符串。
#练习二:写函数,根据给定符号和行数,打印相应直角三角形,等腰三角形及其他形式的三角形。
#练习三:将任务4中的英语名词单数变复数的函数,尽可能的考虑多种情况,重新进行实现。
#练习四:写函数,根据给定符号,上底、下底、高,打印各种梯形。
#练习五:写函数,根据给定符号,打印各种菱形。
#练习六:与本小节任务基本相同,但要求打印回文字符倒三角形。

In [2]:
#练习一:自己定义一个reverse(s)函数,功能返回字符串s的倒序字符串。
def my_reverse(s):
    v=s[len(s)::-1]
    #v=s[-1:-len(s)-1:-1]
    return v

def main():
    s = '我喜欢编程。'
    print (my_reverse(s))
    

if __name__ == '__main__':
    main()


。程编欢喜我

In [3]:
#练习二:写函数,根据给定符号和行数,打印相应直角三角形,等腰三角形及其他形式的三角形。
def my_triangle(s,line_num):
    if s==1:
        for i in range(1,line_num+1):
            print('*'*(2*i-1))
    elif s==2:
        for j in range(1,line_num+1):
            print(' '*(line_num-j) +'*'*(2*j-1))
    else:
        for k in range(1,line_num+1):
            print(' '*(2*(line_num-k)) +'*'*(3*k-2))

def main():
    line_num=6
    s=1#打印直角三角形
    my_triangle(s,line_num)
    s=2#打印等腰三角形
    my_triangle(s,line_num)
    s=3#打印不规则三角形
    my_triangle(s,line_num)   

if __name__ == '__main__':
    main()


*
***
*****
*******
*********
***********
     *
    ***
   *****
  *******
 *********
***********
          *
        ****
      *******
    **********
  *************
****************

In [10]:
#练习三:将任务4中的英语名词单数变复数的函数,尽可能的考虑多种情况,重新进行实现。
def dan2fu(word):
    if(word.endswith('s') | word.endswith('z') | word.endswith('sh') | word.endswith('ch')):
        word=word+'es'
    elif(word.endswith('y')):
        word=word[:-1]+'ies'
    else:
        word=word+'s'
    return word

def main():
    print(dan2fu('happy'))
    print(dan2fu('watch'))
    print(dan2fu('egg'))

if __name__ == '__main__':
    main()


happies
watches
eggs

In [8]:
#练习四:写函数,根据给定符号,上底、下底、高,打印各种梯形。
def my_trapezoid(s,up,down,height):
    if (s==1):
        num=(down-up)/height
        print('打印直角梯形:')
        for i in range(1,height+1):
            n=int(num*i)
            print('*'*up  +'*'*n)
    elif(s==2):
        num=((down-up)/2)/height
        print('打印等腰梯形:')
        for i in range(1,height+1):
            n=int(num*i)
            l=int((down-up)/2-n)
            print(' '*l +'*'*n +'*'*up  +'*'*n)
    else:
        num=(down-up)/3
        print('打印不规则梯形:')
        for i in range(1,height+1):
            m=int(((num*2)/height)*i)
            n=int(((num)/height)*i)
            l=int(((down-up)/3)*2-m)
            print(' '*l +'*'*m +'*'*up  +'*'*n)

def main():
    my_trapezoid(1,10,18,6)
    print()
    my_trapezoid(2,10,18,6)
    print()
    my_trapezoid(3,10,18,6)

if __name__ == '__main__':
    main()


打印直角梯形:
***********
************
**************
***************
****************
******************

打印等腰梯形:
    **********
   ************
  **************
  **************
 ****************
******************

打印不规则梯形:
     **********
    ***********
   *************
  **************
 ****************
*****************

In [9]:
#练习五:写函数,根据给定符号,打印各种菱形。
def my_diamond(line,star):
    for i in range(1,line+1):
        print(' '*((line-i)*(star//2))  +'*'*(star*i-star+1))
    for j in range(1,line):
        print(' '*((star//2)*j)  +'*'*(star*(line-j)-star+1))
        
def main():
    #line是菱形每条边上的*的个数(即行数),star是每行的增量(只能是偶数)
    print('增量为2:')
    my_diamond(6,2)
    print('增量为4:')
    my_diamond(5,4)
    print('增量为6:')
    my_diamond(5,6)
    
if __name__ == '__main__':
    main()


增量为2:
     *
    ***
   *****
  *******
 *********
***********
 *********
  *******
   *****
    ***
     *
增量为4:
        *
      *****
    *********
  *************
*****************
  *************
    *********
      *****
        *
增量为6:
            *
         *******
      *************
   *******************
*************************
   *******************
      *************
         *******
            *

In [5]:
#练习六:与本小节任务基本相同,但要求打印回文字符倒三角形。
def replalindrome(text):
    for i in range(1, len(text)*2+1):
        if (i==14):
            print(' '*13 + text[0:1])
        elif (i%2 ==1):
            print(' '*(i-1) + text[:len(text)-(i//2)] + text[len(text)-(i//2)-1::-1])   
        else:
            print(' '*(i-1) + text[:len(text)-(i//2)] + text[len(text)-(i//2)] + text[len(text)-(i//2)-1::-1])

def main():
    text = '赏花归去马如飞'
    replalindrome(text)
    

if __name__ == '__main__':
    main()


赏花归去马如飞飞如马去归花赏
 赏花归去马如飞如马去归花赏
  赏花归去马如如马去归花赏
   赏花归去马如马去归花赏
    赏花归去马马去归花赏
     赏花归去马去归花赏
      赏花归去去归花赏
       赏花归去归花赏
        赏花归归花赏
         赏花归花赏
          赏花花赏
           赏花赏
            赏赏
             赏