Python学习第一周

2016.11.21-2016.11.26学习完《编程小白的第一本Python入门书》
这本书将很简单基础的必要理论知识与进阶的实践练习结合起来,易读懂,易上手。尤其是第七章将类的概念与可口可乐的生产类比,形象地介绍了子类、继承,实例等概念。下面从理论知识与实战技巧两方面,对这一周的学习做一个小结。

变量与字符串

因为之前有过短暂的Java编程经历,对这两个概念的理解并不吃力,但关于字符串的分片与索引,有如下认识:

| name = | M | y | | | n | a | m | e | | i| s | M | i | k | e|
|:-------------:|:-------------:| :-----:|:-----:|:----:|
| A | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |11| 12 |13 |14|
| B | -15 | -14 | -13 | -12 | -11 | -10 | -9| -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1|
注:name为一个字符串型变量示例,=为其赋值,A行代表该值的正向索引,B行代表该值的反向索引。
name[0]=name[-15]='M';
name[11:14]表示截取的编号从第11个字符开始,到位置14但不包含第14个字符结束,即'Mik';
name[5:]代表从编号为5的字符到结束的字符串分片,即'me is Mike';
name[:5]则代表从编号为0的字符开始到编号为5但不包含第5 个字符,即'My na'.
python中是严格区分大小写的,空格也是占位的。
由于python是面向对象的语言,所以它会有一些方法(method),这节我学到的关于字符串比较实用的方法有:
'!!!'.find('') 找到'!!!'中''的第一个字节所在索引并返回int型该索引值
'!!!'.replace('','###')将'.......'.中的''用'###'替换
'!!{}!!{}!'.format('###','&&')将'!!{}!!{}!'中的{}按顺序替换为'###'和'&&'
还了解到python中几个使用很频繁的函数:
type() 查看变量的类型
len() 括号内的参数限定为字符串,返回字符串字节的个数,为int型整数值
int() 将字符串类型的数字转换为整数类型
file = open(' filepath', 'w') 打开位于' filepath'处的文件,若没有则创建一个
file.write('$$$')往该文件中输入内容'$$$'

函数

def Function(arg1, arg2) :
do something
return something#
python中用缩进量的不同来表示代码的执行等级,处于同一缩进量的代码行是同一级,但执行起来完全按照行序从上至下进行,
代码块:具有相同缩进量的代码是在共同完成相同层面的事情
这节学到的小技巧有:
a**b 以a为底,b为指数的运算;
单行代码屏蔽:在想要屏蔽的代码行前加‘#’,如果想注释某一行也可用‘#’,在其后写上注释;为避免中文注释导致的报错问题,输入一行‘#coding: utf-8’
一段代码行屏蔽:在代码段的上端和下端均输入‘"'’即三个在英文输入法下的单引号;
abs() 该函数会返回输入参数的绝对值;
字符串首尾取法name[0],name[-1]比较巧妙,不用知道字符串整体长度。

逻辑判断与控制

布尔类型(Boolean Type)其实就是两类True和False,对于计算机来说True=1,False=0, 因此它们可以用于计算和比较大小
在Python中,任何对象都可以判断其布尔值,除了0,None和所有空的序列、集合、列表、字典,其布尔值为False,其余的均为True.
运算符有
1.Membership operator 表示归属关系: in, not in
2.Identity operator 进行身份比对:is, is not
3.Boolean Operator判断真假:not x, x and y, x or y
4.条件控制 if condition :
do something
elif condition:
do something
else:
do something
其中,else后面不用再跟条件,跟多个条件的话,用if, elif,...
5.循环(loop) for item in iterable :
do something
6.嵌套循环(Nested Loop) for i in iterable :
for j in iterable :
do something
7.while 循环 while condition :
do something
要警惕条件永远为True死循环(Infinite loop),要确认循环过程中可以制造某种使循环停止的条件或可改变循环成立的条件
本节有两道只有提示的综合题目,我跑出来的代码如下

  • 第一道综合题代码
import random
def roll_dice( numbers = 3, points = None): 
   print('<<<<< GAME STARTS ! >>>>>')  
      if points is None:    
          points = []  
      while numbers > 0 :    
          point = random.randrange(1, 7)    
          points.append(point)     
          numbers = numbers - 1  
   return points 
def roll_result(total) :  
    if 3 <= total <= 10 :    
        isSmall = 'Small'    
        return isSmall  
    elif 11 <= total <= 18 :    
        isBig = 'Big'    
        return isBig
def start_game(money):  
    points = roll_dice()  
    total = sum(points)  
    your_choice = input('Big or Small :')  
    your_bet = input('How much you wanna bet ? - ')  
    if your_choice in ['Big','Small'] :    
      you_win = your_choice == roll_result(total)    
      if you_win:        
         print('The points is {}, You win'.format(points))        
         money = money + int(your_bet)        
         print('You gained {}, you have {} now'.format(your_bet, money))    
      else :       
         print('The points is {}, You lose'.format(points))        
         money = money - int(your_bet)        
         print('You lost {}, you have {} now'.format(your_bet, money))  
    else :    
      print('Invalid words')    
      start_game(money)  
      return money
