【编程能力不行?那就写啊!】Python由浅入深编程(概念)实战

正文之前

前两天Python这门课上机,本来没太认真听课的,但是Python我是真的有爱的,所以上机哪怕是风里来雨里去我也从西边到东边风雨无阻的准时上机了。结果一上就发现还挺有意思,由浅入深,蛮好的。所以就发一下,有兴趣的可以自己跟着做下,大概一两个小时吧!

正文

1. 字符串

1、 使用input或raw_input从屏幕接受一个字符串输入,使得word=“abcdefg”;
>>> str=raw_input('Please input some word:  ')
Please input some word:  abcdefg
>>> str
'abcdefg'
2、 用print输出字符串word的长度(len);
>>> print(len(str))
7
3、 使用print分别打印出word第一个字符、第二和倒数第三个字符;
>>> print str[0],str[1],str[-3]
a b e
4、 输出word的后三个字符;
>>> str[-3:]
'efg'
5、 判断字符串“cd”是否是word的子串;
>>> str.find('cd')
2
>>> 'cd' in str
True
6、 将word字符串转换为列表wordlist(split);
>>> strlist=list(str)
>>> strlist
['a', 'b', 'c', 'd', 'e', 'f', 'g']
7、 将wordlist转为以空格分隔的字符串“a b c d e f g”(join);
>>> ' '.join(strlist)
'a b c d e f g'
8、 将word字符串在大小字母转换(upper,lower);
>>> str.upper()
'ABCDEFG'
>>> str.lower()
'abcdefg'
>>> 

2. 列表和元组

1、 用print输出列表shoplist=['apple','mango','carrot','banana']长度;
>>> shoplist=['apple','mange','carrot','banana']
>>> shoplist
['apple', 'mange', 'carrot', 'banana']
>>> print(len(shoplist))
4
2、 使用for循环在同一行输出列表的每一项;
>>> for i in range(len(shoplist)):
...     print shoplist[i],
... 
apple mange carrot banana
3、 使用for循环输出每一项的字符串长度;
>>> for i in range(len(shoplist)):
...     print len(shoplist[i])
... 
5
5
6
6
4、 在shoplist结尾使用append追加一项‘rice’,并查看引用(id);
>>> shoplist.append('rice')
>>> id(shoplist)
4529253048
5、 对shoplist重新排序(sort),并查看其引用;
>>> shoplist.sort()
>>> id(shoplist)
4529253048
6、 删除列表第一项(del),并查看其引用;
>>> del shoplist[0]
>>> id(shoplist)
4529253048
7、 将列表转换为元组shoptuple(tuple);
>>> shoptuple=tuple(shoplist)
>>> shoptuple
('banana', 'carrot', 'mange', 'rice')
>>> 

3. 字典

1、 使用dict函数构造字典dt={‘a’:‘aaa’,‘b’:‘bbb’,‘c’:12};
>>> dt=dict((('a','aaa'),('b','bbb'),('c',12)))
>>> dt
{'a': 'aaa', 'c': 12, 'b': 'bbb'}
2、 增加一项’d’:100;
>>> dt['d']=100
>>> dt
{'a': 'aaa', 'c': 12, 'b': 'bbb', 'd': 100}
3、 将’d’的值改为200;
>>> dt['d']=200
>>> dt
{'a': 'aaa', 'c': 12, 'b': 'bbb', 'd': 200}
4、 输出dt的键列表和值列表;
>>> dt.keys()
['a', 'c', 'b', 'd']
>>> dt.values()
['aaa', 12, 'bbb', 200]
5、 使用for循环输出dt键和对应的值;
>>> for i in range(len(dt)):
...     print dt.popitem()
... 
('a', 'aaa')
('c', 12)
('b', 'bbb')
('d', 200)
>>> 

4. Mutable和Immutable对象

