PYTHON奇幻冒险记15 发现新大陆

PYTHON奇幻冒险记15 发现新大陆

第十五节 程序员的逻辑思维

每天只需要占用大家中午吃饭的十分钟,有事没事看一下,轻松掌握一门语言!让我们一起努力吧。

前言

大家好,欢迎大家来到PYTHON的奇幻冒险世界,我是你们的好朋友,小鹏鹏。
亲爱的伙伴们,经过了一路的风风雨雨,是不是我们已经收获和成长了很多呢?如果没有也不要紧。我认为我们接下来可以放慢一下脚步,好好想想自己要做哪些提高与改进。

我应该如何学懂PYTHON

本节课,不想涉及太多新的知识点,只是想和大家一起聊了学戏中大家都可能遇到的问题。 对于我而言,最大的问题是:一天什么都会,一做啥也不会! 怎么办?其实我们细细的思考一下!重要的原因是我们没有掌握如何去解决问题! 也就是老人们常对我们说的一句话,路要一步步走,饭要一口口吃!这句话已经告诉我们了答案!把复杂的问题,如果我们可以拆分成为很多步骤,一步步的解决问题!一切难题都会迎刃而解!这就是答案!

案列分析

“打印九九乘法表”

怎么做呢?
大家想一下步骤:

print('1 X 1 = 1')
print('1 X 2 = 2  2 X 2 = 4')
print('1 X 3 = 3  2 X 3 = 6  3 X 3 = 9')
print('1 X 4 = 4  2 X 4 = 8  3 X 4 = 12  4 X 4 = 16')
...
...

是这样吗?大哥,我们好歹也是程序员,这样不行啊。
那么换一种方式?先想想,后操作!!!

我们再来观察九九乘法表,我们会发现一个规律:每一行的等式里,第一位数会递增,第二位数则会保持不变,并且在第几行就会有多少个等式。

先简单一些,打印出这个:

1 X 2 = 2  2 X 2 = 4
1 X 3 = 3  2 X 3 = 6  3 X 3 = 9

现在我们要做的是用for语句:

for i in range(1,3):
    print(str(i) + ' X 2 = ' + str(i*2))

for i in range(1,4):
    print(str(i) + ' X 3 = ' + str(i*3))  

但是这样,是不是还是有些麻烦呢?PYTHON print 不换行该多好啊!是不是还需要改进一下呢?

TIP:
print()函数里有个参数’end’是用来控制换行行数和结尾字符!话不多说,大家看一个例子就能明白其中的道理!

print('hello',end='')
print('world')

print('hello',end='  ')
print('world')

print('hello',end='!')
print('world')

答案是:

helloworld
hello  world
hello!world

现在优化一下:

for i in range(1,3):
    print('%d X %d = %d' % (i,2,i*2) ,end=' ')

for i in range(1,4):
    print('%d X %d = %d' % (i,3,i*3),end = ' ')

同时再升级一下:

for i in range(1,2):
    print( '%d X %d = %d' % (i,1,i*1) ,end = '  ' )
print('') 

for i in range(1,3):
    print( '%d X %d = %d' % (i,2,i*2) ,end = '  ' )
print('') 

for i in range(1,4):
    print( '%d X %d = %d' % (i,3,i*3) ,end = '  ' )
print('') 

for i in range(1,5):
    print( '%d X %d = %d' % (i,4,i*4) ,end = '  ' )
print('')

for i in range(1,6):
    print( '%d X %d = %d' % (i,5,i*5) ,end = '  ' )
print('') 

for i in range(1,7):
    print( '%d X %d = %d' % (i,6,i*6) ,end = '  ' )
print('')

for i in range(1,8):
    print( '%d X %d = %d' % (i,7,i*7) ,end = '  ' )
print('') 

for i in range(1,9):
    print( '%d X %d = %d' % (i,8,i*8) ,end = '  ' )
print('') 

for i in range(1,10):
    print( '%d X %d = %d' % (i,9,i*9) ,end = '  ' )
print('') 

答案是:

1 X 1 = 1  
1 X 2 = 2  2 X 2 = 4  
1 X 3 = 3  2 X 3 = 6  3 X 3 = 9  
1 X 4 = 4  2 X 4 = 8  3 X 4 = 12  4 X 4 = 16  
1 X 5 = 5  2 X 5 = 10  3 X 5 = 15  4 X 5 = 20  5 X 5 = 25  
1 X 6 = 6  2 X 6 = 12  3 X 6 = 18  4 X 6 = 24  5 X 6 = 30  6 X 6 = 36  
1 X 7 = 7  2 X 7 = 14  3 X 7 = 21  4 X 7 = 28  5 X 7 = 35  6 X 7 = 42  7 X 7 = 49  
1 X 8 = 8  2 X 8 = 16  3 X 8 = 24  4 X 8 = 32  5 X 8 = 40  6 X 8 = 48  7 X 8 = 56  8 X 8 = 64  
1 X 9 = 9  2 X 9 = 18  3 X 9 = 27  4 X 9 = 36  5 X 9 = 45  6 X 9 = 54  7 X 9 = 63  8 X 9 = 72  9 X 9 = 81  

