曹宇轩-第一次作业

0.个人情况介绍

经历:妥妥的编程小白一枚,本科的专业是机械设计制造及其自动化,大二上学期学过C语言,毫无疑问,已经还给授课老师了。硕士研究生期间,研究方向为机械装备机电控制,开始接触MATLAB,借助MATLAB 进行科学计算,并做一些系统仿真。严格的说没有系统的学习过编程。基本以网络为老师,需要什么,查阅什么,解决遇到的问题。目前转学Python主要是日后需要的可能性比较大。

认识:计算机谈不上是自己的喜欢的领域,但是信息技术无疑是当前乃至未来相当长一段时间都必须要了解甚至熟练掌握的东西。掌握相关的知识有助于提升工作效率,并应对未知挑战。

规划:并没有做过于长远的规划,本科阶段思考过这个问题,到目前为止的一切都在按照预定的轨迹向前进。在导师的指导下按照预期希望能够发表具有一定水准的论文,进一步系统地了解、从事科研工作。毕业之后的规划,目前并没有思考过多。时代变化的非常快,只有一点是自己能够确认的,就是掌握扎实的知识,提高自身综合素质,应对一切。

目标:软件工程本身是一门新兴的学科,相对于机械工程来说,无疑是相当年轻的。年轻也意味着活力,这是一门发展相当迅猛的学科,并在日常生活中占据越来越重要的地位。通过本课程的学习,系统地掌握编程知识,打牢编程基础,并通过一定的实践提升编程能力,更好的服务于日后工作。

1.理论学习

(1)完成了慕课第一章和第二章的视频,课后的习题完成了选择和论述题。第一章编程尝试动手,尽管参考借鉴了不少博客,文章,搜索了一些资料,但尚未完成,编写的Python程序错误多,还在调试中。希望能在课程中期逐步补足编程短板。以下代码不是能正确运行的代码,但还是贴上来,接受批评指正。

 

 

代码如下:

 

#_*_coding:utf-8_*_
__author__ = 'cyx'
import re

formula = input ()

Operators = ['+','-','*','/','^','(',')']
list = re.findall('[\d\.]+|\+|\-|\*|\/|\^|\(|\)', formula)

#判断格式
for j in range(len(formula)):
    if formula[j] in Operators and formula[j+1] in Operators:
        print('FORMAT ERROR')
    elif formula[j].isalpha():
        print('INPUT ERROR')
    elif formula[j] == '/' and formula[j+1] == '0':
        print('VALUE ERROR')

#乘方计算
def power(list,sign):
    a = list.index(sign)
    if sign == '^':
        b = str(float(list[a - 1])**float(list[a + 1]))
    else :
        return list
    del list[a]
    del list[a - 1]
    del list[a + 1]
    list.insert(a - 1, b)
    return list

#*、/计算
def mul_div(list,sign):
    a = list.index(sign)
    if sign == '*':
        c = float(list[a-1]) * float(list[a+1])
    elif sign == '/':
        c = float(list[a-1]) / float(list[a+1])
    # 删除掉列表里刚做运算的三个元素,并将刚计算的结果插入到列表中然后执行下一次计算
    del list[a]
    del list[a - 1]
    del list[a +1]
    list.insert(a - 1, str(c))
    return list

#+、-、*、/、^综合
def fun(list):
    sum = 0
    while 1:
        if '^' in list and '*' not in list and '/' not in list:
            power(list,'^')
        elif '^' not in list and '*' in list and '/' not in list:
            mul_div(list, '*')
        elif '^' not in list and '*' not in list and '/' in list:
            mul_div(list, '/')
        elif '^' in list and '*' in list and '/' in list:
            a = list.index('*')
            b = list.index('/')

            if a < b:
                power(list,'^') + mul_div(list, '*')
            elif a > b:
                power(list,'^') + mul_div(list, '/')
        else :
            for l in range(1, i , 2):
                if list[l] == '+' and list[l] == '-':
                    sum -= float(list[l + 2])
                elif list[l] == '+' and list[l + 1] != '-':
                    sum += float(list[l + 1])
                elif list[l] == '-' and list[l + 1] == '-':
                    sum += float(list[l + 2])
                elif list[l] == '-' and list[l + 1] != '-':
                    sum -= float(list[l + 1])
        break
    return sum