1、 操作课件“数据类型”的P40试验,理解内存简图;
>>> x=[1,2,3]
>>> x
[1, 2, 3]
>>> L=['a',x,'b']
>>> L
['a', [1, 2, 3], 'b']
>>> D={'x':x,'y':2}
>>> D
{'y': 2, 'x': [1, 2, 3]}
>>> L[1] is x
True
>>> x[1]=10086
>>> x
[1, 10086, 3]
>>> L
['a', [1, 10086, 3], 'b']
>>> D
{'y': 2, 'x': [1, 10086, 3]}
2、 把shoplist及shoptuple分别赋值给shoplist2和shoptuple2变量,验证列表与元组的可变性(id);
>>> shoplist1=shoplist
>>> shoptuple1=shoptuple
>>> shoplist1
['banana', 'carrot', 'mange', 'rice']
>>> shoplist1[1]="Watermelon"
>>> shoplist
['banana', 'Watermelon', 'mange', 'rice']
>>> 
3、 设计试验证明数字是Immutable对象;
>>> i=5
>>> id(i)
140542734251144
>>> i=6
>>> id(i)
140542734251120
4、 设计试验证明字典是Mutable对象;
>>> dt=dict((('a','aaa'),('b','bbb'),('c',12)))
>>> id(dt)
4529472688
>>> dt['b']=10086
>>> id(dt)
4529472688
>>> shoptuple
('banana', 'carrot', 'mange', 'rice')
>>> id(shoptuple)
4529297552
>>> shoptuple[0]
'banana'
>>> del shoptuple[0]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
>>> shoptuple[0]=10086
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> 
5、 设计试验验证列表和字典的浅拷贝和深拷贝;
>>> data={'user':'admin','num':[1,2,3]}
>>> data1=data
>>> data1
{'num': [1, 2, 3], 'user': 'admin'}
>>> import copy
>>> data2=copy.deepcopy(data)
>>> data2
{'num': [1, 2, 3], 'user': 'admin'}
>>> data['user']='root'
>>> data
{'num': [1, 2, 3], 'user': 'root'}
>>> data1
{'num': [1, 2, 3], 'user': 'root'}
>>> data2
{'num': [1, 2, 3], 'user': 'admin'}
>>> id(data)
4529376064
>>> id(data1)
4529376064
>>> id(data2)
4529383976

5. 文件

1、 在c盘创建一个文本文件“t.txt”,里面保存两个向量1,2,3\n4,5,6 (open write);
>>> file=open('/Users/zhangzhaobo/program/python/t.txt','w+')
>>> s='1,2,3\n4,5,6'
>>> file.write(s)
>>> file.close()
2、 打开上述文件,跳转文件指针到末尾,输出位置得到文件长度(seek tell);
>>> file.seek(0,2)
>>> file.tell()
11
3、 跳转文件指针到文件开头,读取一行 (readline)到字符串变量中;
>>> file.seek(0)
>>> s=file.readline(5)
>>> s
'1,2,3'
4、 解析字符串变量,获得float类型的向量;
>>> sl=s.split(',')
>>> sl
['1', '2', '3']
>>> map(float,sl)
[1.0, 2.0, 3.0]
>>> 

6. 表达式

1、 理解并解释1 or 2, 1 or 0, 1 and 2, 1 and 0;1 and 2 or 3, 0 and 2 or 3, 0 and 0 or 3, 1 and 0 or 3的返回值;

or有一个为真就返回为真的第一个数,否则返回0

  • 1 or 2 ,此处为1
  • 同理 1 or 0 返回1

and 同时为真那么返回最后一个为真的数,为假就返回0

  • 1 and 2 返回2
  • 1 and 0 返回 0

三目运算

  • 1 and 2 or 3 1 and 2 返回2,2 or 3 返回2
  • 0 and 2 or 3 0 and 2 返回0 ,0 or 3 返回3
  • 0 and 0 or 3 0 and 0 返回0,0 or 3 返回3
  • 1 and 0 or 3 1 and 0 返回0,0 or 3 返回3(三目陷阱)
>>> 1 or 2
1
>>> 1 or 0
1
>>> 1 and 2
2
>>> 1 and 0
0
>>> 1 and 2 or 3
2
>>> 0 and 2 or 3
3
>>> 0 and 0 or 3
3
>>> 1 and 0 or 3
3
>>> 
2、 实现3目运算符,用例子解释三目陷阱及解决办法;

三目运算通过and or 的组合形式实现,但是会存在三目陷阱,比如 1 and 0 or 3 模拟的是 1?0:3 就是第二个数如果是0的话会产生三目陷阱,所以采用列表形式作为输出数,即 1 and [0] or [3]

>>> 1 and [0] or [3]
[0]
>>> 
3、 使用lambda、apply计算XX+YY在(3,4)的值;
>>> f=lambda x,y:x*x+y*y
>>> f(3,4)
25
>>> apply(f,(3,4))
25
>>> 
  1. 函数
