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这个函数,如果大家有兴趣的话可以看一下这篇文章!
总结
学习是一种快乐的事情,只要你愿意花时间和精力。那么我也愿意和你一起分享学习的快乐!这个世界上没有什么解决不了的问题!你敢想,我敢做!PYTHON的奇幻世界里面,没有什么不可能!
下期更加的精彩!再见~
欢迎大家阅读我的《人性的弱点》,给你一种不一样的感觉!