python怎么计算总值_python小白系列Day2—python基础以及pandas基础

dfbb95e6858b72ca11f59795757f051b.png

最近恰逢过年期间,聚会太多,还有论文以及笔者年后的实习培训,时隔几天,笔者终于在第一天更文之后,继续写第二篇了。

打算写这个,主要是想记录自己从0到1的过程,欢迎拍砖。

part one 思考部分

笔者觉得编程的过程可以形容成做菜,都要遵循一定的规律来创造价值。数据就是原材料,语句和功能就是做饭的过程,最后实现了什么需求或者解决什么问题,就是做成了一道什么菜。

层次一(原材料):数据(数据类型及数据结构)

既然做饭的原材料有鸡鸭鱼肉,那么在python中,笔者把数据的相关知识分为三类,数字,字符串以及数据结构。

其中数字分为三种(浮点、整型、复数)。基本的数据结构又分为四种(字典、集合、列表、元祖)。

‘原材料’的数据具体知识,请自行百度~传送门在这里

层次二(切菜、洗菜):数据运算以及语句(循环语句与条件控制)

针对数据以及数据结构,有相同的学习结构,都是加减乘除。

a579e169bc9e8c1e76b3e0c963fc7829.png

968f4964c11b6b65b1ed101d32394c6f.png

层次三(做饭的过程):编程思维——设计出解决问题的思维,映射在代码世界里。

在拿到实际应用场景或者一个问题,作为新手,一开始画出流程图应该是一个不错的方法。

层次四(调料及火候):功能(方法及函数)

def function(arg1,arg2) :

return 'someting'

函数一般适用于经常出现的某种需求,可以把它的解决方法封装起来,当作一种方法,需要的时候,就调用。

numpy以及pandas基础

af72945e40c0c979898b0ebb4e33a1bc.png

其中pandas的绘图基础知识:

有关的库是matplotlib。

dataframe的数据结构,index将作为X轴,Y轴自己选取,即可画出简单的图。

import matplotlib as plt
from matplotlib import style
style.use('某格式')#选择格式

df['cloumns1'.plot()
plt.show()
#df.plot()绘制整个数据帧
#plt.show()

适合具有python基础的人,进阶的pandas教程。(传送门在此)

part two 行动部分

笔者在把教程的每一句代码,都打一遍之后,然后在想一个问题,为什么跟着教程的代码,打一遍,在碰到一个问题的时候,我还是毫无头绪?

发现原因有二:(1)常用方法及函数不熟悉(2)设计解决问题的思维能力欠缺,即解决问题在代码世界,映射的流程图,无法画出。

例如,这道题。

设计一个小游戏猜大小。游戏开始,首先玩家选择 Big or Small(押大小),选择完成后开始摇三个骰子计算总值,11 <= 总值 <=18 为 “大”,3 <= 总值 <= 10 为 “小”。然后告诉玩家猜对或是猜错的结果。

我看到这道题后,第一直觉是好麻烦,不想做。。然后开始画流程图。

8bc43bf5319fb7728b4bd525471b8435.png

我的流程图,其实并不准确,第二阶段准确的说应该是将色子总数转化成大小。因为让用户判断大小,是在第三阶段让计算机做的事情。计算机需要把数字总和转化成游戏规则的“大”或者“小”。

53bc5a4d9e92933c1530f97e8e8e0786.png

首先,第一个和第二个步骤是可以封装成函数的,第三阶段调用。

在摇色子的第一个阶段,这件事情的核心是——随机生成三次(1,6)的数字,再求和。

import 

第二阶段,这件事情的核心是——判断三次总和处于哪个区间。

def result(total):
    if  total>=11 and total <=18:
         return 'Big'
    elif total>=3 and total<=10:
         return 'Small'

第三阶段,这件事情的核心是——判断用户是否猜中,以及在什么位置调用之前的函数?

在第三阶段计算机正确的做法是:

(1)让用户输入是大是小

(2)随机生成三个数

()判断大小是否正确,用户赢或者输

#从第一步开始
print(<<<game start>>>)
chioce = [Big,Small]
your_chioce = input('输入你的选择:' )
#第一步结束
if yourchioce in chioce :
    number = yaoyiyao()#调用函数,开始生成三个数
    numbers = sum(number)
    win = your_chioce == result(total)#调用函数,判断选择是否等于点数区间。
    if win:
       print('You win!')
    else:
       print('You lose')
else:
    print('Invalid Words')
#这个也可以封装成一个函数。

这是笔者动手画出流程图的第一个编程,另外笔者的另一个作业,也发现一个问题。

题目如下。

我们在注册应用的时候,常常使用手机号作为账户名,在短信验证之前一般都会检验号码的真实性,如果是不存在的号码就不会发送验证码。检验规则如下:
(1)长度不少于11位;
(2)是移动、联通、电信号段中的一个电话号码;
(3)因为是输入号码界面,输入除号码外其他字符的可能性可以忽略;
移动号段,联通号段,电信号段如下:
CN_mobile = [134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705]
CN_union = [130,131,132,155,156,185,186,145,176,1709]
CN_telecom = [133,153,180,181,189,177,1700]

很明显,这个问题需要用到字符串切割(取前三位),if判断语句。

笔者当时觉得不需要用到while语句,代码敲完之后,发现需求也能实现。但是笔者忽略了一件事情,就是if语句需要判断三次,但是不能使用elif,因为这三次不是递进关系,而是并列关系,是需要同时进行的。

而三个if语句需要同时进行,三个if,最后一个else。这个else语句只会负责最后一个if语句,也就是说,如果输入的数字,判断出来是在前两个情况的话,最后一个if—else语句中的else也会打印出来,这样就不符合逻辑了。

因此需要用到while语句,我们需要用到break,在每一个if语句后面都跳出,就不会让if循环一直进行下去,而多打印出一个else语句。

————

这几天的学习问题:一旦陷入学习后,就想要把每一个概念都理解清楚。所以等到了numpy的时候,笔者又陷进去了,学起了线性代数、时间序列以及矩阵运算。。。但是笔者的当务之急只是赶紧熟悉pandas,然后在具体情境中迅速上手,分析数据。。

因为知识无法运用,只会迅速遗忘。

所以,接下来笔者的方向,是直接上手操作题目,在题目中总结。

(题目来自公众号:印客美学、这个小文章的参考资料有麻瓜编程,三天搞定python基础,链接见上一篇文章。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值