【python编程】入门系列3.0

入门系列共三篇文章,每道题的知识点总结和细化都写明于本系列【python编程】的【入门系列知识点总结】这篇文章,可进行查看。

问题1:

求一个3*3矩阵主对角线元素之和。

知识点:关于 if __name__== '__main__' 的使用和意义,涉及到两种模块执行的区别,以及判断条件是否成立的问题。以及创建二维矩阵的三种方法。

代码:

 
if __name__ == '__main__':
    a = []
    sum = 0.0
    for i in range(3):
        a.append([])
        for j in range(3):
            a[i].append(float(input("input num:\n")))
    for i in range(3):
        sum += a[i][i]
    print (sum)

问题2:

按相反的顺序输出列表的值。

知识点:直接利用数组遍历(三参数法),最后一个循环值为-1输出即可。

代码:

a = [9,6,5,4,1]
for i in a[::-1]:
    print(i)

问题3:

使用lambda来创建匿名函数。

知识点:

代码:

MAXIMUM = lambda x,y :  (x > y) * x + (x < y) * y
MINIMUM = lambda x,y :  (x > y) * y + (x < y) * x
 
if __name__ == '__main__':
    a = 10
    b = 20
    print ('The largar one is %d' % MAXIMUM(a,b))
    print ('The lower one is %d' % MINIMUM(a,b))

问题4:

输出一个随机数。

知识点:生成随机数的方法,此处使用的是random.uniform(a,b)方法,功能是生成一个[a,b)的随机浮点数。还有很多方法,如生成随机整数random.randint(a, b)生成随机矩阵的np.random.randn(a, b)等。详见另一篇博客。

代码:

import random
 
#生成 10 到 20 之间的随机数
print (random.uniform(10, 20))

问题5:

打印出杨辉三角形。

知识点:计算不是问题,很容易找到规律,注意一下输出。我在转化为字符串的print里面的range(i+1)这里卡了好久,总是少最后a[i][i]这一列,裂开。

在此补充一个输出方法:sys.stdout.write()print方法默认输出完后打印换行,而stdout.write()方法没有换行

代码:

a=[[0 for i in range(10)] for j in range(10)]
for i in range(10):
    a[i][0]=a[i][i]=1
for i in range(2,10):
    for j in range(1,i):
        a[i][j]=a[i-1][j]+a[i-1][j-1]

for i in range(10):
    print(' '.join(str(a[i][j]) for j in range(i+1)))

# 第二种输出方法,stdout.write()
# from sys import stdout
# for i in range(10):
#     for j in range(i + 1):
#         stdout.write(str(a[i][j]))
#         stdout.write(' ')
#     print()

输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1

问题6:

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

知识点:主要是思路和方法的处理。没有必要在判断k==3时再弄一个循环判断。

代码:

n=int(input('请输入总人数:'))
a=[1 for i in range(n)]

i=0
m=0
k=0
while m<n-1:
    if a[i]!=0:
        k+=1
    if k==3:
        a[i]=0
        k=0
        m+=1
    i+=1
    if i==n:
        i=0
i=0
while a[i]==0:
    i+=1
print(i+1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值