大家再仔细观察一下啊!
行数是(1,10)但是列数是不是递增的呢?想想!

for i in range(1,10):
    for j in range(1,i+1):
        
        print('%d X %d = %d' % (i , j, i*j),end = '  ')
    print('')
1 X 1 = 1  
2 X 1 = 2  2 X 2 = 4  
3 X 1 = 3  3 X 2 = 6  3 X 3 = 9  
4 X 1 = 4  4 X 2 = 8  4 X 3 = 12  4 X 4 = 16  
5 X 1 = 5  5 X 2 = 10  5 X 3 = 15  5 X 4 = 20  5 X 5 = 25  
6 X 1 = 6  6 X 2 = 12  6 X 3 = 18  6 X 4 = 24  6 X 5 = 30  6 X 6 = 36  
7 X 1 = 7  7 X 2 = 14  7 X 3 = 21  7 X 4 = 28  7 X 5 = 35  7 X 6 = 42  7 X 7 = 49  
8 X 1 = 8  8 X 2 = 16  8 X 3 = 24  8 X 4 = 32  8 X 5 = 40  8 X 6 = 48  8 X 7 = 56  8 X 8 = 64  
9 X 1 = 9  9 X 2 = 18  9 X 3 = 27  9 X 4 = 36  9 X 5 = 45  9 X 6 = 54  9 X 7 = 63  9 X 8 = 72  9 X 9 = 81  

这就是我们想要的答案!

总结

这就是程序员应该有的思维!很多的文章不会说这些,因为他们并不是真正的程序员。一位合格的程序员要有逻辑思维!一步一步的解决问题!是最好的办法!

分享一下

现在我们需要把list1与list2合并在一起!然后排序一下!

list1 = [91, 95, 97, 99]  
list2 = [92, 93, 96, 98]

# 先创建一个list3,这就是空盒子
list3 = list1.copy()
list3.extend(list2)
print(list3)
#从低到高排序
list3.sort()
print(list3)

答案:

[91, 95, 97, 99, 92, 93, 96, 98]
[91, 92, 93, 95, 96, 97, 98, 99]

再分享一下

再上一个分享的基础上面,我们把难度升级一下,现在我们需要有平均成绩和低于平均成绩的名单。大家想想,现在应该怎么做呢?

grades_all_students =  [99, 95, 97, 99, 92, 93, 96, 98]  
sum = 0
aver_all_students = []

for i in grades_all_students:
    sum = sum + i
    average = sum/len(grades_all_students)  
    # 上面最好不要去数有几个学生,那样的话,学生数目发生变化就要调代码。
print('平均成绩是:{}'.format(average))

for j in grades_all_students:
    if j < average:
        aver_all_students.append(j) # 少于平均分的成绩放到新建的空列表中
print(' 低于平均成绩的有:{}'.format(aver_all_students))  
# 大家一定要注意一下细节啊!!!
# 一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

#基本语法是通过 {} 和 : 来代替以前的 % 。

#format 函数可以接受不限个参数,位置可以不按顺序。

答案:

平均成绩是:96.125
 低于平均成绩的有:[95, 92, 93, 96]

还有没有更好的方法解决这个问题呢?下面我们要开始接触一下库这个概念?
看过七龙珠的小伙伴们应该都会明白其中的道理。因为库就是布玛手中的万能胶囊!

import numpy as np #导入库这个概念!np就是numpy
grades_all_students =  [99, 95, 97, 99, 92, 93, 96, 98]  
#sum = 0
aver_all_students = []
average = np.mean(grades_all_students)#平均成绩
#for i in grades_all_students:
#    sum = sum + i
#    average = sum/len(grades_all_students)    
print('平均成绩是:{}'.format(average))

for j in grades_all_students:
    if j < average:
        aver_all_students.append(j) # 少于平均分的成绩放到新建的空列表中
print(' 低于平均成绩的有:{}'.format(aver_all_students)) 


low_means_grades= np.array(grades_all_students)
print(' 低于平均成绩的有:{}'.format(low_means_grades[low_means_grades<average]))

答案:

平均成绩是:96.125
 低于平均成绩的有:[95, 92, 93, 96]
 低于平均成绩的有:[95 92 93 96]

关于numpy这个函数,如果大家有兴趣的话可以看一下这篇文章!

numpy函数

总结

学习是一种快乐的事情,只要你愿意花时间和精力。那么我也愿意和你一起分享学习的快乐!这个世界上没有什么解决不了的问题!你敢想,我敢做!PYTHON的奇幻世界里面,没有什么不可能!
下期更加的精彩!再见~

欢迎大家阅读我的《人性的弱点》,给你一种不一样的感觉!

猜你喜欢

转载自blog.csdn.net/weixin_46259642/article/details/112407261