1. 整型

  整型即整数,用 int 表示,在 Python3 中整型没有长度限制。

1.1 内置函数

  1. int(num, base=None)

  int( ) 函数用于将字符串转换为整型,默认转换为十进制。

>>> int('123')
123
>>> int('123', base=16)
291

  2. bit_length( num)

  当前数字的二进制,至少用多少位表示。

>>> a = 5
>>> a.bit_length()
3

2. 浮点型

  浮点型即小数,用 float 表示,也可以用科学计算法表示。

>>> a = 0.005
>>> a # 科学计数法
5e-3

  类型转换:

>>> float(2)
2.0
>>> float('2')
2.0

3. 布尔型

  布尔型是一种特殊的整型,用 True 和 False 或 0 和 1 表示,Python 中是 False 的有:

  • None、""、0、[ ]、()、{ }

  类型转换:

>>> bool(None)
False

4. 字符串

  字符串是 Python 里的文本,用 str 表示,创建一个字符串使用单引号【' '】或双引号【" "】,引起即可。

字符串一旦创建,不可修改,同时它也是可迭代对象

  如果字符串中的内容既有单引号,又有双引号,有两种办法解决:

  • 使用转义符号【\】对字符串中的引号转义
>>> 'Let\'s go'
"Let's go"
  • 使用不同的引号表示
>>> "Let's go"
"Let's go"

4.1 长字符串

  当字符串内容行数比较多时,我们可以使用 三重引号引起内容。

>>> print("""
... 从明天起,做一个幸福的人
... 喂马,劈柴,周游世界
... """) 从明天起,做一个幸福的人
喂马,劈柴,周游世界

4.2 内置方法

  PART 1:

# capitalize():将字符串内容首字母转换为大写
>>> s = 'i am rose'
>>> s.capitalize()
'I am rose' # casefold():将字符串的所有字符转换为小写,与 lower()一样,但是可以转换特殊字符 # lower():将字符串里的所有字符都转换为小写
>>> s = 'i love You'
>>> s.lower()
'i love you' # upper():将字符串里的所有字符都转换为大写
>>> s.upper()
'I LOVE YOU' # count(sub,start,end):统计字符串中某个字符出现的次数,可指定范围
>>> s = 'i am Rose, age 18'
>>> s.count('a')
2
>>> s.count('a', 3, 5)
0 # startswith(suffix,start,end)、endswith(suffix,start,end)
# 查找这个字符串,判断是以什么字符开头或结尾,返回布尔值,可指定范围
>>> s = 'i am Rose, age 18'
>>> s.startswith('I')
True
>>> s.endswith('I')
False # find(sub,start,end):查找某个字符,返回其下标,若有多个只返回第一个的下标,若不存在则返回 -1
>>> s = 'I am rose' # 空格也占位
>>> s.find('a')
2 # index(sub,start,end):与 find()一样,但是不存在则抛出 ValueError # format(*args,**kwargs):格式化字符串,将字符串中的占位符替换为指定值,不限参数(可以是位置、关键字参数)
>>>'I am {0}, age {1}'.format('rose', 18) # 位置参数
>>>'I am {name}, age {age}'.format(name='rose', age=18) # 关键字参数 >>> d = {'name': 'rose', 'age': 18} # 传入字典(加 **)
>>>'I am {name}, age {age}'.format(**d) >>> l = ['rose', 18] # 传入列表(加 *)
>>> 'I am {:s}, age {:d}'.format(*l)
'I am rose, age 18' # format_map():格式化字符串,接收字典
>>> 'I am {name}, age {age}'.format_map({'name': 'rose', 'age': 18})
'I am rose, age 18' # isalnum():判断当前字符串是否只包含字母或数字,返回布尔值
>>> s1 = 'sda12'
>>> s.isalnum()
True
>>> s2 = '12'
>>> s2.isalnum()
True
>>> s3 = 's_'
>>> s3.isalnum()
False # isalpha():判断当前字符串所有字符是否都是字母,包括汉字,返回布尔值
>>> s1 = 'sda12'
>>> s1.isalpha()
False
>>> s2 = '汉字'
>>> s2.isalpha()
True # isdecimal():判断当前字符串所有字符是否都是数字,返回布尔值
>>> s = '123'
>>> s.isdecimal()
True
>>> s1 = '123s'
>>> s1.isdecimal()
False # isdigit():判断当前字符串所有字符是否都是数字,可识别 ②,返回布尔值
>>> s2 = '②'
>>> s2.isdigit()
True
>>> s3 = '二'
>>> s3.isdigit()
False # isnumeric():判断当前字符串所有字符是否都是数字,可识别 ②,和二,返回布尔值
>>> s3.isnumeric()
True # isprintable():判断字符串是否存在不可显示的字符,如 \t、\n,空格等返回布尔值
>>> s6 = ''
>>> s6.isprintable()
True
>>> s6 = ' '
>>> s6.isprintable()
True # isspace():判断字符串是否都是空格,返回布尔值
>>> s5.isspace()
True
>>> s6 = ''
>>> s6.isspace()
False # istitle():判断字符串中每个单词首字母是否都是大写,即是否是标题
>>> s = 'i love you'
>>> s.istitle()
False # title():将字符串标题化
>>> s.title()
'I Love You'

  PART 2:

