一、基础
1、编码
UTF-8:中文占3个字节
GBK:中文占2个字节
Unicode、UTF-8、GBK三者关系

ascii码是只能表示英文字符,用8个字节表示英文,unicode是统一码,世界通用码,规定采用2个字节对世界各地不同文字进行编码,gbk是针对中国汉字提出的编码标准,用2个字节对汉字进行表示。utf8是对unicode的升级改进版,但是unicode到utf-8并不是直接的对应。

UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,注意的是unicode一个中文字符占2个字节,而UTF-8一个中文字符占3个字节。

ascii和unicode可以相互转换,gbk和unicode可以相互转换。

2、input()函数

  1. n = input" "
  2. >>>hello
  3. >>>n
  4. >>>'hello'

  

  1. n = input" "
  2. >>>10
  3. >>>n
  4. >>>'10'

  

输入数字10,这里的n是字符串'10',而非数字10
这里如果
n * 10将输出
'10101010101010101010'
如果将字符串转换数字,可以用Int( )

new_n = int(n)

3、while循环、continue、break

  1. while 条件语句1
  2. 功能代码1
  3. else 条件语句2
  4. 功能代码2

  

while循环也可以加else

例子:使用while循环输入 1 2 3 4 5 6 8 9 10

  1. n = 1
  2. while n < 11:
  3. if n == 7 :
  4. pass
  5. else:
  6. print(n)
  7. n = n + 1

  

或者

  1. count = 1
  2. while count < 11
  3. if count == 7:
  4. count = count + 1
  5. continue
  6. print(count)
  7. count = count + 1

 

当while执行到if count ==7时,遇到continue,下面的print语句和count=count + 1不会被执行,重新跳回while语句

再比如

  1. count = 1
  2. while count < 11:
  3. count = count + 1
  4. continue
  5. print('123')
  6. print('end')

  

这里的print('123')永远不能被执行到

第二个例子

  1. count = 1
  2. while count < 11:
  3. count = count + 1
  4. print(count)
  5. break
  6. print('123')
  7. print('end')

 

输出结果

  1. 2
  2. end

  

这里的print('123')也不能被执行到,遇到break语句直接跳出循环,只能执行一次循环,即输出一次print(count)语句
此程序完整执行过程如下图

总结:continue终止当前循环进行下次循环,break终止整个循环

4、算术运算符
+       -     *     /      %        **         //
加   减   乘   除   取余   乘方    取整数商

5、字符串

  1. name = "马大帅"
  2. if "马" in name :
  3. print("ok")
  4. else:
  5. print("error")

  

'马大帅' 称为字符串
'马' 成为一个字符
'马大'或者'大帅'称为子字符串,也可以叫做子序列,注意这里的字符要连续的,而'马帅'不能称之为子字符串

6、成员运算:
判断某个字符在某个字符串用in 或者not in

  1. name = "马大帅"
  2. if "吗" not in name :
  3. print("ok")
  4. else:
  5. print("error")

  

7、布尔值

if语句和while语句都使用布尔值作为条件。
布尔值只有两种情况:
真 True 假 False

  1. if 条件判断语句
  2. 功能代码某块

 

这里的条件判断语句最终会产生一个布尔值,或者是True 或者False

  1. name = "马大帅"
  2. p ="吗" not in name
  3. print(p)
  4. if p:
  5. print("ok")
  6. else:
  7. print("error")

  

输出结果

  1. True
  2. ok

  

布尔操作符:and or not

在 Python 看来,只有以下内容会被看作假(注意冒号括号里边啥都没有,连空格都不要有!):False None 0 "" '' () [] {}

其他一切都被解释为真!

举个例子

  1. i = 10
  2. while i:
  3. print ("我爱学习!")
  4. print("end")

  