#检测括号,计算括号内的值,再替代回去。
def calculator(formula):
    l_bracket = []
    bracket_ans = 0
    if '(' not in formula:
        bracket_ans = fun(formula)
        return bracket_ans
    for k in range(i):
        if formula[k] =='(':
            l_bracket = k
        if formula[k] == ')':
            r_bracket = k
            a = 0  # 定义一个变量 存储括号表达式的结果
            eq = expression[l_bracket:r_bracket]  # 获取括号里的表达式
            a = fun(eq)  # 调用该函数计算括号里的表达式的值
            formula = formula[0:l_bracket[len(l_bracket) - 1]] + str(a) + formula[i + 1:len(formula) + 1]
        return calculator(formula)

print(calculator(formula))

 

借鉴参考的文章,博客如下:

https://blog.csdn.net/a971956955/article/details/81489914

https://blog.csdn.net/qq_25736745/article/details/88320095

https://cloud.tencent.com/developer/article/1328493

https://blog.csdn.net/hang916/article/details/82824780

https://www.jianshu.com/p/5d00546ab202

。。。。

(2)人月神话》读后感(第一章、第三章)

  单纯的从名字来看,难以将这本书同软件工程这门学科联系到一起,一点也不直白(当然看过目录,也是一脸茫然更无法想象,这本书被诸多软件工程师视为必读的“圣经”。囿于时间关系,并没有仔细地阅读这本书的各个章节(PDF版本的书籍着实影响阅读体验)。本节不敢说是读后感,只是一篇随笔罢了,小标题只是为了维护和题目的一致性。

  作者布鲁克斯无疑是一个传奇人物,本书便是建立在其在IBM公司担任项目经理时的实践经验基础上的。本书中既有很多发人深省的观点,又有大量软件工程的实践,可以解决许多意想不到的烦恼。

  作者在书中指出“表面上看起来好像没有任何一个单独的问题会导致困难,每个都能被解决,但是当它们相互纠缠和累积在一起的时候,团队的行动就会变得越来越慢”。在本书以及慕课的学习前,总是想当然的认为软件的开发要比研制飞机等工作简单的多,给人一种只要出现bug,修改就OK的错觉,而系统的研发的困难往往超出人的想象。

   虽然对书中的诸多专业性的知识不甚了解,但是本书在充分体现科学的工程素养外,同样重视个人精神。每个程序员都是乐观主义者。编程既是枯燥的同样也是一种乐趣。面对满屏的字母,无数不了解的函数及其用法以及出现的形形色色的BUG,总要有一种昂扬的精神和斗志。

2.实践学习

(1)编程环境

选择了目前比较流行的Python语言。配置好Pycharm(如下图)。并运行第一个程序,print(“Hello,World!”)。貌似编程界有一个传统,入门新语言时,第一个程序就是如何打印Hello,World!。

 

 

 (2)代码仓库

在github的注册中遇到无法进行验证的问题,搜索后发现是浏览器版本问题。在git工具上进行了简单的尝试,熟悉push,fork等常见操作,可以清晰的看出做出的修改,比较方便。

GitHub网页

 Github for Deskop

 

提交记录

 

 

 3. 评价   

   每天的学习时间大约为四小时左右。上午,下午各两小时,以理论学习为主,并辅以一定的实践,循序渐进。本周的主要的目的是理清各个账号,安装调试相应的软件平台,为之后的编程做好准备。希望每周在课程上花费10小时左右的时间。逐步熟悉软件工程,由于编程基础较差,需要花费更多的努力和精力,尽快赶上来。

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-02-23 20:58  cyx293777  阅读(203)  评论(0编辑  收藏  举报