6.8 习题

1.将前面几章用while循环的习题,用for循环实现,并尽量写成函数。


In [12]:
#练习2:仿照实践1,写出由用户指定整数个数,并由用户输入多个整数,并求和的代码。
n = int(input('请输入一个你想要输入的整数个数,以回车结束:'))
numbers = [i for i in range(n+1)]
print(sum(numbers))


请输入一个你想要输入的整数个数,以回车结束:10
55

In [ ]:

2.写函数,返回一个list中所有数字的和


In [2]:
#写函数,返回一个list中所有数字的和
def sum_list(numbers):
    sum=0
    for i in numbers:
        sum += i
    return sum

numbers=[]
n = int(input('请输入list中元素的个数:'))
j = 0
while j < n:
    numbers.append(int(input('请输入一个整数')))
    j += 1
print(numbers)
print(sum_list(numbers))


请输入list中元素的个数:4
请输入一个整数1
请输入一个整数2
请输入一个整数3
请输入一个整数4
[1, 2, 3, 4]
10

3.写函数,返回一个list中的最小值


In [3]:
n=int(input('请输入你要输入的整数个数,以回车结束'))
a=[]
i=0
while i<n:
    a.append(int(input('请输入一个整数')))
    i=i+1
print(a)

print(min(a))


请输入你要输入的整数个数,以回车结束4
请输入一个整数5
请输入一个整数1
请输入一个整数3
请输入一个整数2
[5, 1, 3, 2]
1

4.写函数,返回某个元素/对象在一个list中的位置,如果不在,则返回-1.


In [6]:
def location_a(a):
    if k in a:
        i=0
        while i<n:
            if k==a[i]:
                return i+1
            i += 1
            
    if k not in a:
        return -1
    
n=int(input('请输入你要输入的整数个数,以回车结束:'))
a=[]
i=0
while i<n:
    a.append(int(input('请输入一个整数:')))
    i=i+1
print(a)

k = int(input('请输入要判断的一个整数,回车结束:'))
print(location_a(a))


请输入你要输入的整数个数,以回车结束:5
请输入一个整数:2
请输入一个整数:6
请输入一个整数:9
请输入一个整数:1
请输入一个整数:5
[2, 6, 9, 1, 5]
请输入要判断的一个整数,回车结束:6
2

5.写函数,可求两个向量的夹角余弦值,向量可放在list中。主程序调用该函数。


In [5]:
def cosx(a,b):
    if len(a)==len(b):
        aCb=0
        a2=0
        b2=0
        for i in range(len(a)):
            aCb+=a[i]*b[i]
            a2+=a[i]**2
            b2+=b[i]**2
        print(a,'和',b,'夹角的的余弦值为',aCb/((a2*b2)**0.5))
        
a=[]
b=[]
n = int(input('请输入向量所在的空间的维数,2或3:'))
j = 0
for i in range(n):
    for j in range(n):
        if(i==0):
            a.append(int(input('请输入向量a的一个坐标')))
        else:
            b.append(int(input('请输入x坐标')))
        
print('a =',a,',','b =',b)        

cosx(a,b)


请输入向量所在的空间的维数,2或3:2
请输入向量a的一个坐标2
请输入向量a的一个坐标3
请输入x坐标-2
请输入x坐标-3
a = [2, 3] , b = [-2, -3]
[2, 3] 和 [-2, -3] 夹角的的余弦值为 -1.0

6.挑战性习题:python语言老师为了激励学生学python,自费买了100个完全相同的Macbook Pro, 分给三个班级,每个班级至少分5个,用穷举法计算共有多少种分法?


In [1]:
n=0
for i in range(5,91):
    for j in range(5,91):
        for k in range(5,91):
            if(100==i+j+k):
                n=n+1# print('第一个班级:',i,'  第二个班级:',j,'  第三个班级:',k)
print(n)


3741