本次作业要求参见: https://edu.cnblogs.com/campus/nenu/2018fall/homework/2147
要求1 《代码规范》包括10项条款。(10分)
1、必须使用有明确含义的单词,禁止使用单独的字母,例如a,b,c...来对变量进行命名;(在具体编码中,变量n,可直接视为个数;变量a,可直接视为运算符可以使用;result、temp等变量不能用a,b代替,在结对编程的过程中,进行了纠正)
2、在遇到变量名特别长的情况下,不使用驼峰式的命名规则,必须使用下划线对单词进行连接。(first_num、second_num、third_num、fourth_num,在纠正前的命名形式为firstNum、secondNum、thirdNum、fourthNum,在结对编程的过程中,进行了纠正)
3、代码缩进问题:由于python对代码的缩进要求特别严格,所以我们严格按照要求进行缩进。普通代码行前不缩进,函数中的代码行都要进行tab键进行缩进。(在编程中,发生了不能缩进的时候进行缩进的情况,导致程序出现错误,例如n=input()前进行了缩进,导致程序代码外观不清晰,更严重的是代码跑不出来,在结对编程的过程中,进行了纠正)
4、代码格式对其问题:代码的美观可读性也是必不可少的一部分,因此,在结对编程中,要求同一级别的代码必须对其。(在编程中,这件事情纠正了好几次,while循环里的if语句比较多,没有能及时的对下面的语句进行对其,在后续编程中已纠正)
5、语句间的表达式不用空格隔开:因为我和卢帝同的编程习惯不同,我习惯将运算符两边用空格隔开,但是他没有这个习惯,为了减轻工作量和考虑他的习惯,我们选择不进行空格处理。
6、if、 if-else、if elif 语句使用格式
if condition:
statements
if condition:
statements
else:
statements
if condition:
statements
else if condition:
statements
else:
statements
因为在本程序中,主题函数就是对运算符进行判断,然后再进行操作,所以必须严格规范if、 if-else、if elif 语句使用格式,由于卢帝同对python基本语法不是很熟悉,经常在if后写(),为此纠正了几次,例如在代码
if fourth_num==1:
y=second_num
else:
assert isinstance(fourth_num, object)
y=fractions.Fraction(second_num,fourth_num)
中,纠正前的写法是:
if (fourth_num==1)
y=second_num
else
assert isinstance(fourth_num, object)
y=fractions.Fraction(second_num,fourth_num)
这样的语法python是运行不出来的,在结对编程中对其进行了纠正!
7)尽量不要写过长的语句。
我跟卢认为如果语句过长,要对语句进行拆分成多个短语句,以保证代码具有较好的可读性。当一个语句过长,在末尾利用转义符,
例如:s = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras magna turpis, viverra et cursus eget, efficitur sed eros. Curabitur finibus ultricies nisi, nec convallis nunc gravida sed. Nam ac facilisis eros, quis tincidunt turpis. Vestibulum quis mi quis justo faucibus condimentum. Aliquam accumsan ultricies orci id mollis. Mauris faucibus dignissim luctus. Aenean lacus nunc, ultricies ac ante eu, fringilla accumsan nisi. Cras et nunc posuere, mattis mi at, rutrum felis. Etiam volutpat neque sodales condimentum consectetur.'
更改后:
s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.\
Aliquam bibendum purus at nibh rutrum dapibus.\
Aliquam quis sem sagittis, rutrum magna quis, gravida quam.\
Sed porta ex nec leo elementum, a efficitur neque ornare.\
Ut tristique nunc vitae ultrices molestie."
8)对关键代码和重要的业务逻辑代码进行必要的注释。
对待核心功能和关键步骤必须要有良好的注释以便于代码的可读性。在python中有两种常用的注释形式:#和三引号。#用于单行注释,三引号常用于大段说明性文本的注释。例如:
def counts(file_name):
total=0
file=open(file_name,"r")
for line in file.readlines(): //依次读取每行
words=line.split(' ') //以空格为分隔符分割每行的单词,并返回字符串列表
total+=len(words) //计算每行的单词数,然后得出一个总数
print ("total",total) //输出文档的所有单词
在关键的核心部分给予注释,以便我和卢双方良好的理解与沟通。
9) 减少内循环中的无关计算,尽量往外层提取。
例如:
for(){
for(){
a=a*b*c;
}
}
应该将a*b*c的先算好,然后再放进循环内。否则会每次循环都浪费资源
10) 每个import语句只导入一个模块,最好按标准库、扩展库、自定义库的顺序依次导入。
例如:
import random
import fractions
import string
尽量避免导入整个库,只导入要使用的对象库,使程序运行的更加快速。
要求2 记录完成本周作业过程中,《代码风格规范》执行情况。
代码规范ID | 违反次数 | 违反举例 | 纠正次数 | 对此项规范的操作 |
第1条 | 3 | x=random.randint(1,10) x应为first_num | 3 | 保持不变 |
第2条 | 5 | firstNum应为first_Num | 5 | 保持不变 |
第3条 | 9 | 语句前没有tap | 9 | 保持不变 |
第4条 | 4 | if没有对齐,导致功能失效 | 4 | 保持不变 |
第5条 | 5 | flot ( x + y ) | 5 | 保持不变 |
弟6条 | 3 | if() | 3 | 保持不变 |
第7条 | 2 | 语句过长用\n进行分割 | 2 | 保持不变 |
弟8条 | 3 | 有的语句两人对该不该注释产生分歧 | 3 | 保持不变 |
第9条 | 2 | print("?")放在函数while i<n的同级 | 2 | 保持不变 |
第10条 | 引入顺序错误 | 1 | 保持不变 |