练习一:实现reverse(s)函数,功能与s.reverse()相同。


In [9]:
def fanzhuan(s):
    x=''
    for i in range(len(s)):
        x=s[-i]+x
    return x
n=input('请输入一串字符:')
print(fanzhuan(n))


请输入一串字符:123454
234541

练习2.写函数,根据给定符号和行数,打印相应直角三角形,等腰三角形及其他形式的三角形。


In [22]:
def RT_triangle(a,b):
    for i in range(b+1):
        print(a*i)
def IT_triangle(a,b):
    for i in range(1,b):
        if i == 1:
            print(' '*(b*2-1) +a)
        else:
            print(' '*(b*2-i) +a*i+a*(i-1))
            
x=input('请输入给定符号:')
y=int(input('请输入行数:'))
RT_triangle(x,y)
IT_triangle(x,y)


请输入给定符号:$
请输入行数:8

$
$$
$$$
$$$$
$$$$$
$$$$$$
$$$$$$$
$$$$$$$$
               $
              $$$
             $$$$$
            $$$$$$$
           $$$$$$$$$
          $$$$$$$$$$$
         $$$$$$$$$$$$$

练习三:将任务4中的英语动词变复数的函数,完整实现。


In [1]:
def change(word):  
    if word.endswith('y'):  
        return word[:-1] + 'ies'  
    elif word[-1] in ('s'or'x') or word[-2:] in ['sh', 'ch']:  
        return word + 'es'  
    elif word.endswith('f') or word[-2:] in ['fe']:  
        return word[:-2] + 'ves'  
    else:  
        return word + 's'
x=input('输入单词')
print(change(x))


输入单词apple
apples

四:写函数,根据给定符号,上底、下底、高,打印各种梯形。


In [2]:
def tixing(a,b,c,d):
    if b<=c:
        k=(c-b)//(d-1)
        for i in range(d):
            print(b*a+k*a*i)
    else:
        k=k=(b-c)//(d-1)
        for i in range(d):
            print((b-k*i)*a)
x=input('请输入给定符号')
A=int(input('请输入上底长度'))
B=int(input('请输入下底长度'))
h=int(input('请输入高度'))
tixing(x,A,B,h)


请输入给定符号3
请输入上底长度2
请输入下底长度8
请输入高度4
33
3333
333333
33333333

练习五:写函数,根据给定符号,打印各种菱形。


In [12]:
def linxing(a,b):
    x=b//2
    for i in range(1,x+1):
        print(' '*(x-(i-1))+a*(2*i-1))
    for j in range(0,x+1):
        print(' '*j+a*(b-j*2))
x=input('请输入给定符号(为单个字符):')
y=int(input('请输入给定行数,必须为奇数:'))
linxing(x,y)


请输入给定符号(为单个字符):H
请输入给定行数,必须为奇数:9
    H
   HHH
  HHHHH
 HHHHHHH
HHHHHHHHH
 HHHHHHH
  HHHHH
   HHH
    H

练习六:文本加密解密。

练习六:与本小节任务基本相同,但要求打印回文字符倒三角形。


In [3]:
def plalindrome(line):
    x=len(line)
    for i in range(1,x*2+1):
        if i==x*2:
            print(' '*i+line[0])
            break
        if i%2==1:
            print(' '*i+line[:x-((i-1)//2)]+line[x-((i+1)//2)::-1])
        if i%2==0:
            print(' '*i+line[:x-(i//2)]+ line[x-(i//2)]+line[x-(i//2)-1::-1])
        
def main():
    text = '床前明月光'
    plalindrome(text)
if __name__ == '__main__':
    main()


 床前明月光光月明前床
  床前明月光月明前床
   床前明月月明前床
    床前明月明前床
     床前明明前床
      床前明前床
       床前前床
        床前床
         床床
          床