money = 1000
while money > 0:  
    money = start_game(money)
print('GAME OVER')
  • 第二道综合题代码:
def number_in():    
    number = input('Enter your number')    
    dense = number[:11]  
    account = len(str(number))    
    if account != 11:        
        print('Invalid length, your number should be in 11 digits')        
        number_in()    
    return dense
def  number_sure():    
    dense = number_in()    
    dense_1 = dense[:3]    
    dense_2 = dense[:4]    
    if  int(dense_2 )== 1705 or \                    int(dense_1) in [134, 135, 136, 137, 138, 139, 150, 151, 152, 157, 158, 159, 182, 183, 184, 187, 188,                                147,                                178]:        
       print('Operator : China Mobile', 'We \' are sending verification code via text to your phone:{}'.format(dense),              sep='\n')    
    elif int(dense_2)== 1709 or \                int(dense_1)in [130, 131, 132, 155, 156, 185, 186, 145, 176]:        
       print('Operator China Union', 'We are sending verification code via text to your phone: {}'.format(dense),              sep='\n')    
    elif dense_1 in [153, 180, 181, 189, 177, 133] or dense_2 == 1700:        print('Operator : China Telecom', 'We are sending verification code via text to your phone :{}'.format(dense),              sep='\n')    
    else:        print('No such operator')        
       number_sure()
number_sure()

最大的体会:想清楚自己要实现的功能具体是什么,将其分解成几个步骤,给每个步骤创建一个子函数。

数据结构Data Structure

python的四种数据结构表示方法
1.列表 list = [ val1, val2, val3, val4...]
2.字典 dict = {key1 : val1, key2 : val2, key3 : val3, ...}
3.元组 tuple = (val1, val2, val3,...)
4.集合 set = {val1, val2, val3, val4...}
数据结构的掌握需要一个长期且系统的学习过程。这里,我们需要定性地知道他们的一些基本特征和相区分的概念
1.列表,元素可变,按顺序排列,可通过索引查找,修改,增减;
2.字典,key-value所谓键值对,是共生的,不存在没有键的值或没有值的键,原则上说,键一旦生成就不可更改,而值是可变的。
3.元组,稳固版的列表,不可修改,只能查看
4.集合,和数学里集合的概念类似,可以增减元素,但不能计算,元素不可重复,非常适合用集合来判断从属关系,消除数据结构中的重复元素。
了解到与数据结构有关的一些函数:
1.sorted([...]) 按照长短、大小、英文字母的顺序给列表中的每个元素排序,但不会改变原列表本身。sorted([...], reverse = True) 逆序

 for a, b in zip ( [...], [...]) :
              do something

3.推导式(list comprehension) ,又称列表的解析式

b = [ i for i in range(1, 11)]
字典的推导式:
'''
d = {i : i+1 for i in range(4)}
f = {i : j for i, j in zip([,,,], [,,,])}
'''
4.python独有的函数enumerate() 对列表生成两个列表,其中一个为其索引值
eg :

 letters = ['a','b','c']
 for num, letter in enumerate(letters):
                print(letter, 'is', num+1)

控制台输出:

                     a is 1
                     b is 2
                     c is 3

5.import string #导入内建库
string.punctuation 为各种标点符号,运用'..'.split(string.punctuation )可删除字符串中的非文本类符号
6.range() 内置函数,range(n)表示从0到n-1; range(i,i+n)表示从i到i+n-1
import random #导入随机函数库
random.range(i, i+n)生成[i,i+n)区间的随机数

类与可口可乐

类:一系列有共同特征和行为事物的抽象概念的总和。
对于入门者来说,用可口可乐,属于我的可口可乐,你买的可口可乐来说明类与实例的关系,用可口可乐的配方与无糖可口可乐的配方来说明类的继承与覆盖的概念,很好理解,但因为这个概念比较高阶,不是一本入门级读物能完全教会的,同样需要持续学习。有三点需要掌握的:
1.类的形式:

class CocaCola :
      formula  = ['caffeine', 'sugar', 'water','soda']

formula代表变量,为类的属性(class attribute)
2.实例instance: 在‘=’左边创建一个变量,右边写上类的名称,即为类的实例化;
3.Python中类的属性引用机制是自外向内的,先看实例中有没有,实例中没有再看类中有没有,类中没有就报错。
4.生成器(generator) :可自动执行某种操作,如random.range()自动生成随机数,创建一个函数,在其任意一个循环(loop)中使用yield返回结果即可达到该效果。

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

推荐阅读更多精彩内容