「学习笔记」3.15代码学习

来源:互联网 发布:java poi 跨行合并 编辑:程序博客网 时间:2024/05/01 23:29

未解决问题:
2004用字典做
已解决.3.16

今天快被这系统搞疯了,到现在才弄好,真的是有好多要学的啊,出了一点问题就没撤,在网上找了一堆方法,都试个遍,结果把系统搞崩溃了,真是要命,虽然应该把崩溃和解决的步骤重新回味一下写出来,但是……我都不知道怎么弄的。唉……

暂停廖的教程学习,开始实践,将acmcoder里的练习题用python实现
习题来源:http://acm.acmcoder.com/listChineseproblem.php

2001 计算两点间距离

#encoding:utf8##计算两点间距离import mathdef distance((x1,y1),(x2,y2)):    return math.sqrt((x1-x2)**2+(y1-y2)**2)print distance((2,3),(5,7))

2002 计算球体积

#encoding:utf8##计算球体积import mathdef ballvolum(r):    while r>=0:        return 4.0/3*math.pi*r**3print ballvolum(1)print ballvolum(1.5)

2003求绝对值

#encoding:utf8##求绝对值#1abs()#2def func(x):    if x>=0:        return x    return -xprint func(-10)print func(10)

2004 成绩转换

#encoding:utf8##成绩转换##1#我是想通过字典,输入值与字典值做比较,输入值在哪个值里面,相应的输出其对应的键值, 但是还没能理解透字典的用法,不成功,后续再弄3.15下午#字典倒是弄明白了,但是结果还是有问题3.15晚def scorechange(x):    dic={'A':range(90,101),'B':range(80,90),'C':range(70,80),'D':range(60,70),'E':range(0,60)}    for i in dic.keys():        if x in dic[i]:            return i        # else:    #如果不加这句结果正确,但是题目要求做错误判断,一加上结果就不对了。        #     return 'Score is error!'print scorechange(56)print scorechange(67)print scorechange(100)print scorechange(123)#以下是为了验证上部分代码哪里出了问题# x=80# dic={'A':range(90,101),'B':range(80,90),'C':range(70,80),'D':range(60,70),'E':range(0,60)}# for i in dic.keys():#     # print i#     # print dic[i]#     if x in dic[i]:#         print i#1更正3.16def scorechange(x):    dic={'A':range(90,101),'B':range(80,90),'C':range(70,80),'D':range(60,70),'E':range(0,60)}    for i in dic.keys():        if x in dic[i]:            return i    return 'Score is error!'#原来此处是在if里的,本来想表达的意思是要遍历字典,找到x返回键,没找到返回error,但是如果在if语句里,相当于字典并没有完全遍历,而是只看第一个有没有,没有就返回error,将error提到循环外,循环遍历没有后再输出errorprint scorechange(56)print scorechange(67)print scorechange(100)print scorechange(123)##2def scorechange(x):    if x in range(90,101):        return 'A'    elif x in range(80,90):        return 'B'    elif x in range(70,80):        return 'C'    elif x in range(60,70):        return 'D'    elif x in range(0,60):        return 'E'    else:        return 'Score is error'print scorechange(56)print scorechange(67)print scorechange(100)print scorechange(123)

2005第几天

#encoding:utf8##第几天def is_leap(x):    if (x%400==0) or ((x%4==0) and (x%100!=0)):        return True    return Falsedef days(date):    l_str=date.split('/')    l_num=[int(i) for i in l_str]  #将输入字符串变为整型    #print l_num    month_day={1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}    if is_leap(l_num[0]):        month_day[2]=29    #print month_day    if l_num[1]==1:        return l_num[2]    else:        sum=0              #初始化不要放在循环里,要不结果会出现错误        for i in range(1,l_num[1]):            sum=sum+month_day[i]        #print sum        return sum+l_num[2]print days('1985/1/20')print days('2006/3/12')print days('2000/3/12')print days('2016/3/12')print days('2100/3/12')##以下代码是写代码时验证split是否能正确工作# date='1985/1/20'# l_str=date.split('/')# l_num=[int(i) for i in l_str]# print l_num

2006求奇数乘积

#encoding:utf8##求奇数的乘积def odd(x):    if x%2!=0:        return True    else:        return Falsedef odd_mult(L):    lst=filter(odd,L)    if len(lst)==0:    #判断列表是否有奇数        return 'There is no odd in the list.'    else:        lst1=set(lst)  #去重        num=1        for i in lst1:            num=num*i        return numprint odd_mult([3,1,2,3])print odd_mult([4,2,3,4,5])print odd_mult([2,4,4,6,8])
0 0
原创粉丝点击