输出结果

  1. 我爱学习!
  2. 我爱学习!
  3. 我爱学习!
  4. 我爱学习!
  5. 我爱学习!
  6. 我爱学习!
  7. 我爱学习!
  8. 我爱学习!
  9. 我爱学习!
  10. ...(这里代表一直输出"我爱学习"

  

这个程序会一直输出"我爱学习",除非按下CTRL+C停止执行程序
而print("end")语句永远不会被执行到。
再比如

  1. i = 10
  2. while i:
  3. print ("我爱学习!",i)
  4. i = i -1
  5. print("end")

  

输出结果

  1. 我爱学习! 10
  2. 我爱学习! 9
  3. 我爱学习! 8
  4. 我爱学习! 7
  5. 我爱学习! 6
  6. 我爱学习! 5
  7. 我爱学习! 4
  8. 我爱学习! 3
  9. 我爱学习! 2
  10. 我爱学习! 1
  11. end

  

通过观察"我爱学习"后的数字变化,我们可以看到,这个循环的执行过程,当i循环到0时 ,即while 0 :,0为False,终止循环。开始执行
print("end")语句。

8、比较运算符:判断大小符号
== 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于

9、运算的优先级

先计算括号内,复杂的表达式推荐使用括号
一般的执行顺序:从左到右
布尔运算优先级
从高到低:not and or
例子:

  1. user = 'nicholas'
  2. psswd ='123'
  3. v = user == 'nicholas' and passwd == '123' or 1 == 2 and pwd == '9876'
  4. print(v)

  

分析:
v = true and true or
此时不用继续计算即可得出v为真的结果,不用考虑布尔运算的优先级,注意这个运算是从左到右的,**而非看到and自动进行运算而后从左到右运算**

一些结论:
从左到右
(1)第一个表达式 or
True or ————>>得出结果True
(2)第一个表达式 and
True and ————>>继续运算
(3)第一个表达式 or
False or ————>>继续运算
(4)第一个表达式 and
False and ————>>得出结果False

即**短路逻辑**

短路逻辑
表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出
 or 左侧表达式 (即True)。

表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到
 or 的左侧,参与接下来的逻辑运算。

若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。

10、赋值运算符
>= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值给c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a
//= 取整除赋值运算符 c //= a 等效于 c = c // a

二、基本数据类型
(1)数字 int
a = 1
a = 2

int整型(整数类型)
python3中用int表示,没有范围
python2中int有一定范围
超过一定范围,Python2中有长整型即long
python3中只有整型,用int,取消了long类型

**①**、int()将字符串转换为数字

  1. a = "123"
  2. type(a)
  3. b = int(a)
  4. print(b)
  5. type(b)

  

输出

  1. <class 'str'>
  2. 123
  3. <class 'int'>

 

type()即可查看变量类型

但是
a = "123n"
b = int(a)
此时是无法用int()转换字符串为数字的。

  1. num = "c"
  2. v = int(num,base = 16)
  3. print(v)

注释: v = int(num,base = 16) 将num以16进制看待,将num转为10进制的数字。这里是可以的。

②bit_lenghth
当前数字的二进制,至少用n位表示

  1. age = 5
  2. r = age.bit_length()
  3. #当前数字的二进制,至少占用了n位表示
  4. print(r)

  输出结果

  1. 3

  即5在二进制中表示为101,至少需要3个位置来表示

(2)字符串 str
a ='hello'
a= 'ssssdda'

字符串方法介绍

a--capitalize()

  1. # capitalize() 首字母大写
  2. test = "lingou"
  3. v1 = test.capitalize( )
  4. print(v1)

  

输出结果

  1. Lingou

  

b--casefold( )、lower()

#lower() 所有变小写
# casefold( ) 所有变小写,与lower相比casefold更牛逼,很多未知(不是英文的,如法文、德文等)的对相应变小写

#lower() 方法只对ASCII编码,也就是‘A-Z’有效,对于其他语言(非汉语或英文)中把大写转换为小写的情况只能用 casefold() 方法。

  1. test = "LinGou"
  2. v2 = test.casefold( )
  3. print(v2)
  4. v3 =test.lower()
  5. print(v3)

  输出结果

  1. lingou
  2. lingou

  

c--center( )

#center( ) 设置宽度,并将内容居中,这里的"*"可以不写,默认为空白。
#这里的30是总宽度,单位字节

  1. test = "LinGou"
  2. v4 = test.center(30,"*" )
  3. print(v4)

输出结果

  1. ************LinGou************

 

空白情况

  1. test = "LinGou"
  2. v5 = test.center(30 )
  3. print(v5)

输出结果

  1. LinGou

注:这个输出结果LinGou左右是有空格的

  

d--count( )

#count( ) 去字符串中寻找,寻找子序列的出现次数

#count(sub[, start[, end]])

#count( 子序列,寻找的开始位置,寻找的结束位置)

#count( sub, start=None, end=None) None默认表示此参数不存在

  1. test = "LinGouLinGengxin"
  2. v6 = test.count("in" )
  3. print(v6)
  4. v7 = test.count("in",3,6)
  5. #这里的3,6 是对字符串"LinGouLinGengxin"的索引编码,从第三个开始到第六个结束
  6. #L i n G o u L i n G e n g x i n
  7. #0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  8. print(v7)
  9. v8 = test.count("in",3)#从第3个位置开始找
  10. print(v8)

输出结果

  1. 3
  2. 0
  3. 2

  

e--endswith()、startswith()

#endswith() 以什么什么结尾

#startswith()以什么什么开始

  1.  
  1. test = "LinGouLinGengxin"
  2. v9 = test.endswith("in" )
  3. v10 = test.startswith("in")
  4. print(v9)
  5. print(v10)

输出结果

  1. True
  2. False

  

f--find()、index()

#find()从开始往后找,找到第一个之后,获取其索引位置
#index()功能同上,index找不到,报错,一般建议用find()

  1. test = "LinGouLinGengxin"
  2. v11 = test.find("in" )
  3. v12 = test.find("XING" )
  4. v13 = test.index("in")
  5. # v14 = test.index("XING" )
  6. print(v11)
  7. print(v12)
  8. print(v13)
  9. #print(v14)

  

输出结果

  1. 1
  2. -1
  3. 1

  

取消v14 = test.index("XING" )和print(v14)的注释后运行程序会直接报错
因为index找不到"XING",而find()找不到会返回-1

g--format()

#format()格式化,将一个字符串中的占位符替换为指定的值
# { }就是占位符,通过format将占位符替换为指定的值

  1. test = "I am {name}"
  2. print(test)
  3. v15 = test.format(name = "LinGou" )
  4. print(v15)

  

输出结果

  1. I am {name}
  2. I am LinGou

  

-第二个

  1. test = "I am {name},age{a}"
  2. print(test)
  3. v16 = test.format(name = "LinGou",a = 19 )
  4. print(v16)

  

输出结果

  1. I am {name},age{a}
  2. I am LinGou,age19

  

-第三个

  1. test = "I am {0},age{1}"
  2. print(test)
  3. v17 = test.format("LinGou",19 )
  4. print(v17)

  

 

输出结果

  1. I am {0},age{1}
  2. I am LinGou,age19

  

当占位符有数字代表,format函数里不再需要具体的name =""
这里是按照先后顺序替换的。

第四个

#format_map()格式化,传入的值
# 书写格式{"name":"LinGou","a":19}

  1. test = "I am {name},age {a}"
  2. print(test)
  3. v18 = test.format_map({"name":"LinGou","a":19} )
  4. v19 = test.format(name = "LinGou",a = "19")
  5. print(v18)
  6. print(v19)

  

输出结果

  1. I am {name},age {a}
  2. I am LinGou,age 19
  3. I am LinGou,age 19

  分析:这里的v18和v19是等价的,只是书写方式不一样。format_map后面加的是字典。

h--isalnum( )

#isalnum( )字符串中是否只包含 字母和数字

  1. test = "LinGou"
  2. v20 = test.isalnum( )
  3. print(v20)
  4. test2 = "LinGou+"
  5. v21 = test2.isalnum( )
  6. print(v21)

  

输出结果

  1. True
  2. False

  

Python之路(第二篇):Python基本数据类型字符串(一)的更多相关文章

  1. python之路第二篇(基础篇)

    入门知识: 一.关于作用域: 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 10 == 10: name = 'allen' print name 以下结论对吗? ...

  2. Python之路(第九篇)Python文件操作

    一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r",encoding = “utf ...

  3. 第二篇 python进阶

    目录 第二篇 python进阶 一 数字类型内置方法 二 字符串类型内置方法 三 列表类型内置方法(list) 四 元组类型内置方法(tuple) 五 字典内置方法 六 集合类型内置方法(self) ...

  4. Python开发【第二篇】:初识Python

    Python开发[第二篇]:初识Python   Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...

  5. [转帖]虚拟内存探究 -- 第二篇:Python 字节

    虚拟内存探究 -- 第二篇:Python 字节 http://blog.coderhuo.tech/2017/10/15/Virtual_Memory_python_bytes/ 是真看不懂哦     ...

  6. Python之路第二天,基础(2)-基本数据类型

    一.Python数据类型 数 在Python中有4种类型的数,整数,长整数,浮点数和复数. 2是一个整数的例子 长整数不过是大一点的整数 3.23和52.3E是浮点数的例子.E标记表示10的幂.52. ...

  7. Python之路(第二十五篇) 面向对象初级:反射、内置方法

    [TOC] 一.反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它 ...

  8. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  9. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

随机推荐

  1. Oracle11g RAC安装

    双节点RAC环境,数据库 racdb 实例1:racdb1      实例2:racdb2 1.IP规划 名称             oracle-db1    oracle-db2PUBLIC I ...

  2. scrapy 是指user_agent

    1.倒入random模块 2.在settings文件中添加useragent列表 MY_USER_AGENT = [ "Mozilla/4.0 (compatible; MSIE 6.0; ...

  3. 【OpenGL】第一个窗口

    包含头文件: #include <GL/glew.h> // GLFW #include <GLFW/glfw3.h> 初始化与配置GLFW: glfwInit(); //初始 ...

  4. 【scrapy】其他问题

    今天看<python爬虫开发与项目实践>的17章写代码的时候发现,一个方法的结尾带了红色波浪线: def _process_booklist_item(self,item): ''' 处理 ...

  5. 每月IT摘录201901

    技术 1.Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid:在其它的容器也许就不叫jsessionid了. 2.在 InnoDB 中,索引使用的数据结构是 ...

  6. zabbix 自定义监控 排除带报错提示

    UserParameter=lq_data_sqoop,/usr/local/bin/sqoop.sh  2>/dev/null |awk '{print $2}' 注意:2>/dev/n ...

  7. Wasserstein距离

    https://blog.csdn.net/leviopku/article/details/81388306 https://blog.csdn.net/nockinonheavensdoor/ar ...

  8. Python+Selenium学习--前进和后退

    场景 这两个功能一般不太常用.所能想到的场景大概也就是在几个页面间来回跳转,省去每次都get url. 代码 #!/usr/bin/env python # -*- coding:utf-8 -*- ...

  9. Date 时间 日期 常用方法函数

    转载自https://www.cnblogs.com/lcngu/p/5154834.html 一.java.util.Date对象用来表示时间,基本方法如下: Date mDate = new Da ...

  10. js改变表单的内容样式

    一.改变单个样式    var obj = document.getElementById("id");   obj.style.cssText = " display: ...