# join(iterable):以字符串为分隔符,插入到序列的每个字符间,传入的列表、元组等,其中的元素必须是字符串不能是数字
>>> '-'.join('内置方法') # 以 - 分隔符
'内-置-方-法'
>>> ' '.join('内置方法')
'内 置 方 法'
>>> '-'.join(['abd', '123'])
'abd-123' # ljust(width,fillchar=None):将字符串居左,右边以字符填充,默认以空格填充,可以指定宽度
# rjust(width,fillchar=None):将字符串居右,左边以字符填充,默认以空格填充,可以指定宽度
# center(width,fillchar=None):将字符串居中,两边以字符填充,默认以空格填充,可以指定宽度
>>> s = 'love'
>>> s.ljust(10, '*')
'love******'
>>> s.rjust(10, '*')
'******love'
>>> s.center(10, '*')
'***love***' # zfill(width):返回长度为 width 的字符串,原字符串右对齐,前面以 0 填充
>>> s = 'abc'
>>> s.zfill(10)
'0000000abc' # islower()、isupper():判断字符串所有字符是否都是小写或大写,返回布尔值
>>> s = 'i love you'
>>> s.islower()
True
>>> s.isupper()
False # lstrip(chars=None):去掉字符串左边所有空格,包括 \t、\n
# rstrip(chras=None):去掉字符串右边所有空格,包括 \t、\n
# strip(chras=None):去掉字符串两边所有空格,包括 \t、\n
>>> s = ' 123 '
>>> s.lstrip()
'123 '
>>> s.rstrip()
' 123'
>>> s.strip()
'123' # partition(sep):separator 分隔符,从左边开始分割字符串,只能分成三份,多个时只返回第一个
>>> s = 'testsadsabc'
>>> s.partition('s')
('te', 's', 'tsadsabc') # rpartition(sep):从右边开始分割字符串,只能分成三份,多个时只返回第一个
>>> s.rpartition('s')
('testsad', 's', 'abc') # split(sep=None,maxsplit=-1):不带参数,默认以空格分割字符串,可指定最大分割次数,返回分割后子串列表
>>> s = 'testlosve' # 不包含分割字符
>>> s.split('s')
['te', 'tlo', 've'] # rsplit(sep=None,maxsplit=-1):从右边分割字符串,与 split()类似
>>> s.rsplit('s')
['te', 'tlo', 've'] # splitlines([keepends]):以 \n 分割,返回一个列表,TRUE、False 表示是否保留换行符
>>> s = 'testab\ncd\nh'
>>> s.splitlines()
['testab', 'cd', 'h']
>>> s.splitlines(True)
['testab\n', 'cd\n', 'h']
>>> s.splitlines(False)
['testab', 'cd', 'h'] # swapcase():翻转大小写
>>> s = 'abc'
>>> s.swapcase()
'ABC' # maketrans():用于创建字符映射的转换表,两个参数,第一个为要转换的字符,第二个为转换的目标,两者长度一致
# translate(table):根据 table规则(由 str.maketrans('a', 'b')制定),转换字符串字符。
>>> s = 'this is string'
>>> s.translate(s.maketrans('aeiou', '12345')) # aeiou 与 12345 一一对应
'th3s 3s str3ng' # replace(old,new[,count]):把字符串中的 old 字符替换成 new 字符,count 为替换次数,可选
>>> s = 'hello'
>>> s.replace('e', 'h')
'hhllo'
>>> s # 不改变原始字符串
'hello' # expandtabs([tabsize=8]):将字符串中的 \t 转换为空格,可指定长度,默认 tabsize = 8
>>> s = 'username\teamil\tpassword\nlixiang\tlixiang@qq.com\t123456'
>>> s.expandtabs(20)
username eamil password
lixiang lixiang@qq.com 123456 # bit_length():返回一个 int 用二进制表示需要多少位,不包含前导数和符号
>>> n = 37
>>> n.bit_length()
6 # bin(number):返回一个 int 的二进制表示
>>> bin(37)
'0b100101' # 37 用二进制表示,刚好 6 位 # encode(encoding='utf-8', errors='strict):以 encoding 方式编码字符串,errors 指定不同的错误处理方案,返回编码后的字符串,是一个 bytes 对象
# bytes.decode(encoding='utf-8', errors='strict):以指定的编码格式解码 bytes 对象,默认 utf-8
>>> s = '编码解码'
>>> s1 = s.encode('utf-8')
>>> s2 = s.encode('gbk')
>>> s1
b'\xe7\xbc\x96\xe7\xa0\x81\xe8\xa7\xa3\xe7\xa0\x81'
>>> s2
b'\xb1\xe0\xc2\xeb\xbd\xe2\xc2\xeb' >>> s1.decode('utf-8', 'strict') # 解码,以什么方式编码就以什么方式解码
'编码解码'
>>> s2.decode('gbk', 'strict')
'编码解码'

