读廖雪峰的 Python 教程小结--------Python基础

地址:

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

学过java和C的我接触Python的第一印象就是,哇!不需要声明变量类型!!!(我也不知道是好还是坏)

对于数据类型和变量

比如如果你想存储一个整形变量,直接就用 a = 2 就可以了(连分号也不需要,一行代表一个语句。。。。)

#整形 (用#表示注释)
a = 2

#浮点型
b = 2.1

#字符串
c = "abcdefg"  (这里也可以用单引号‘’,好像没有区分) 

#布尔型
d = True
e = False

#常量,当然这个常量不是真的不能弄,而是我们自己规定而已,所以让我们知道用全大写
PI = 3.14.......  

转义字符的都是差不多的,只是有几个我不知道的//GG,比如

#如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许
#用'''...'''的格式表示多行内容
#三个单引号啊!!!!
>>> print('''line1
... line2
... line3''')
line1
line2
line3

还有一个神奇的 r ,r : 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r”表示”内部的字符串默认不转义。
具体看例子

>>> print('\\\t\\')
\       \
>>> print(r'\\\t\\')
\\\t\\

其他的都差不多的。
哦,还有一个Python不用 || 、&& 、!
而是用 or 、 and 、 not (好抽象具体啊)



对于字符串

关于字符的unicode编码和AscII码没什么好说的,简单来说就是unicode包含AscII码,更多更全,而UTF-8更是Unicode的升级版(就是更加好,用就是了)

这时候我们不但要在编译器选择UTF-8无bom格式,另外还要在代码开头加上

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

这样就能确保我们在用utf-8编码和解析了

这里教了几个函数

ord() 函数获取字符的整数表示
chr() 函数把编码转换为对应的字符
len() 计算的是str的字符数 ; 如果换成bytes,就计算字节数

decode() 要把bytes变为字符串类型
encode() 以Unicode表示的str通过encode()方法可以编码为指定的bytes

是不是觉得有的函数感觉没有什么用?这里我们要知道一个知识点(我也是刚刚知道。。。。GG)

  • 我们看到的显示是字符串类型,而如果要在网络上传输,或者保存到磁盘上,就需要把字符串类型变为以字节为单位的bytes。(Python对bytes类型的数据用带b前缀的单引号或双引号表示)

贴出例子,剩下的自己去上面的网子了解,自行理解

>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
>>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6

而关于格式化,我个人觉得都差不多的,看看例子

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'




关于数据结构

在java中,集合框架总的来说有 数组(这个好像不是~.~)、List 、Map 、 Set (大概吧)

python也差不多拉,我个人觉得

  • Python 的 tuple 相当与数组
  • Python 的 list 相当于 List
  • Python 的 dict 相当与 Map
  • Python 的 set 相当于 Set

    1. tuple:tuple一旦初始化就不能修改,当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,例子:

      
      #通过classmates[0],classmates[-1] 调用
      
      >>> classmates = ('Michael', 'Bob', 'Tracy')
      
      
      #定义一个空的tuple        
      
      t = ()
      
      
      #定义一个只有1个元素的tuple,必须加上逗号,
      
       t = (1,)
    2. list:list是一种有序的集合,可以随时添加和删除其中的元素,例子:

      >>> classmates = ['Michael', 'Bob', 'Tracy']
      >>> classmates
      ['Michael', 'Bob', 'Tracy']
      
      
      #往list中追加元素到末尾
      
      classmates.append('Adam')
      
      
      #把元素插入到指定的位置
      
      classmates.insert(1, 'Jack')
      
      
      #要删除list末尾的元素,用pop()方法
      
      >>> classmates.pop()
      >>> classmates.pop(1)  #指定位置
      
      
      #把某个元素替换成别的元素,可以直接赋值给对应的索引位置
      
       classmates[1] = 'Sarah'
    3. dict :使用键-值(key-value)存储,直接例子:

      >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
      >>> d['Michael']
      95
      
      >>> d['Adam'] = 67
      >>> d['Adam']
      67
      
      
      #dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value
      
      >>> d.get('Thomas')
      >>> d.get('Thomas', -1)
      -1
      
      
      #通过in判断key是否存在
      
      >>> 'Thomas' in d
      False
      
      
      #删除一个key,用pop(key)方法,对应的value也会从dict中删除
      
      >>> d.pop('Bob')
      75
      >>> d
      {'Michael': 95, 'Tracy': 85}
    4. set:相当与数学中的集合,无序、不重复、确定的 集合 ,例子:

      
      #创建一个set,需要提供一个list作为输入集合
      
      >>> s = set([1, 2, 3])
      >>> s
      {1, 2, 3}
      
      
      #通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
      
      >>> s.add(4)
      >>> s
      {1, 2, 3, 4}
      
      
      #通过remove(key)方法可以删除元素
      
      >>> s.remove(4)
      >>> s
      {1, 2, 3}




关于条件判断与循环

对于条件判断和循环也没什么好说的了,在C/C++和Java里面都用烂了
例子:

条件判断:

age = 20
if age >= 18:
    print('your age is', age)
    print('adult')

#注意不要少写了冒号:
age = 3
if age >= 18:
    print('your age is', age)
    print('adult')
else:
    print('your age is', age)
    print('teenager')


#elif是else if的缩写,完全可以有多个elif,所以if语句的完整形式就是,
#用else if会报错的,我试过。。。。。。
age = 3
if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')


if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>


#这是因为input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成
#整数。Python提供了int()函数来完成这件事情
s = input('birth: ')
birth = int(s)
if birth < 2000:
    print('00前')
else:
    print('00后')

循环:

#for循环
names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)



sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print(sum)


#Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为
#list。比如range(5)生成的序列是从0开始小于5的整数:
>>> list(range(5))
[0, 1, 2, 3, 4]


sum = 0
for x in range(101):
    sum = sum + x
print(sum)


# while循环
sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)
#在循环中,break语句可以提前退出循环
n = 1
while n <= 100:
    if n > 10: # 当n = 11时,条件满足,执行break语句
        break # break语句会结束当前循环
    print(n)
    n = n + 1
print('END')



#在循环过程中,也可以通过continue语句,跳过当前的这次循环,直接开始下一次循环
n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0: # 如果n是偶数,执行continue语句
        continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)

结语

这是我读廖雪峰的 Python 教程的Python基础部分,如果要看完整的当然要去作者廖雪峰那里看拉~.~,然后归纳一下这部分主要讲了数据类型(整形、浮点型、常量、布尔型、字符串等等)、数据结构(tuple、list、set、dict)、条件判断与循环(if 与 for\while)

你可能感兴趣的:(python)