1、 定义提供缺省值的求和函数add(a,b=2),分别用1个或两个形参调用该函数;
>>> def add(a,b=2):
...     return a+b
... 
>>> add(3)
5
>>> add(3,4)
7
2、 用元组可变参数,编写函数求shoptuple元组的字母交集(结果为{’a’})并用打印语句显示代码执行过程;
>>> shoplist=['apple','mango','carrot','banana']
>>> shoptuple=tuple(shoplist)
>>> 
>>> def Find_Unit(shoptuple):
...     size=len(shoptuple)
...     Unit=[]
...     for i in range(len(shoptuple[0])):
...         count=0
...         s=shoptuple[0][i]
...         # print s
...         for x in range(size):
...             if shoptuple[x].find(s)!=-1 and x!=0:
...                 print 'In \'%s\', We have find the \'%s\' '%(shoptuple[x],s) 
...                 count=count+1
...         if count==size:
...             print s
...             Unit.append(s)
... 
>>> Find_Unit(shoptuple)
In 'mango', We have find the 'a' 
In 'carrot', We have find the 'a' 
In 'banana', We have find the 'a' 
、 编写包括位置匹配、关键字匹配、缺省参数、元组和字典可变参数等要素的函数,并显示全局和局部作用域的内容(dir,globals,locals);
>>> def f(a,b,v):
...     print a,b,v
... 
>>> f(v=2,a=1,b=10086)
1 10086 2
>>> f(10,v=100,b=10086)
10 10086 100
>>> def f(*arg):
...     for i in args:
...             print i
... 
>>> def f(*args):
...     for i in args:
...             print i
... 
>>> f(1,2,3,4,5)
1
2
3
4
5
>>> def f(**args):
...     print args
... 
>>> f(a=1,b='zhangzhaobo')
{'a': 1, 'b': 'zhangzhaobo'}
>>> 
>>> dir(f)
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
>>> 
3、 使用map实现试验5.4的内容,并完成两个向量的加法和点积;
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> map(float,a)
[1.0, 2.0, 3.0]
>>> map(float,b)
[4.0, 5.0, 6.0]
>>> b1map(float,b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b1map' is not defined
>>> b1=map(float,b)
>>> a1=map(float,a)
>>> map(lambda x,y:x+y,a1,b1)
[5.0, 7.0, 9.0]
>>> map(lambda x,y:x*y,a1,b1)
[4.0, 10.0, 18.0]
>>> reduce(lambda x,y:x+y,map(lambda x,y:x*y,a1,b1))
32.0
4、 使用map、open、write,把正弦函数在0--2Pi周期上的横纵坐标存储在一个文本文档中(sint.txt);
image.png
>>> import math
>>> def sinx(x):
...     return float(x)/1000,math.sin(float(x)/1000)
... 
>>> file=open('/Users/zhangzhaobo/program/python/sint.txt','w+')
>>> s=map(sinx,range(0,6281))
>>> file.write(str(s))
>>> file.close()
>>> 
5、 用函数编程求word字符串的每个ASCII码值(map,ord函数);
>>> s='abcdefg'
>>> map(lambda x:ord(x),s)
[97, 98, 99, 100, 101, 102, 103]
>>> 
6、 生成1到10的整数序列,用函数编程求累加和阶乘(range,reduce);
>>> reduce(lambda x,y:x+y,range(1,11))
55
>>> reduce(lambda x,y:x*y,range(1,11))
3628800
>>> 
7、 用函数编程求2,100内的素数(reduce),并打印执行过程;

这个不太会,实在没法用reduce,就这样先写着吧,有大神路过请留下足迹

>>> ra=range(2,101)
>>> su=map(SuShu,ra)
>>> map(lambda x,y:x*(not y),ra,su)
[2, 3, 0, 5, 0, 7, 0, 0, 0, 11, 0, 13, 0, 0, 0, 17, 0, 19, 0, 0, 0, 23, 0, 0, 0, 0, 0, 29, 0, 31, 0, 0, 0, 0, 0, 37, 0, 0, 0, 41, 0, 43, 0, 0, 0, 47, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 59, 0, 61, 0, 0, 0, 0, 0, 67, 0, 0, 0, 71, 0, 73, 0, 0, 0, 0, 0, 79, 0, 0, 0, 83, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0]
>>> 

正文之后

Python 是真的很强啊。希望以后有更多机会接触吧!生活不易,我用python

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容