4.3 索引

  获取字符串中某个字符,只需传入索引即可,索引从 0 开始,支持负数索引(最后一个为 -1)

>>> s = 'hello'
>>> s[0]
'h'
>>> s[-1]
'o'

  字符串是可迭代对象,因此也支持切片:

>>> s = 'hello'
>>> s[0:2]
'he'
>>> s[-2:-1]
'l'

  同样地 也支持 for 循环遍历其中每一个元素:

>>> for i in s:
... print(i)
...
h
e
l
l
o

4.4 内置函数

  len()可以获取字符串长度

>>> len('hi')
2

4.5 字符串拼接

  为了保证内存的连续性,字符串一旦创建,不允许被修改;一旦修改,将会产生新的字符串,使用连接符 + 可以将两个字符串拼接成一个新的字符串。

>>> myteacher = '李'
>>> yourteacher = '老师'
>>> ourteacher = myteacher + yourteacher
>>> ourteacher
'李老师'

  Python 中不同数据类型是不能拼接的,但是可以使用别的方法实现:

>>> print('score' + ':' + str(95))	# 使用 + 连接符需要考虑是否是相同数据类型
score:95
>>> print('score:',95) # 可以不用考虑数据类型
score: 95

4.6 原始字符串

  所有的字符串都是按照字面的意思来使用,没有转义特殊和不能打印的字符。

  当字符串中有反斜杠 \ 时,往往会被当成转义字符处理,而有些时候我们并不需要将反斜杠保存下来,有两种方法,一是再加一个反斜杠将其保存下来,但是当反斜杠很多时候,就显得很乱:

>>> s = 'c:\\now'
>>> s
'c:\\now'
>>> print(s)
c:\now

  另一个方法就是使用原始字符串 raw,只需要在字符串前面加个 r 即可,它会自动在程序内部添加反斜杠,无需手动添加:

>>> s = r'c:\now'
>>> s # 自动添加 \
'c:\\now'
>>> print(s)
c:\now

4.7 格式化字符串

  格式化字符串,即将字符串中的占位符替换为指定值。

  1. format()

  format()方法接收位置参数和关键字参数,分别使用位置、关键字占位:

  语法:

format(*args,**kwargs)

  位置参数:

>>>'I am {0}, age {1}'.format('rose', 18)	# 位置参数
I am rose, age 18

  关键字参数:

>>>'I am {name}, age {age}'.format(name='rose', age=18)		# 关键字参数
I am rose, age 18

  也可以接收列表和字典作为参数传入,只需在列表前面添加 *,字典前面添加 ** 即可:

>>> d = {'name': 'rose', 'age': 18}		# 传入字典(加 **)
>>>'I am {name}, age {age}'.format(**d) >>> l = ['rose', 18] # 传入列表(加 *)
>>> 'I am {:s}, age {:d}'.format(*l)
'I am rose, age 18'

  2. 格式化操作符 %

  Python 提供了一系列的格式化操作符,用于格式化字符串。

Python 常见格式化操作符及含义

符号 含义
%s 格式化字符串
%d 格式化整数
%c 格式化字符及 ASCII 码
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制(大写)
%f 格式化浮点数,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同 %e,用科学计数法格式化浮点数
%g 根据值的大小决定使用 %f 或 %e
%G z作用同 %g,根据值的大小决定使用 %f 或 %E

  示例:

>>> msg = 'I am %s, age %d' % ('rose', 18)
>>> msg
'I am rose, age 18' # 保留两位有效小数(在 f 前面添加 .2)
>>> s = 'percent: %.2f' % 97.687
>>> s
'percent: 97.69' # 保留百分号(在 f 后面添加两个 %)
>>> s1 = 'percent: %.2f%%' % 97.687
>>> s1
'percent: 97.69%' >>> s2 = 'I am %(name)s, age %(age)d' % {'name':'rose', 'age':18}
>>> s2
'I am rose, age 18' >>> s3 = 'I am %(pp).2f' % {'pp':123.4567}
>>> s3
'I am 123.46'

5. 练习题

  1. Python 2 和 Python 3 中 range()区别?

  • Python 2:直接全部生成所有数字,xrange 与 Python 3 一样
  • Python3:循环一次生成一个,节省内存

  2. 实现一个加法计算器(如 5 + 9)?

value = '5 + 9'
v1, v2 = value.split('+')
print(int(v1) + int(v2))

  3. int 和 2、str 和 ‘xx' 的关系?

  类和对象的关系

  4. 计算用户输入的内容有几个数字,几个字母?

n = input('请输入内容:')		# input()接收的内容为 字符串
a = 0, b = 0 # 统计数字、字母
for i in n: # 对内容遍历循环
if i.isdecimal(): # 判断是否是数字
a += 1
else:
b +=1
print(a, b)

  5. 制作随机验证码,不区分大小写

  流程如下:

  • 用户执行程序
  • 给用户显示要输入的验证码
  • 用户输入验证码
  • 判断用户输入的验证码是否和随机生成的相同,相同则打印输入正确,否则重新输入
# 每次生成一个字符,循环四次,生成四个字符,即一个验证码
import random verify_coe = ''
for i in range(4):
current = random.randrange(0, 4) #
if current != i:
# chr()可以将数字转换为 ASCII 码表中所对应的字符,65~90 对应 A~Z,98~122 对应 a~z
# 生成一个 65~90 的随机整数,并将其转换为大写字母
temp = chr(random.randint(65, 90))
else:
temp = random.randint(0, 9) # 生成一个 0~9 的随机整数
verify_code += str(temp) while True:
n = input('请输入验证码:')
if n.upper == verify_code:
print('输入正确')
break
else:
print('输入错误,请重新输入')

  使用函数写:

import random

def check_code():
"""
生成随机验证码
:return: 验证码
"""
verify_code = ''
for i in range(4):
current = random.randrange(0, 4) #
if current != i:
# chr()可以将数字转换为 ASCII 码表中所对应的字符,65~90 对应 A~Z,98~122 对应 a~z
# 生成一个 65~90 的随机整数,并将其转换为大写字母
temp = chr(random.randint(65, 90))
else:
temp = random.randint(0, 9) # 生成一个 0~9 的随机整数
verify_code += str(temp)
return verify_code def verify(code):
"""
验证用户输入的验证码是否与随机生成的一致
:param code:
:return:
"""
while True:
n = input('请输入验证码:')
if n.upper() == code: # 不区分大小写
print('输入正确')
break
else:
print('输入错误,请重新输入!') def main():
code = check_code()
print(code)
verify(code)
main()

  6. 制作表格

  循环提示用户输入:用户名、密码和邮箱(不超过 20 个字符,超过只取前 20 个字符,)若输入 q 或 Q 则退出,将内容以表格形式显示:

s = ''
while True:
user = input('请输入用户名:')
if user == 'q' or user == 'Q':
break
psd = input('请输入密码:')
email = input('请输入邮箱:')
user_one = user[0:20]
psd_one = psd[0:20]
email_one = email[0:20] temp1 = 'username\tpassword\temial\n'
temp2 = '{0}\t{1}\t{2}\n'
a = temp2.format(user_one, psd_one, email_one)
s += a
print(temp1.expandtabs(20), s.expandtabs(20))
请输入用户名:rose
请输入密码:123456
请输入邮箱:123456@qq.com
username password emial
rose 123456 123456@qq.com

