In [2]:
#练习 1:仿照求$ \sum_{i=1}^mi + \sum_{i=1}^ni + \sum_{i=1}^ki$的完整代码,写程序,可求m!+n!+k!
m = int(input('请输入第1个整数,以回车结束。'))
i = 0
jiecheng_m = 1
while i < m:
i = i + 1
jiecheng_m = jiecheng_m * i
n = int(input('请输入第2个整数,以回车结束。'))
i = 0
jiecheng_n = 1
while i < n:
i = i + 1
jiecheng_n = jiecheng_n * i
k = int(input('请输入第3个整数,以回车结束。'))
i = 0
jiecheng_k = 1
while i < k:
i = i + 1
jiecheng_k = jiecheng_k * i
print('最终的和是:', jiecheng_m + jiecheng_n + jiecheng_k)
In [9]:
#练习 1:仿照求$ \sum_{i=1}^mi + \sum_{i=1}^ni + \sum_{i=1}^ki$的完整代码,写程序,可求m!+n!+k!
def compute_jiecheng(end):
i = 0
jiecheng_n = 1
while i < end:
i = i + 1
jiecheng_n = jiecheng_n * i
return jiecheng_n
m = int(input('请输入一整数'))
n = int(input('请输入一整数'))
k = int(input('请输入一整数'))
print(compute_jiecheng(m) + compute_jiecheng(n) + compute_jiecheng(k))
In [10]:
#练习 2:写函数可返回1 - 1/3 + 1/5 - 1/7...的前n项的和。在主程序中,分别令n=1000及100000,打印4倍该函数的和。
def compute_sum(end) :
i = 0
jsum = 0
while i < end :
i = i + 1
jsum = jsum + (-1)**(i+1)* 1/(2*i-1)
return jsum
print('当n = 1000时,4倍函数的和为: ',compute_sum(1000) *4)
print('当n = 100000时,4倍函数的和为:',compute_sum(100000) *4)
In [11]:
#练习 3:将task3中的练习1及练习4改写为函数,并进行调用。
#3.6 实践与练习
#练习 1:写程序,可由键盘读入用户姓名例如Mr. right,让用户输入出生的月份与日期,判断用户星座。
def xingzuo(data):
if 3.21<=data<=4.19:
print(name,',你是非常有个性的白羊座')
elif 4.20<=data<=5.20:
print(name,',你是非常有个性的金牛座')
elif 5.21<=data<=6.21:
print(name,',你是非常有个性的双子座')
elif 6.22<=data<=7.22:
print(name,',你是非常有个性的巨蟹座')
elif 7.23<=data<=8.22:
print(name,',你是非常有个性的狮子座')
elif 8.23<=data<=9.22:
print(name,',你是非常有个性的处女座')
elif 9.23<=data<=10.23:
print(name,',你是非常有个性的天秤座')
elif 10.24<=data<=11.22:
print(name,',你是非常有个性的天蝎座')
elif 11.23<=data<=12.21:
print(name,',你是非常有个性的射手座')
elif 12.22<=data<=1.19:
print(name,',你是非常有个性的魔蝎座')
elif 1.20<=data<=2.18:
print(name,',你是非常有个性的水瓶座')
else:
print(name,',你是非常有个性的双鱼座')
name=input('请输入你的名字:')
data=float(input('请输入你的出生月份和日期,以xx.xx形式,如3.09:'))
xingzuo(data)
In [12]:
#练习 3:将task3中的练习1及练习4改写为函数,并进行调用。
#3.6 实践与练习
#练习 4:英文单词单数转复数,要求输入一个英文动(名???)词(单数形式),能够得到其复数形式,
#或给出单数转复数形式的建议
#(提示,some_string.endswith(some_letter)函数可以判断某字符串结尾字符,
#可尝试运行:'myname'.endswith('me'),liupengyuan'.endswith('n'))。
def vt_change(a):
if a.endswith('o') or a.endswith('s') or a.endswith('x')or a.endswith('ch') or a.endswith('sh'):
print (a,'es',sep='')
elif a.endswith('y'):
if a[:-1].endswith('a')or a[:-1].endswith('e') or a[:-1].endswith('i') or a[:-1].endswith('o') or a[:-1].endswith('u') :
print(a,'s',sep='')
else:
print (a[:-1],'ies',sep='')
else:
print(a,'s',sep='')
a=input("请输入一个可数英文名动词的单数形式")
vt_change(a)
In [13]:
#挑战性练习:写程序,可以求从整数m到整数n累加的和,间隔为k,求和部分需用函数实现,主程序中由用户输入m,n,k调用函数验证正确性。
#[^1] : 主程序可简单理解为指一个程序代码中第一层次的语句,该语句前没有空格,同时也不是函数定义语句。
#[^2] : None这个对象不太容易清晰定义,举例进行说明会更容易理解。
# 假设我们数东西(对象),如果数苹果,可以说1个苹果,2个苹果。
# 当没有的时候,我们不说这是0个苹果,因为这时没有苹果这个对象存在;
# 不能说这是0,因为我们不一定是在数数;
# 也不能说没有苹果,因为我们不一定数什么我们只能说'没有'或'没有东西',
# 这时候没有具体的对象和数。但是我们知道,如果确定了要数任何对象A,我们就可以说'没有A'。
# 所以,python语言中,None可以被赋值给如函数及变量等任何对象。
#[^3] : 此处多个返回值是在()里面,表示是python中元组(tuple)类型,将在后续章节介绍。
#[^4] : 用global关键字,可以在函数内部改变全局变量的值,相对特殊,将在后续章节介绍。
def sum_leijia( m, n, k):
i = m
sum = 0
while i <= n:
sum = sum + i
i = i + k
return sum
m = int(input('请输入整数m的值:'))
n = int(input('请输入整数n的值:'))
k = int(input('请输入整数k的值:'))
print(sum_leijia(m,n,k))