python的列表(list)、元组(tuple)、字典(dict)

列表(list)、元组(tuple)、字典(dict)是python中内置的三种数据结构,也常常会在程序处理中用到,此处做个记录。

列表(list)
1)一组有序项目的集合。可变的数据类型【可进行增删改查
2)列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔。
3)列表中可以包含任何数据类型,也可包含另一个列表
4)列表可通过序号访问其中成员
常用列表操作:
1)list.append() 追加成员,成员数据
2)list.pop() 删除成员,删除第i个成员
3)list.count(x) 计算列表中参数x出现的次数
4)list.remove() 删除列表中的成员,直接删除成员i
5)list.extend(L) 向列表中追加另一个列表L
6)list.reverse() 将列表中成员的顺序颠倒
7)list.index(x) 获得参数x在列表中的位置
8)list.sort() 将列表中的成员排序
9)list.insert() 向列表中插入数据insert(a,b)向列表中插入数据

元组(tuple)
1)不可变序列
2)元组是以圆括号“()”包围的数据集合,不同成员以“,”分隔
3)与列表不同:元组中数据一旦确立就不能改变
4)通过下标进行访问

字典(dict)
1)键值对的集合(map)
2)字典是以大括号“{}”包围的数据集合
3)与列表区别:字典是无序的,在字典中通过键来访问成员。
4)字典是可变的,可以包含任何其他类型

声明:
M={k1:v1,k2:v2},访问 M[k1]将得到v1

常用字典操作:
1) dic.clear() 清空字典
2) dic.keys() 获得键的列表
3) dic.values() 获得值的列表
4) dic.copy() 复制字典
5) dic.pop(k) 删除键k
6) dic.get(k) 获得键k的值
7) dic.update() 更新成员,若成员不存在,相当于加入
8) dic.items() 获得由键和值组成的列表
9) dic.popitem() 随机去除dic中键值对,并且返回这个键值对的值
10) dic.setdefault(‘name’,’new’) 如果dic中有name这个键,那么则返回dic中name对应的值,如果没有则返回new
11) dic.update(another_dic) 用一个字典去更形另外一个字典

输入三个整数x,y,z,请把这三个数由小到大输出

# -*- coding: utf-8 -*-

#输入三个整数x,y,z,请把这三个数由小到大输出。

def inputNumber():
    while True:
        try:
            x = input('input number please:')
            #if isinstance(x,(int,float)):
            break
        except NameError:
            print 'Error,input number please:'
    return x

def comNumber(x,y,z):
    if xy:
            print 'from small to big:',y,z,x
        else:
            print 'from small to big:',y,x,z

x = inputNumber()
y = inputNumber()
z = inputNumber()
print 'your input number is:',x,y,z

comNumber(x,y,z)

1、第一次了解了try,except在程序中的应用,实际上一开始没有把要判断异常的语句放在try模块中,导致总是无法执行出预期的结果。
2、comNumber部分的函数应该是凭自己感觉敲的代码,感觉是很挫,没有查资料。等这一轮基础过后再回头看有什么更好的实现方法。

运动计划之第23天

这次下定决心要坚持运动的时候,写了第一篇文章:

又双叒叕开始锻(da)炼(lian)了

到今天为止是第23天,常说21天就足以将某个行为固定下来成为习惯。而这过去的23天确实运动逐渐成为自己每天觉得必须要去执行完成的事情,无论是跑步还是踩自行车还是游泳,总会想着坚持不去破坏这个规矩——得益于群里面大家的坚持与激励,这个事情确实到现在为止都是每天坚持下来的。

在这期间还报名了“宝马”——宝安区2016年马拉松赛事,报名的人很多,也不知能否抽签命中,希望有这个运气实现首个半马的愿望——话说回来,这个愿望在14年的时候就曾有过,记得很清楚,当时刚到FDD,李总给新人介绍,我曾说过希望有机会尝试马拉松,但这个愿望毕竟是放到今天才真正想要想办法去实现。

对这过去23天的作个简单的总结:

1)运动其实是件科学的事情,不是说你有力气你有意愿你能够坚持就能够有好的收益,相反,如果不遵循科学的训练方法,不注意保护自己的身体,反倒是很容易受伤,这就得不偿失了。比如说跑步,每个人的身体条件不一样,想要切实的提高成绩,就有很多讲究,比如跑步的姿势,跑步的心率控制,跑前跑后的放松,跑鞋的选择等等,这里头有太多的学问——看起来门槛很低,好像穿上鞋子冲出去就能跑,实则不然。

