练习1:仿照求$ \sum_{i=1}^mi + \sum_{i=1}^ni + \sum_{i=1}^ki$的完整代码,写程序,可求m!+n!+k!


In [1]:
def compute_product(end):
    i = 0
    product_n = 1
    
    while i < end:
        i = i + 1
        product_n = product_n * i
        
    return product_n

m = int(input('请输入第一个整数,以回车结束:'))
n = int(input('请输入第二个整数,以回车结束:'))
k = int(input('请输入第三个整数,以回车结束:'))

print('最终的和是:',compute_product(m) + compute_product(n) + compute_product(k))


请输入第一个整数,以回车结束:3
请输入第二个整数,以回车结束:4
请输入第三个整数,以回车结束:5
最终的和是: 150

练习 2:写函数可返回1 - 1/3 + 1/5 - 1/7...的前n项的和。在主程序中,分别令n=1000及100000,打印4倍该函数的和。


In [2]:
def compute_total(n):
    i = 1
    total = 0
    
    if n == 1:
        total = 1
        
    elif n > 1:
        while i <= n:
            total = total+((-1)**(i+1))*1/(2*i-1)
            i = i + 1
        
    return total

print(compute_total(1000)*4)
print(compute_total(100000)*4)

n = int(input('请输入一个整数,回车结束:'))
print(compute_total(n)*4)


3.140592653839794
3.1415826535897198
请输入一个整数,回车结束:1000000
3.1415916535897743

练习 3:将task3中的练习1及练习4改写为函数,并进行调用。

Part I Task3 练习1


In [3]:
def num(birthday):
    if 3.21<= birthday <=3.31 or 4.1<= birthday <=4.19:
        return('你是热情自信的白羊座喔!')
    
    elif 4.20<= birthday <= 4.30 or 5.1<= birthday <=5.20:
        return('你是固执又有韧性的金牛座喔!')
    
    elif 5.21<= birthday <=5.31 or 6.1<= birthday <=6.21:
        return('你是充满好奇心又多变的双子座喔!')
    
    elif 6.22<= birthday <=6.30 or 7.1<= birthday <=7.22:
        return('你是敏锐又体贴的巨蟹座喔!')
    
    elif 7.23<= birthday <=7.31 or 8.1<= birthday <=8.22:
        return('你是霸道又慷慨的狮子座喔!')
    
    elif 8.23<= birthday <=8.31 or 9.1<= birthday <=9.22:
        return('你是具有完美主义的处女座喔!')
    
    elif 9.23<= birthday <=9.30 or 10.1<= birthday <=10.23:
        return('你是优雅又追求和平的天秤座喔!')
    
    elif 10.24<= birthday <=10.31 or 11.1<= birthday <=11.22:
        return('你是冷酷又神秘的天蝎座喔!')
    
    elif 11.23<= birthday <=11.30 or 12.1<= birthday <=12.21:
        return('你是热爱自由又粗心的射手座喔!')
    
    elif 12.22<= birthday <=12.31 or 1.1<= birthday <=1.19:
        return('你是稳重严肃的摩羯座喔!')
    
    elif 1.20<= birthday <=1.31 or 2.1<= birthday <=2.18:
        return('你是智慧又叛逆的水瓶座喔!')
    
    elif 2.19<= birthday <=2.29 or 3.1<= birthday <=3.20:
        return('你是喜欢幻想又多情的双鱼座喔!')

birthday = float(input('请输入你的出生日期,如5.20,回车结束:'))
print(num(birthday))


请输入你的出生日期,如5.20,回车结束:1.25
你是智慧又叛逆的水瓶座喔!

Part II Task3 练习4


In [5]:
def plural(word):
    if word.endswith('s') or word.endswith('sh') or word.endswith('ch') or word.endswith('x'):
        return('直接加es')
    elif word.endswith('y'):
        return('若该单词为 辅音字母加y结尾,去掉y加ies;否则直接加s')
    elif word == 'hero'or word == 'negro' or word =='potato' or word =='tamato':
        return('加es')
    elif word=='half'or word =='knife' or word =='leaf' or word == 'wolf' or word == 'wife'or word =='life' or word=='thief':
        return('去掉f或fe加ves')
    else:
        return('直接加s')
    
word = str(input('Please type in an English word(singular form):'))
print(plural(word))


Please type in an English word(singular form):apple
直接加s

挑战性练习:写程序,可以求从整数m到整数n累加的和,间隔为k,求和部分需用函数实现,主程序中由用户输入m,n,k调用函数验证正确性。


In [15]:
def calculate_sum(m,n,k):
    total = m
    
    while m < n:
        m = m + k
        total = total + m
    return total


m=int(input('请输入起始整数,回车键结束:'))
n=int(input('请输入结束整数,回车键结束:'))
k=int(input('请输入起始与结束整数之间的公差,回车键结束:'))
print(calculate_sum(m,n,k))


请输入起始整数,回车键结束:3
请输入结束整数,回车键结束:15
请输入起始与结束整数之间的公差,回车键结束:3
45