Python开发【第二篇】: 基本数据类型(一)的更多相关文章

  1. python基础-第二篇-基本数据类型

    一.运算符 1.算数运算: 算数运算符相信大家都不陌生吧,尤其是加减乘除,好!那我就带着大家看看最后三个,这三个到底是干什么玩意的? %,取两数相除的余数,看图: **,x的多少次幂,看图: //,取 ...

  2. python开发第二篇 :python基础

    python基础a.Python基础      -基础1. 第一句python       -python后缀名可以任意?     -导入模块时如果不是.py文件,以后的文件后缀名是.py.2.两种 ...

  3. Python 学习 第二篇:数据类型(字符串)

    字符串是一个字符的.有序的.不可变的序列,用于存储基于文本的信息.字符串所包含的字符存在从左至右的位置顺序,不可以在原处(in-place)修改.Python没有C语言的字符和字符串之分,只有字符串. ...

  4. python开发[第二篇]------str的7个必须掌握的方法以及五个常用方法

    在Python中 基本数据类型有 str int boolean list dict tuple等 其中str的相关方法有30多个 但是常用的就以下7个 join  # split # find # ...

  5. Python开发第二篇

    运算符 1.算术运算符 % 取余运算符,返回余数 ** 幂运算符 //返回商的整数部分 2.逻辑运算符 and  与运算符 a and b 如果a为False是,表达式为False,如果a为True返 ...

  6. 《python开发技术详解》|百度网盘免费下载|Python开发入门篇

    <python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby  内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...

  7. iOS开发——高级技术精选&底层开发之越狱开发第二篇

    底层开发之越狱开发第二篇 今天项目中要用到检查iPhone是否越狱的方法. Umeng统计的Mobclick.h里面已经包含了越狱检测的代码,可以直接使用 /*方法名: * isJailbroken ...

  8. Python人工智能第二篇:人脸检测和图像识别

    Python人工智能第二篇:人脸检测和图像识别 人脸检测 详细内容请看技术文档:https://ai.baidu.com/docs#/Face-Python-SDK/top from aip impo ...

  9. Python人工智能第二篇

    Python人工智能之路 - 第二篇 : 现成的技术   预备资料: 1.FFmpeg: 链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密码:w ...

  10. python开发第一篇:初识python

    一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...

随机推荐

  1. poj 1426 Find The Multiple 搜索进阶-暑假集训

    E - Find The Multiple Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I6 ...

  2. Linux开发引导

    1.应用程序目录 /bin 用于存放启动系统时用到的程序 /usr/bin 用于存放用户使用的标准程序 /usr/local/bin 用于存放软件安装的程序 /sbin:/usr/sbin 用于存放系 ...

  3. maven建ssh项目的pom文件

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  4. Logiscope学习网址

    Logiscope测试机理   http://blog.csdn.net/cmy673986/article/details/9163247 http://www.cnitblog.com/qiuya ...

  5. R语言的学习笔记 (持续更新.....)

    1. DATE 处理 1.1 日期格式一个是as.Date(XXX) 和strptime(XXX),前者为Date格式,后者为POSIXlt格式 1.2 用法:as.Date(XXX,"%Y ...

  6. 用JavaScript实现表单按回车自动提交

    JavaScript实现表单form1按回车自动提交代码如下: <script type="text/javascript"> function submitMe() ...

  7. jquery中ON方法的使用

    以前在jquery中绑定动态元素一直使用live,现在才发现live已经被抛弃了,现在如果想实现live方法,可以使用最新的ON方法,具体使用如下: 替换live() live()写法   $('#l ...

  8. Mybatis学习--日志

    学习笔记,选自Mybatis官方中文文档:http://www.mybatis.org/mybatis-3/zh/logging.html Logging Mybatis内置的日志工厂提供日志功能,具 ...

  9. 使用Visual Studio进行单元测试-Part3

    本文主要介绍Visual Studio(2012+)单元测试框架的一些技巧: 测试覆盖率的统计 测试分组 测试Setup/TearDown 测试调试 Exception测试 代码覆盖率的统计 VS下面 ...

  10. poj 2388 Who's in the Middle(快速排序求中位数)

    一.Description FJ is surveying his herd to find the most average cow. He wants to know how much milk ...