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


In [2]:
def compute_multi(end):
    i = 0
    multi = 1

    while i < end:
        i = i + 1
        multi = multi * i

    return multi

n = int(input('请输入第1个整数,以回车结束。'))
m = int(input('请输入第2个整数,以回车结束。'))
k = int(input('请输入第3个整数,以回车结束。'))

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


请输入第1个整数,以回车结束。1
请输入第2个整数,以回车结束。2
请输入第3个整数,以回车结束。3
最终的和是: 9

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


In [3]:
def compute_sum(end):
    a = 1
    total = 0
    x = 0
    
    while a < n:
        if a % 2 == 0:
            x = - 1 / (2*a-1)
        else:
            x = 1 / (2*a-1)
        a = a + 1
        total = total + x
    
    return total

n=int(input('你想输入的数是1000还是100000:'))
print('1-1/3+1/5-1/7...的4倍是:',4*compute_sum(n))


你想输入的数是1000还是100000:100000
1-1/3+1/5-1/7...的4倍是: 3.1416026536897204

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

改写第三周练习 1:写程序,可由键盘读入用户姓名例如Mr. right,让用户输入出生的月份与日期,判断用户星座,假设用户是金牛座,则输出,Mr. right,你是非常有性格的金牛座!。


In [4]:
def xingzuo(month,date):
    if month == 3:
        if date >=21:
            print(name,',你是白羊座。')
        else:
            print(name,',你是双鱼座。')

    elif month == 4:
        if date >= 20:
            print(name,',你是金牛座。')
        else:
            print(name,',你是白羊座。')
        
    elif month == 5:
        if date >= 21:
            print(name,',你是双子座。')
        else:
            print(name,',你是金牛座。')
        
    elif month == 6:
        if date >= 22:
            print(name,',你是巨蟹座。')
        else:
            print(name,',你是双子座。')
              
    elif month == 7:
        if date >= 23:
            print(name,',你是狮子座。')
        else:
            print(name,',你是巨蟹座。')
        
    elif month == 8:
        if date >= 23:
            print(name,',你是处女座。')
        else:
            print(name,',你是狮子座。')
        
    elif month == 9:
        if date >= 23:
            print(name,',你是天秤座。')
        else:
            print(name,',你是处女座。')
        
    elif month == 10:
        if date >= 24:
            print(name,',你是天蝎座。')
        else:
            print(name,',你是天秤座。')
        
    elif month == 11:
        if date >= 23:
            print(name,',你是射手座。')
        else:
            print(name,',你是天蝎座。')
        
    elif month == 12:
        if date >= 22:
            print(name,',你是摩羯座。')
        else:
            print(name,',你是射手座。')
        
    elif month == 1:
        if date >= 20:
            print(name,',你是水瓶座。')
        else:
            print(name,',你是摩羯座。')
        
    elif month == 2:
        if date >= 19:
            print(name,',你是双鱼座。')
        else:
            print(name,',你是水瓶座。')
    return xingzuo
        
#主程序
name=input('请输入你的姓名,回车结束:')
print(name,'你好!')

a=int(input('请输入你的出生月份,回车结束:'))
b=int(input('请输入你的出生日期,回车结束:'))
xingzuo(a,b)


请输入你的姓名,回车结束:pxs
pxs 你好!
请输入你的出生月份,回车结束:2
请输入你的出生日期,回车结束:28
pxs ,你是双鱼座。
Out[4]:
<function __main__.xingzuo>

改写第三周练习 4:英文单词单数转复数,要求输入一个英文动词(单数形式),能够得到其复数形式,或给出单数转复数形式的建议(提示,some_string.endswith(some_letter)函数可以判断某字符串结尾字符)。


In [2]:
def ciwei(a):

    if a.endswith('o'):
        print(s,'加es')

    elif a.endswith('ch') or s.endswith('sh'):
        print(s,'加es')

    else:
        print(s,'加s')
    
#主程序
s=input('请输入一个英文单词,回车结束')
ciwei(s)


请输入一个英文单词,回车结束go
go 加es

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


In [ ]:
def compute_sum(end):
    total = 0
    i = 0
    
    while i < end:
        i =+ k
        total =+ i
    
    return total

#主程序
m = int(input('请输入一个较小的整数'))
n = int(input('请输入一个较大的整数'))
k = int(input('求和间隔是'))

print(compute_sum(n)-compute_sum(m))


请输入一个较小的整数3
请输入一个较大的整数12
求和间隔是3

In [ ]:


In [ ]: