1、变量和数据类型

1.1变量

  1.每个变量都存储了一个值——与变量相关联的信息。

  2.变量不仅可以为整数或浮点数,还可以是字符串,可以是任意数据类型。

1.1.1变量的命名和使用

  变量名只能包含字母、数字和下划线,且数字不能打头。变量名不能包含空格,但可以使用下划线间隔。不能把python关键字和函数名作为变量名。变量名应既简短又具有描述性。慎用小写字母l和大写字母O,容易和1,0混淆。

1.1.2使用变量时避免命名错误

  出现错误时解释器会提供一个traceback(回溯)。Traceback是一条记录,指出了什么地方出现错误,显示错误提示。

1.2字符串str

  1.字符串就是一系列字符。是一种数据类型,在Python中用引号括起的都是字符串,可单引号也可双引号

  2.Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。把Unicode编码转化为“可变长编码”的UTF-8编码。

  3.Python对bytes类型的数据用带b前缀的单引号或双引号表示:x = b'ABC'。以Unicode表示的str通过encode()方法可以编码为指定的bytes。

>>> 'ABC'.encode('ascii')
b'ABC'

  反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:

>>> b'ABC'.decode('ascii')
'ABC'

  4. 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

  5.要计算str包含多少个字符,可以用len()函数,len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数。可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。

  6.当num<0时,bin(num + 2**32),转化为16位的二进制。也可以用bin(num & 0xffffffff)转化为16位的二进制,两种方法效果是一样的。

  7.二进制表示法:前缀为0b的字符串,'0b1110',用bin()把数字转换为二进制。>>> bin(14)  表示为'0b1110'

  8.16进制表示法:前缀为0x的字符串,'0xe'用hex()把数字转换为16进制。>>> hex(14) 表示为 '0xe'

  9.32进制表示法:前缀为0o的字符串,'0o16',用Oct把数字转换为32进制。>>> oct(14)  表示为 '0o16'

  10.使用int( )可以把其他进制转换为10进制.

>>> int('', 2)
9
>>> int('', 16)
9011

1.2.1对字符串的操作

  •   title() 以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。
  •   upper() 将字符串改为全部大写。lower()将字符串改为全部小写。
  •   capitalize() 将字符串的第一个字符转换为大写。
  •   如果字符串至少有一个字母,并且所有字母都是大写或小写,isupper()和 islower()方法就会相应地返回布尔值 True。否则,该方法返回 False。
  •   salpha() 返回 True,如果字符串只包含字母,并且非空;
  •   isalnum() 返回 True,如果字符串只包含字母和数字,并且非空;
  •   sdecimal() 返回 True,如果字符串只包含数字字符,并且非空;
  •   sspace() 返回 True,如果字符串只包含空格、制表符和换行,并且非空;
  •   istitle() 返回 True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词。
  •   startswith()和 endswith()方法返回 True,如果它们所调用的字符串以该方法传入的字符串开始或结束。否则,方法返回 False。
  •   count() 返回str在字符串中出现的次数。可以指定范围,添加参数beg 或者 end。
  •   join()方法在一个字符串上调用,参数是一个字符串列表,返回一个字符串。
  • >>> ', '.join(['cats', 'rats', 'bats'])
    'cats, rats, bats'
    >>> ' '.join(['My', 'name', 'is', 'Simon'])
    'My name is Simon'
    >>> 'ABC'.join(['My', 'name', 'is', 'Simon'])
    'MyABCnameABCisABCSimon'
  •   split()方法做的事情正好相反:它针对一个字符串调用,返回一个字符串列表。也可以向split()方法传入一 个分割字符串,指定它按照不同的字符串分割。

    >>> 'My name is Simon'.split()
    ['My', 'name', 'is', 'Simon']
  •   rjust()和 ljust()字符串方法返回调用它们的字符串的填充版本,通过插入空格来对齐文本。这两个方法的第一个参数是一个整数长度,用于对齐字符串。rjust()和 ljust()方法的第二个可选参数将指定一个填充字符,取代空格字符。

    >>> 'Hello'.rjust(20, '*')
    '***************Hello'
    >>> 'Hello'.ljust(20, '-')
    'Hello---------------'
  •     center()字符串方法与 ljust()与 rjust()类似,但它让文本居中,而不是左对齐或右对齐。
  •   sort()将字符串排序。
  •   注意,Python对大小写很敏感,如果写错了大小写,程序会报错。
  • 合并——Python使用加号+来合并字符串。
  •    删除空白:方法rstrip()右,   lstrip()左,   strip()两边,strip()也可以带参数,删除指定内容。
  •   语法错误:在用单引号括起的字符串中,如果包含撇号,就将导致错误。双引号不会。
  •   Print() 打印,添加逗号会空一格。
  •   pyperclip 模块有 copy()和 paste()函数,可以向计算机的剪贴板发送文本,或从它接收文本。
  •   字符串有个replace()方法,可以替换指定内容。
    >>> a = 'abc'
    >>> a.replace('a', 'A')
    'Abc'

1.2.2空值

  空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

1.2.3常量

  常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:PI = 3.14159265359。

1.2.4赋值

  在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量:

>>>a = 123 # a是整数
>>>print(a)
123
>>>a = 'ABC' # a变为字符串
>>>print(a)
'ABC'

  赋值语句:a, b = b, a + b,这种赋值非常方便。用这种赋值可以很轻松的构造斐波那契数列:

 fib = [0, 1]  # 构造fib数列
a, b = 0, 1
while b < 1000:
a, b = b, a + b
fib.append(b) print(fib) 输出:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597]

1.2.5格式化

  Python中格式化有两种,第一种用%实现,第二种{ } format格式。

  % 运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。常用占位符:

  • %d  整数
  • %f  浮点数
  • %s  字符串
  • %x  十六进制整数

  其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:

>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'

  如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串。有些时候,字符串里面的%是一个普通字符,需要转义,用%%来表示一个 % 。

  第二种格式化方法,format,通过 {} 来代替 % 。

1、正常使用

>>> print("我叫{},今年{}岁了".format("小李", 20))
我叫小李,今年20岁了

2、还可以通过在括号里填写数字,修改格式化的顺序,0为第一个参数,1为第二个参数。

>>> print("我叫{1},今年{0}岁了".format("小李", 20))
我叫20,今年小李岁了

3、通过key取变量,通过设定关键字,可以在 { }中直接指定关键字,不用管format中参数的顺序。

>>> print("我叫{name},今年{age}岁了".format(name="小李", age=20))
我叫小李,今年20岁了

1.2.6转义字符

  1. 空白——泛指任何非打印字符,如空格、制表符和换行符。
  2. 转义字符\可以转义很多字符 \t 制表符 ,\n 换行符。
  3. 字符\本身也要转义,所以\\表示的字符就是\ 。
  4. 如果字符串里面有很多字符都需要转义,Python中可以用 r''表示'' 内部的字符串默认不转义(原始字符串):
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
>>> print(r'That is Carol\'s cat.')
That is Carol\'s cat.

1.3数字

1.3.1整数 int

  1. 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等。
  2. 整数的除法是精确的。在Python中,有两种除法,一种除法是/ , /除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数。还有一种除法是//,称为地板除,两个整数的除法仍然是整数。
  3. % 取余数。
  4. ** 表示次方,例如 a**b,即 a 的 b 次方。
  5. pow(x, y)函数,计算x的y次方,例如:pow(2, 10) = 1024,pow(2, 15) = 32768 。

1.3.2浮点数float

  1. Python将带小数的数字都称为浮点数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。
  2. 对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等。
  3. 浮点数精确到小数后15位。

1.3.3复数complex

  1.使用complex()把数字转化为复数。 complex(2) ---> (2+0j)

  2.对于复数 z = 7 + 5j ,可以用z.real得到实数部分,z.imag得到虚数部分。

  3.复数的虚数部分通过加 j 或 J 来标识。

1.3.4使用函数str()避免错误

  1. 使用 type() 可以坚持数据类型,不过 type() 不能对class类的子集进行检查。
  2. 数据类型检查也可以用内置函数isinstance()实现,isinstance就可以对class类的子集进行检查,所有要看情况自己判断选择使用哪一个:
 def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x

1.4注释

1. 以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。

 # 这是个注释

2.由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

 #!/usr/bin/env python3
# -*- coding: utf-8 -*-

3.文档字符串的注释 , 用3对双引号表示,一般用于对函数或类的说明,   ”””      ”””

1.5Python之禅

在命令行中输入import this打印出python之禅

The Zen of Python, by Tim Peters

  1. Beautiful is better than ugly.
  2. Explicit is better than implicit.
  3. Simple is better than complex.
  4. Complex is better than complicated.
  5. Flat is better than nested.
  6. Sparse is better than dense.
  7. Readability counts.
  8. Special cases aren't special enough to break the rules.
  9. Although practicality beats purity.
  10. Errors should never pass silently.
  11. Unless explicitly silenced.
  12. In the face of ambiguity, refuse the temptation to guess.
  13. There should be one-- and preferably only one --obvious way to do it.
  14. Although that way may not be obvious at first unless you're Dutch.
  15. Now is better than never.
  16. Although never is often better than *right* now.
  17. If the implementation is hard to explain, it's a bad idea.
  18. If the implementation is easy to explain, it may be a good idea.
  19. Namespaces are one honking great idea -- let's do more of those!

Python基础学习总结(一)的更多相关文章

  1. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  2. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  3. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  4. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  5. (一)python基础学习

    根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...

  6. python基础学习(起步)

    目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...

  7. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  8. Python基础学习一

    Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...

  9. Python基础学习五

    Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出 ...

  10. Python基础学习四

    Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...

随机推荐

  1. maven 引入外部jar包

    方式1:dependency 本地jar包 <dependency> <groupId>com.hope.cloud</groupId> <!--自定义--& ...

  2. SFML从入门到放弃(1) 窗口和交互

    SFML从入门到放弃(1) 窗口和交互 创建一个新窗口: sf::RenderWindow window(sf::VideoMode(,),"new window"); 但是光创建 ...

  3. CF1106F Lunar New Year and a Recursive Sequence(矩阵快速幂+bsgs+exgcd)

    题面 传送门 前置芝士 \(BSGS\) 什么?你不会\(BSGS\)?百度啊 原根 对于素数\(p\)和自然数\(a\),如果满足\(a^x\equiv 1\pmod{p}\)的最小的\(x\)为\ ...

  4. [Flex] 修改注释中的@author方法

    当然,在Flash Builder里,按Ctrl+Shift+D可以很方便在添加AsDoc注释,也可以修改,可是有些生成的@author是系统的用户名(如:administor),如何修改 修改方法之 ...

  5. [译文]casperjs的API-clientutils模块

    casper提供了少量的客户端接口用来进行远程DOM环境注入,通过clientutils模块的ClientUtils类实例中的__utils__对象来执行: casper.evaluate(funct ...

  6. CF960G Bandit Blues 分治+NTT(第一类斯特林数)

    $ \color{#0066ff}{ 题目描述 }$ 给你三个正整数 \(n\),\(a\),\(b\),定义 \(A\) 为一个排列中是前缀最大值的数的个数,定义 \(B\) 为一个排列中是后缀最大 ...

  7. 【转】IDEA中xml文件头报错:URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)

    有时候在IDEA中配置spring文件时会出现这个错误  URI is not registered (Settings | Languages & Frameworks | Schemas ...

  8. 阿里云Centos下安装nginx之后外网无法访问

    centos 7.4 nginx1-14.0编译安装 curl 127.0.0.1 可以请求到 index.html curl local 可以请求到 index.html http://ip/ 无法 ...

  9. train loss与test loss结果分析

    train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变,说明网络过拟合; train loss 趋于不变,test ...

  10. Codeforces - tag::graphs 大合集 [占坑]

    520B 给定初始n和目标m,存在两种操作\(-1\)和\(×2\),要求最少操作次数 无脑解法是BFS,不能解决稍大的规模 当n>m时,输出n-m 否则逆向处理,转换为m到n的最小操作次数,存 ...