代码改变世界

python 学习笔记一

2013-06-25 10:28  java20130722  阅读(215)  评论(0编辑  收藏  举报

 

初级阶段 (简单实践)

 

tmp_storage = ""
welcome = "hello!"
tmp_storage = welcome
print tmp_storage

结果:hello!

-------------------------------------------------

radius = 10
pi = 3.14
area = pi*radius**2
print "the area is", area

结果:the area is 314.0

---------------------------------------------------

my_list = []
my_list = [1,2]
print my_list
my_list.append(3)
print my_list

结果:[1, 2, 3]

list是可以索引的:
print my_list[1]
不过你或许会不明白为什么是2,而不是显示的是1。因为索引从0开始,要输出第一个元素:
print my_list[0]

----------------------------------------------------

contact_list=[]
contact1={}
contact1['name']='taowen'
contact1['phone']=68942443
contact_list.append(contact1)
contact2={}
contact2['name']='god'
contact2['phone']=44448888
contact_list.append(contact2)
print contact_list

结果:[{'phone': 68942443, 'name': 'taowen'}, {'phone': 44448888, 'name': 'god'}]

---------------缩进就是python中表示一段代码的从属关系的标记方法-----------------------------------------

i = 5
n = 0
while i>0:
    n = n + i
    i = i - 1
print n

结果:15

i = 5
n = 0
while i>0:
    n = n + i
    i = i - 1
    print n

结果:
5
9
12
14
15

你会发现输入:之后,自动会给缩进。而且也没有在python中发现和C/C++中类似的{}标记也没有pascal中的begin end;,
其实缩进就是python中表示一段代码的从属关系的标记方法。表示n=n+1和i=i-1这两句都是while的。
程序的运行逻辑应该不用解释了吧。就是运行5+4+3+2+1的结果。

---------------------------------------------------

输入要使用的是raw_input或者input函数,区别是raw_input直接把你的输入作为字符串返回,
而input则在raw_input的基础上把字符串转换为数字返回(如果你输入$@#$$怎么办?自己试试看)。
我们就利用这两个输入函数来作一些有趣的事情。

your_name = raw_input("please input your name:")

输入:qiaochao

hint = "welcome! %s" % your_name
print hint

结果:welcome! qiaochao

%s表示在这个位置插入一个字符串,%表示把后面提供的参数“推”入前面的字符串中,所以推的结果是把%s推出去了,
把your_name给填入那个地方了。printf知道吧,C中的printf就是一样的嘛。

-- 

inputed_num = 0
while 1:
    inputed_num = input("input a number between 1 and 10\n")
    if inputed_num >= 10:
        pass
    elif inputed_num < 1:
        pass
    else:
        break
print "hehe, don't follow, won't out"

pass就是pass了,过了嘛,什么都不干了。break就是跳出这个while 1(无穷循环,1总是真的,while总是执行)。\n是换行

----------------------------------------------------------------------------------------------


contact = {}
contact_list = []
while 1:
    contact['name'] = raw_input("please input name: ")
    contact['phone'] = raw_input("please input phone number: ")
    contact_list.append(contact.copy())
    go_on = raw_input("continue?\n")
    if go_on == "yes":
        pass
    elif go_on == "no":
        break
    else:
        print "you didn't say no\n"
i = 1
for contact in contact_list:
    print "%d: name=%s" % (i, contact['name'])
    print "%d: phone=%s" % (i, contact['phone'])
    i = i + 1


执行:python wanzheng.py
please input name: qiaochao
please input phone number: 18701376272
continue?
no
1: name=qiaochao
1: phone=18701376272

很有特色的%操作,起到格式化字符串的作用,前面仅仅在字符串中有一个%s,现在有%d和%s两个,分别代表插入十进制数值和字符串于%x标记的位置处。
列表
列表是顺序的序列,用append在后面附加,也能构用索引值索引。所以我们完全可以用一个变量保存len(contact_list)得到的长度,
然后一个个的遍历,不过这里展示了另外一种非常方便的方法。而且值得注意的是append()中的参数,我使用了contact.copy(),
你可以尝试着把copy()给去掉,观察结果你就知道了所谓的append是怎么干的了,特别是你对指针之类的东西很有感觉的话(但是在Python中是没有指针这个概念的)
判断
if是很好用的,==表示判断两个是否相等,=表示把右边的赋给左边的。而且可以直接判断字符串是否相等,这个太方便了,如果你曾经用过strcpy()的话,就知道了。
elif是表示else if的意思,如果if不满足就判断elif的条件是否满足,最后是到else中去
循环是个主体
while和for都是循环。不过这里while就没什么说的了,又是很经典的while 1,死循环,然后必须在里面用break来跳出。for和C中的for是不一样的,
for in才是一个完整的语句,指的是从一个能够逐一取值的序列中(比如list),一个一个的取出值赋给for后面指定的变量中,直到取空,循环结束。
其实回想一般用C中的for的经历,也大体如此。而且你还可以用for i in range(1,100)来指定一个范围从多少到多少。可以说for in充分体现了python的体贴周到,
用起来很直观,不会绕弯。

接下来就是运行了,大家慢慢调试吧。下次可能是讲异常处理,因为我觉得在深入到使用各种高级的要素之前,先要学会怎么去处理异常
。最常见的异常应该是input(),然后你给出的输入是一个无法转换为数字的字符串了,那么我们就要来处理它。