In [ ]:
#练习 1:仿照求$ \sum_{i=1}^mi + \sum_{i=1}^ni + \sum_{i=1}^ki$的完整代码,写程序,可求m!+n!+k!
#练习 2:写函数可返回1 - 1/3 + 1/5 - 1/7...的前n项的和。在主程序中,分别令n=1000及100000,打印4倍该函数的和。
#练习 3:将task3中的练习1及练习4改写为函数,并进行调用。
#挑战性练习:写程序,可以求从整数m到整数n累加的和,间隔为k,求和部分需用函数实现,主程序中由用户输入m,n,k调用函数验证正确性。
In [4]:
#练习 1:仿照求$ \sum_{i=1}^mi + \sum_{i=1}^ni + \sum_{i=1}^ki$的完整代码,写程序,可求m!+n!+k!
def compute_pro(a):
i=0
total_k = 1
while i < a:
i+=1
total_k*=i
return total_k
m = int(input('请输入第1个整数,以回车结束。'))
n = int(input('请输入第2个整数,以回车结束。'))
k = int(input('请输入第3个整数,以回车结束。'))
#362880
print('最终的和是:', compute_pro(m) + compute_pro(n) + compute_pro(k))
In [11]:
#练习 2:写函数可返回1 - 1/3 + 1/5 - 1/7...的前n项的和。在主程序中,分别令n=1000及100000,打印4倍该函数的和。
def sum_of(n):
i=0
total=0
while i<n:
i=i+1
total=total+(((-1)**(i+1))*(1/(2*i-1)))
return total
print("前1000项的和的4倍为",4*sum_of(1000))
print("前100000项的和的4倍为",4*sum_of(100000))
In [37]:
#练习 3:
#练习 1:写程序,可由键盘读入用户姓名例如Mr. right,让用户输入出生的月份与日期,判断用户星座,假设用户是金牛座,则输出,Mr. right,你是非常有性格的金牛座!。
def checkcons(name,date):
if(date>=1.20 and date<=2.18):
str1="你是创意十足的水瓶座!"
elif(date>=2.19 and date<=3.20):
str1="你是善解人意的双鱼座!"
elif(date>=3.21 and date<=4.19):
str1="你是坦白率真的白羊座!"
elif(date>=4.20 and date<=5.20):
str1="你是个性十足的金牛座!"
elif(date>=5.21 and date<=6.21):
str1="你是足智多谋的双子座!"
elif(date>=6.22 and date<7.22):
str1="你是亲切温暖的巨蟹座!"
elif(date>=7.23 and date<=8.22):
str1="你是热情开朗的狮子座!"
elif(date>=8.23 and date<=9.22):
str1="你是勤奋努力的处女座!"
elif(date>=9.23 and date<=10.23):
str1="你是能屈能伸的天秤座!"
elif(date>=10.24 and date<=11.22):
str1="你是深谋远虑的天蝎座!"
elif(date>=11.23 and date<=12.21):
str1="你是正直坦率的射手座!"
else:
str1="你是谨慎谦逊的摩羯座!"
print (name,',',str1)
checkcons('han',5.03)
In [23]:
#练习 3:
#练习 4:英文单词单数转复数,要求输入一个英文动词(单数形式),能够得到其复数形式,或给出单数转复数形式的建议(提示,some_string.endswith(some_letter)函数可以判断某字符串结尾字符,可尝试运行:'myname'.endswith('me'),'liupengyuan'.endswith('n')`)。
def my_convert(verb):
if(verb.endswith('s') | verb.endswith('z') | verb.endswith('sh') | verb.endswith('ch')):
verb=verb+'es'
elif(verb.endswith('y')):
verb=verb[:-1]+'ies'
else:
verb=verb+'s'
return verb
print(my_convert('happy'))
print(my_convert('name'))
In [18]:
#挑战性练习:
def sum_of(m,n,k):
i=m
total=m
while i<n and i+k<n:
i=i+k
total=total+i
return total
print("累加和为",sum_of(1,10,2))