个⼈记录:对于python学习的反思和总结(⼀)
在写代码时,总是遇到写着写着不知道怎么写了的情况,或者⽆法把⾃⼰的想法⽤程序表达出来,所以有时候我们需要建⽴⼀个⾃⼰的编程思路,对⼀个具体程序的编程有⼀个⽐较清晰的想法;因此我把⾃⼰的思路总结了⼀下,对多数的编程问题抽象为⼀些具体的步骤,使得编程问题变得具体化。想法未必具有普遍性,只是⼀个个⼈的编程思路。
学python看谁的视频比较好⼀、抽象化模型
对于python的理解,⾸先是要明确语⾔是⽤来交流的,⽽编程语⾔是为了实现你所需要执⾏的功能的。python的学习,⾸先要明确它是⼀门语⾔,所以在开始敲代码前,你需要想清楚你要python做什么,然后⽤⾃⼰的语⾔尽可能的详细描述出来,最后翻译成为python的语⾔。
所以对于在python中编程的思路可以抽象为以下的过程:
1.想好你需要⽤python做什么
2.让python知道你要做什么:
(1)⽤⾃⼰的语⾔想好做这件事情的步骤(尽可能详细)
(2)把这些步骤翻译翻译,成为python的语⾔
3.查看输出的结果(验证是否是⾃⼰需要的结果)
4.程序的修改与调整,以及整个过程的优化
这个过程和我们做数学题⽬是很相似的,其中重要的是如何详细的⽤⾃⼰的语⾔描述出来,这是编程的整个思路。我们在描述问题时,尽可能按照逻辑顺序来描述,就如同怎么把⼤象关进冰箱,其过程⼀共就三步:打开冰箱,装⼊⼤象,关上冰箱。之后就是把⾃⼰描述的语⾔翻译成为编程软件能够读懂的语⾔,其中遇到不会的地⽅,可以直接去搜索编程语句,或者可以去参考其他的算法。这就好像我们已经知道怎么把⼤象关进冰箱了,可是我们怎么让⼤象进⼊冰箱呢?⼜或者⼤象这么⼤,怎么进⼊冰箱?答案不唯⼀,如果我们想到的是⽤⾷物诱惑⼤象进⼊⼀个冰柜⼀样⼤⼩的冰箱的话,我们可以尝试着去实践来检验我们的想法。最后就是我们需要对设计的⽅法不断改进以及优化。 ⽽其中对于简单的过程,我们可能⼀步就能想好,并且都不需要第3和第4个步骤;但是对于难⼀些的问题,我们需要在想好整个事情的执⾏流程后,再开始对每⼀步进⾏⼀个具体的描述。
⼆、举例
1.很简单的例⼦:计算任意数字的相加
1.1 想好你需要python做什么:计算任意数字的相加
1.2 让python知道你要做什么:
1. ⽤⾃⼰的语⾔尽可能的详细描述问题:在python中随机输⼊两个数字,让其计算结果,并且显⽰出来。
2. 翻译:
(1).在python中随机输⼊两个数字
a = input('请输⼊第⼀个数:')
b = input('请输⼊第⼆个数:')
(2).让其计算结果
c = a+b
(3).显⽰出来
print(c)
总代码:
a = input('请输⼊第⼀个数:')
b = input('请输⼊第⼆个数:')
c = a+b
print(c)
这就如同做数学题⽬⼀样,不需要记住具体的语法,只需要记住你⾃⼰思考的过程,然后到相应的语法,再进⾏相应的翻译。
2.简单的例⼦:简单的学⽣管理系统
2.1 想好需要python做什么:做⼀个学⽣管理系统
2.2 让python知道你要做什么:
1 ⽤⾃⼰的语⾔描述程序的过程:我需要看到系统的显⽰界⾯,然后选择相应的功能,⽐如我想添加学员的信息,或者删除学员(⽅便起见只选择两个功能,其他类似)
2 ⽤python的语⾔描述:
(1).看到显⽰界⾯:
print("------请选择功能------")
print("1.添加学员")
print("2.删除学员")
2).选择相应的功能:
从这⼀步开始,每个功能都需要具体化的去描述:选择功能,即当我输⼊1的时候,需要执⾏添加学员的功能,当我选择2的时候需要执⾏删除学员的功能,当我们选择功能⾥⾯不存在的数字时,我们需要提醒:输⼊有误。
以上翻译翻译就是:使⽤判断语句对⽤户输⼊进⾏判断,如果⽤户输⼊1,则调⽤添加学员函数,如果⽤户输⼊2,则调⽤删除学员函数,如果⽤户输⼊其他,则显⽰输⼊错误,具体代码如下:
user_num=int(input("请输⼊功能序号:")) #⽤户输⼊选择的功能
if user_num == 1: #使⽤判断语句对⽤户输⼊进⾏判断
add_information() #如果⽤户输⼊1,则调⽤添加学员函数
elif user_num == 2: #使⽤判断语句对⽤户输⼊进⾏判断
del_information() #如果⽤户输⼊2,则调⽤删除学员函数
else:
print('输⼊有误') #如果⽤户输⼊其他,则显⽰输⼊错误
其中的add_imformation()和del_information()是我们执⾏具体功能的函数。
增加学⽣信息:add_imformation()函数
之后我们继续思考,怎么去添加学员:当我们选择1后,我们按照提⽰输⼊学⽣的信息,⽐如说学⽣的姓名,学⽣的性别;然后将这个保存下来,并且显⽰给我看,让我知道是否成功。
翻译翻译就是:⽤户输⼊1,调⽤添加学员函数,⾸先使⽤input函数让⽤户进⾏信息的输⼊,然后把⽤户输⼊的信息保存在列表中,最后打印在界⾯中。
值得注意的⼏点是:我们把⽤户的信息保存在列表中,需要创建⼀个列表,因为这个列表⾥⾯的信息不仅仅是在增加学员信息这个函数中,后⾯我们还会被⽤到,所以需要将其定义在函数之外,使其变成全局变量,并且在函数内更改时需要申明它是全局变量。并且,信息的输⼊基本都是需要配对的,如:{姓名:张三},所以我们需要把存储的数据变成字典,然后保存在列表⾥⾯(到了详细的地⽅,对语句不知道或者不懂,就可以直接百度搜索,但是⼀定要想好到底要怎么样去实现这个功能)
代码如下:
student_information = [] #创建⼀个全局列表
def add_information():
#⾸先使⽤input函数让⽤户进⾏信息的输⼊
new_name = input("请输⼊姓名:")
new_gender = input("请输⼊性别:")
global student_information #申明全局变量
#新增字典(⽤来存储相对于的信息)
student_information_new = {}
#把⽤户输⼊的信息保存在列表中
student_information_new['name'] = new_name
student_information_new['gender'] = new_gender
#在student_information中追加字典student_information_new
student_information.append(student_information_new)
print(student_information)
这个函数是有⼀些问题,但是我们先把想到的翻译好,写好,最后调整优化程序的时候再来解决⾥⾯没有想到的问题。
删除学员信息:del_information()
删除学员信息:我们输⼊要删除的学员姓名(可以是其他的具有唯⼀性的指定信息,这⾥假设学员姓名不重复),然后然python把信息
删除掉,最后在界⾯显⽰删除成功。
翻译翻译就是:⾸先使⽤输⼊函数input得到需要删除的学⽣信息姓名,然后在for语句中⽤这个姓名去遍历存储所有学⽣信息的student_information列表,从⽽到该⽣姓名,最后删除该姓名对应的列表信息,并且在显⽰界⾯提⽰删除成功。
代码如下:
def del_information():
del_name=input('请输⼊要删除学⽣信息的姓名:')
global student_information #申明student_information是全局变量
for i in student_information: #让i遍历student_information
if i['name'] == del_name:
ve(i)
print('删除成功')
值得注意的是:在编写程序时,如果⼀个字符串没有定义,则⼀定要加上 ' ',如同上⾯代码中的name⼀样。
在把所有的代码打上去后会发现⼀个很严重的问题,在页⾯的代码中,add_information()和del_information() 是标着红线的。这个是语句顺序原因,我们需要先申明函数,才能够调⽤函数。
整个代码如下:
print("------请选择功能------")
print("1.添加学员")
print("2.删除学员")
student_information = [] #创建⼀个全局列表
def add_information():
#⾸先使⽤input函数让⽤户进⾏信息的输⼊
new_name = input("请输⼊姓名:")
new_gender = input("请输⼊性别:")
global student_information #申明全局变量
#新增字典(⽤来存储相对于的信息)
student_information_new = {}
#把⽤户输⼊的信息保存在列表中
student_information_new['name'] = new_name
student_information_new['gender'] = new_gender
#在student_information中追加字典student_information_new
student_information.append(student_information_new)
print(student_information)
def del_information():
del_name=input('请输⼊要删除学⽣信息的姓名:')
global student_information #申明student_information是全局变量
for i in student_information: #让i遍历student_information
if i['name'] == del_name:
ve(i)
print('删除成功')
user_num=int(input("请输⼊功能序号:")) #⽤户输⼊选择的功能
if user_num == 1: #使⽤判断语句对⽤户输⼊进⾏判断
add_information() #如果⽤户输⼊1,则调⽤添加学员函数
elif user_num == 2: #使⽤判断语句对⽤户输⼊进⾏判断
del_information() #如果⽤户输⼊2,则调⽤删除学员函数
else:
print('输⼊有误') #如果⽤户输⼊其他,则显⽰输⼊错误
这样的话,⼀个简单的不完善的学⽣管理系统就算是勉强完成了,但是其中还是有很多问题的,⽐如添加学员中,要是已经有了该⽣的信息应该怎么办;在删除学员信息中,要是没有该学员的信息应该怎么办;上⾯的代码只能运⾏⼀次,所以怎么让它不主动退出,⽽是⼈为的选择退出。⽽且还有其他很多功能,如修改、存储、调⽤学员信息应该如何做到。
这些问题的解决思路也是参考以上的步骤,先⽤⾃⼰的语⾔尽可能的详细描述,然后翻译成为编程软件的语⾔。
⽐如说我们要写⼀个修改学员信息的函数,这可以参考删除学员信息的函数。⾸先⽤⾃⼰的语⾔描述:我们输⼊要修改的学员信息的姓名,然后选择需要修改的地⽅,最后提⽰是否修改成功。
翻译翻译就是:⾸先⽤input语句得到需要修改信息的学员姓名,然后⽤for语句去遍历整个存储信息的列表,到后提⽰⽤户输⼊需要修改的信息(如:选择修改选项:1.姓名,2.性别),最后修改列表中的信息,并且提⽰修改成功。
再⽐如说要存储学员的信息,我们可以想是不是需要创建⼀个⽂件来保存信息,这样的话需要使⽤操
作⽂件的代码语句等等,诸如此类。
这些就属于后期程序的调整以及优化的过程了,在这个过程中我们需要去处理程序中出现的bug,以及是否能将代码改进(⽐如⽤类来定义学⽣和管理员),是否能够让功能更加完善等等。这就需要⾃⼰⼀个个的去尝试,具体⽅法也可以参考以上四个步骤,其中哪⾥不会搜百度,或者⾃⼰查看python的语法,甚⾄可以借鉴其他代码来完成。但是要记住⼀点,要是编程能⼒不够,先不要要求⾃⼰⼀步到位,先想好思路,然后按照思路写好程序,最后再去慢慢的优化。⼀个好的算法程序就是需要程序员⼀步⼀步的慢慢优化⽽来。
总结
对于简单的项⽬以及程序都可以⽤这个抽象的模型去套⽤,不过这个模型并不是很完善,主要思想就是先⽤⾃⼰的语⾔描述程序的每⼀步,然后想办法翻译成编程软件的语⾔,最后对代码进⾏优化和调整。这个本⾝就是编写程序的⼀个思路过程,但是如果有想法时,按照模型慢慢去套⽤,慢慢去详细化的话,会促使得⾃⾝更加想去实现它,因为你的想法正在⼀步步的具体化,⽽且通过程序的语法和算法的帮助,还能够真正的去实现它。
很重要的⼀点是:要把⾃⼰的想法详细化,尝试⽤⾃⼰学过的程序语法知识去实现它;如果哪⼀步⽆法实现,就去查资料,或者替换成另⼀种⽅法,最好不要因为⾃⼰⽆法实现哪个步骤⽽放弃了⾃⼰
的想法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论