2)从结果来看,对于跑步自己采用的是MAF训练法,按照公式计算,跑步过程中控制心率在150以内。刚开始那几天没有意识到这些问题,拿着手机开着咕咚就跑,但确实感觉非常累,没跑多长距离多长时间就觉得气喘吁吁,特别费劲。后来,买了华米运动手表,并且在MAF训练法的指导下,尝试了一个星期的快走,控制心率在150以内——其实挺困难的,稍微走快点,心率就上。然后上周六刷了10公里,然后去游泳,不知道是心理作用还是其他,上周以来的跑步并感觉没那么费劲了。昨天一口气跑了5公里,中间没有停顿,配速是在7分50秒,全程心率在160左右,今天跑了10公里,中间走了几百米,基本全程是没有停顿,配送在7分02秒左右,全程心率平稳,基本保持在160左右,整个跑完,相比之前,应该说感觉还有余力还能再跑1、2公里,之前跑完3、4公里全程就完全跑不动的感觉。也就是说这20多天下来,还是有明显的进步。我分析的原因包括:

a.间歇性的游泳,游泳对于提高身体的协调性,提高心肺功能还是有明显的好处

b.注重心率的控制,如果心率过高就自己主动减慢速度让心率降下来,保持全程的速度平稳——这样跑下来确实觉得比较省力。

3)坚持运动除了改变自己的身体状况,其实对自己精神面貌也有帮助。比如现在很多时候做一个事情,要么不做,一定决定要做就不想托着,即刻行动,速战速决——要战胜拖延症,其实归根结底是自己给自己找了太多的接口。比如现在重新捡起Python的书,每天抽时间都去看看,敲敲代码,发现真的并没有那么难,就是之前很多时候给自己设了限,没有真正投入精力去做——这样,怎么可能取得好的成果呢?

下一个20天,再来看运动的效果。

输入某年某月某日,判断这一天是这一年的第几天

# -*- coding: utf-8 -*-

#输入某年某月某日,判断这一天是这一年的第几天?

import time,datetime

def input_date():

    leapYear = False

    while True:
        year = raw_input('input year(yyyy):')
        if len(year) == 4 and year.isdigit() and year > 0:
            if (int(year) % 400 == 0) or (int(year) % 100 != 0 and int(year) % 4 == 0):
                leapYear = True
                print 'It is leap year'
            else:
                print 'It is not leap year'
            print "your input year is:",year
            break
        else:
            print 'your input is error,input year(yyyy) please!'
    #4位,数字,大于o

    while True:
        month = input('input month(mm):')
        if 0<month<13:
            print "your input month is:",month
            break
        else:
            print 'your input is error,input year(0<mm<13)again please!'

    while True:
        date = input('input date(dd):')
        if month in [1,3,5,7,8,10,12]:
            if 1 <= date <= 31:
                bigMonth = True
                #print ('your input dates is:%s,%s,%s' % (year, month, date))
                break
            else:
                print 'your input is error,input date(1<=dd<=31) again please!'
        elif month in [4,6,9,11]:
            if 1<= date <= 30:
                #print ('your input dates is:%s,%s,%s' % (year, month, date))
                break
            else:
                print 'your input is error,input date(1<=dd<=30) again please!'
        elif month == 2:
            if leapYear:
                if 1 <= date <= 29:
                    #print ('your input dates is:%s,%s,%s' % (year, month, date))
                    break
                else:
                    print 'your input is error,input date(1<=dd<=29) again please!'
            else:
                if 1 <= date <= 28:
                    #print ('your input dates is:%s,%s,%s' % (year,month,date))
                    break
                else:
                    print 'your input is error,input date(1<=dd<=28) again please!'

    print ('your input dates is:%s/%s/%s' % (year, month, date))

    if month == 1:
        numDay = date
    elif month == 2:
        numDay = 31 + date
    elif month == 3:
        if leapYear:
            numDay = 31 + 29 + date
        else:
            numDay = 31 + 28 + date
    elif month == 4:
        if leapYear:
            numDay = 31 + 29 + 31 + date
        else:
            numDay = 31 + 28 + 31 + date
    elif month == 5:
        if leapYear:
            numDay = 31 + 29 + 31 + 30 + date
        else:
            numDay = 31 + 28 + 31 + 30 + date
    elif month == 6:
        if leapYear:
            numDay = 31 + 29 + 31 + 30 + 31 + date
        else:
            numDay = 31 + 28 + 31 + 30 + 31 + date
    elif month == 7:
        if leapYear:
            numDay = 31 + 29 + 31 + 30 + 31 + 30 + date
        else:
            numDay = 31 + 28 + 31 + 30 + 31 + 30 + date
    elif month == 8:
        if leapYear:
            numDay = 31 + 29 + 31 + 30 + 31 + 30 + 31 + date
        else:
            numDay = 31 + 28 + 31 + 30 + 31 + 30 + 31 + date
    elif month == 9:
        if leapYear:
            numDay = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + date
        else:
            numDay = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + date
    elif month == 10:
        if leapYear:
            numDay = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + date
        else:
            numDay = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + date
    elif month == 11:
        if leapYear:
            numDay = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + date
        else:
            numDay = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + date
    elif month == 12:
        if leapYear:
            numDay = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + date
        else:
            numDay = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + date

    print 'It is No.%s day' % numDay
#def calculate_date():

input_date()

主要考虑几点:
1、无论是年、月、日在输入过程中都判断是否合法,否则重新输入;
3、判断闰年;
2、在计算第几天的时候目前的实现应该还是很挫….