1、运算符:
算术运算:+ - * / ** % //
赋值运算:= += -= *= /= %= //=
算术运算符和赋值运算符结果是值
比较运算:== < > <= >= != <>
成员运算:in not in(判断某个东西是否在某个东西里面包含)
逻辑运算:and or not
比较运算符、成员运算符、逻辑运算符结果是布尔值
and or执行顺序:
先计算括号内的
从前到后 :结果是True,遇到or,不往下走了,结果为True
结果是True,遇到and,继续往下走
结果是False,遇到or,继续往下走
结果是False,遇到and,不往下走了,结果为False
对于比较运算(== < > <= >= != <> )或in 、not,结果都是布尔值
2、基本数据类型:
整形 int
字符串 str
列表 list
元祖 tuple
字典 dict
布尔值(真True 假False)bool
3.整形&字符串pycharm功能讲解
3.1整形 int
int 整形 long长整形
python3里所有的整形无论大小、长短都是int,python2里有int和long
-int:将字符串转换为数字,其中字符串的字符必须为数字,不能包含字母
1 a = '123'
2 print(type(a),a)3 b =int(a)4 print(type(b),b)
1 num = 'a'
2 b = int(num, base=16)3 print(b)
-bit_length 当前数字的二进制至少用几位来表示
1 age = 5
2 r =age.bit_length()3 print(r)
3.2字符串 str
-capitalize 首字母大写
-casefold -lower所有字母变小写,-casefold功能更强大,很多未知的对应关系也可以变小写
-center 设置宽度,并将内容居中
test='alext'
v = test.center(20,'*')
print(v)
20代指总长度,*代表空白位置填充,一个字符,可有可无
-count 去字符串中寻找子序列的出现次数,参数可以设置起始位置和结束位置
-endswith以什么结尾,输出结果是布尔值
-startswith以什么开始,输出结果是布尔值
-find 从前往后找,找到一个后,获取其位置,未找到会输出-1
test = 'alextlert'
v = test.find('rt', 5, 8)
print(v)
5,8表示的是大于等于5小于8
-format 格式化,将一个字符串中的占位符替换为指定的值
test = 'i am {name}, age {a}'
v = test.format(name = 'alex', a=19)
print(v)
test = 'i am {0}, age {1}'
v = test.format('alex', 19)
print(v)
-format_map格式化,传入的值格式必须是{'name': 'alex', 'a': 19}
test = 'i am {name}, age {a}'
v = test.format_map({'name': 'alex', 'a': 19})
print(v)
-index功能类似find,区别是Index未找到会报错
-isalnum判断字符串中是否只是包含字母和数字,输出值是布尔值
test = 'qwe123_=='
v = test.isalnum()
print(v)
-expandtabs 断句,/t补全
test = 'username\temail\tpassword\npiaopiao\[email protected]\t12345\npiaopiao\[email protected]\t12345'
v = test.expandtabs(20)
print(v)
-isalpha 判断是否是字母&汉字,输出结果为布尔值
-isdecimal -isdigit -isnumeric判断一个字符串是否是数字,输出结果是布尔值,-isdecimal只能识别十进制的数, -digit能识别特殊数字,不支持中文‘二’,-isnumeric连中文都支持
test = '②'
v1 = test.isdecimal()
v2 = test.isdigit()
print(v1, v2)
-isidentifier 判断是否是标识符(字母、数字、下划线,数字不能开头),输出值是布尔值
-islower判断是否都是小写
-printable判断字符串是否有不可显示的字符,输出值 是布尔值
\t 制表符 \n换行
test = 'asd\t'
v1 = test.isprintable()
print(v1)
-isspace 判断字符串是否全都是空格,输出值是布尔值
test = 'asd\t '
v1 = test.isspace()
print(v1)
-title将字符串转换为标题样式,首字母全都变为大写
-istitle判断是否是标题,看首字母是否全都大写
-join将字符串中的每一个元素按照指定分隔符进行拼接*****非常重要
test = 'we are family we are family'
v = '>'.join(test)
print(v)
-ljust -rjust 填充一定宽度,字符放在最左边/最右边
test = 'we are family'
v = test.ljust(30, "*")
print(v)
zfill不能指定字符,默认用0填充
-lower 全部转换成小写
-isupper 判断是否全部是大写
-upper 全部准换成大写
-strip -lstrip -rstrip 默认去除左右空白、\t、\n,去除指定内容(优先最多匹配)
test = ' asfjk '
v = test.rstrip()
print(v)
test = 'asfjk'
v = test.rstrip('rtk')
print(v)
-maketrans 创建替换对应关系, translate 替换
v = "ashkljbvnkio"
m = str.maketrans('aeiou', '12345')
v1 = v.translate(m)
print(v1)
正则表达式可以设置是否想要分割元素,相当于partition和split的合体
-partition 只可以分割成三个元素,且包含分隔元素
-split 可以设定分成几个元素,但是没有分隔元素
test = "ashklsjbvnskio"
v1 = test.partition('s')
v2 = test.rpartition('s')
v3 = test.split('s')
v4 = test.split('s', 2)
v5 = test.rsplit('s', 2)
print(v1, v2, v3, v4, v5)
-splitlines 只能根据换行分割,true代表保留\n,false代表不保留\n
test = 'asd\nsdfgk\njkleror\n'
v = test.splitlines(True)
print(v)
-startswith 以……开头
test = 'asd\nsdfgk\njkleror\n'
v = test.startswith('ab')
print(v)
-swapcase 大写换小写,小写换大写
test = 'asd\nsdfgk\njklERor\n'
v = test.swapcase()
print(v)
-replace 替换
test = 'cyxcyxcyxcyx'
v = test.replace('yx', 'pp', 2)
print(v)
test[ ]通过索引/下标的方式获取字符串中的某一个字符
test = 'asd\nsdfgk\njklERor\n'
v = test[10]
print(v)
test[a:*b]通过索引/下标的方式获取切片,表示取>=a
test = 'asd\nsdfgk\njklERor\n'
v = test[0:5]
print(v)
test = 'asd\nsdfgk\njklERor\n'
v = test[0:-1]
print(v)
python 3:-len获取当前字符串由几个字符组成
test = 'lalala'
v = len(test)
print(v)
注:len join for循环 索引 切片在其他数据类型中也能用
for循环可以让字符串中的每一个字符单独呈现
test = '获取当前字符串由几个字符组成'
for cyx in test:
print(cyx)
也可以用while循环实现
test = '获取当前字符串由几个字符组成'
index = 0
while index < len(test):
cyx = test[index]
print(cyx)
index +=1
for 循环也支持break和continue
for cyx in test:
print(cyx)
break
for cyx in test:
continue
print(cyx)
11个必须记住:join split find strip upper lower replace len for 循环 索引 切片
字符串在内存中一旦创建就不可修改,如果要修改或拼接,那在内存中会重新创建一个新的字符串(所有语言都是这样的)
-range帮助创建连续数字或通过设置步长来创建不连续的的数字
在python2中立即创建100个数,但在python3中不会立即创建,只有在对其进行for循环时才会创建,属于一个优化机制
v = range(100)
print(v)
v = range(100)
for item in v:
print(item)
v = range(0, 100, 5)
for item in v:
print(item)
5是步长
e.g.将文字对应的索引打印出来
test = input('>>>')
for item in range(0, len(test)):
print(item, test[item])
练习
1、执行 Python 脚本的两种方式
python 解释器+文件名
pyhton 解释器直接运行
./1.py(linux系统,赋予可执行权限)
2、简述位、字节的关系
1字节=8位
计算机处理时以一个字节为单位,存储时以位为单位
3、简述 ascii、unicode、utf-‐8、gbk 的关系
ascii 8位
Unicode 至少16位
utf8 能用多少位就用多少位
gbk 适用于中文
4、请写出 “李杰” 分别用 utf-‐8 和 gbk 编码所占的位数
6字节
4字节
python 3计算字符 len(‘理解’)=2 for 循环时输出的时两个字符
python2计算字节 len(‘理解’)= 6 for循环时输出的是六个字节
5、Pyhton 单行注释和多行注释分别用什么?
#
""" """(推荐用
''' '''
6、声明变量注意事项有那些?
数字、字母、下划线
不能数字开头
一定不能跟关键字重复
推荐不能用python内置的东西,因为一用会把原来的内置东西覆盖掉
7、如有变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示?
n1 = 5
v = n1.bit_length()
print(v)
8、布尔值分别有什么?
True False(python里首字母要大写)
true false(javascript里首字母小写)
''空字符串是假
' '只要字符串里有东西即为真
0假
其他真
-int 字符串转换为数字
-str 可以实现数字转换成字符串
-bool 数字或 字符串转换为布尔值
总结:新值=int/str/bool(...)
9、阅读代码,请写出执行结果
a = "alex"
b = a.capitalize()
print(a)
print(b)
请写出输出结果:
alex Alex
10、写代码,有如下变量,请按照要求实现每个功能
name = " aleX"
a. 移除 name 变量对应的值两边的空格,并输入移除后的内容
name = " aleX"
v = name.strip()
print(v)
b. 判断 name 变量对应的值是否以 "al" 开头,并输出结果
name = " aleX"
v = name.startswith('al')
print(v)
c. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
name = " aleX"
v = name.endswith('X')
print(v)
d. 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
name = " aleX"
v = name.replace('l', 'p')
print(v)
e. 将 name 变量对应的值根据 “l” 分割,并输出结果。
name = " aleX"
v = name.partition('l')
print(v)
name = " aleX"
v = name.split('l')
print(v)
f. 请问,上一题 e 分割之后得到值是什么类型(可选)?
带[]是列表
g. 将 name 变量对应的值变大写,并输出结果
name = " aleX"
v = name.upper()
print(v)
h. 将 name 变量对应的值变小写,并输出结果
name = " aleX"
v = name.lower()
print(v)
name = " aleX"
v = name.casefold()
print(v)
i. 请输出 name 变量对应的值的第 2 个字符?
name = " aleX"
v = name[1]
print(v)
j. 请输出 name 变量对应的值的前 3 个字符?
name = " aleX"
v = name.rstrip('eX')
print(v)
k. 请输出 name 变量对应的值的后 2 个字符?
name = " aleX"
v = name.lstrip(' al')
print(v)
l. 请输出 name 变量对应的值中 “e” 所在索引位置?
name = " aleX"
for item in range(0, len(name)):
if name[item] == 'e':
print(item)
else:
pass
m. 获取子序列,仅不包含最后一个字符。如: oldboy 则获取 oldbo; root 则获取 roo
test = input('>>>')
v = test[0: -1]
print(v)
11、字符串是否可迭代对象?如可以请使用 for 循环每一个元素?
是
name = " aleX"
for item in name:
print(item)
可迭代对象=可以被for进行循环获取
类、类型:str int bool
对象:根据str类型创建一个对象,对象赋值给s1变量
s1 = 'alex'
12、请用代码实现:
a. 利用下划线将列表的每一个元素拼接成字符串,li = "alexericrain"
b. 利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain'](可选)
li = 'alexericrain'
v = '_'.join(li)
print(v)
li = ['alex', 'eric', 'rain']
v = '_'.join(li)
print(v)
13、Python2 中的 range 和 Python3 中的 range 的区别?
在python2中range直接创建数放在内存里,xrange可以for循环一个创建时一个
但在python3中不会立即创建,只有在对其进行for循环时才会创建
for i in range(100, 0, -1) 从大到小创建
14、实现一个整数加法计算器:
如:
content = input('请输入内容:') # 如: 5+9 或5+ 9或 5 + 9
content = input('请输入内容:')
v1, v2 = content.split('+')
v1 = int(v1)
v2 = int(v2)
v = v1 + v2
print(v)
15、计算用户输入的内容中有几个十进制小数?几个字母?
如:
content = input('请输入内容:') # 如:asduiaf878123jkjsfd-‐213928
b = input('请输入内容')
count = 0
for item in b:
if item.isalpha() == True or item.isdecimal() == True:
count =count + 1
else:
count = count
print(count)
pycharm里code 栏里有一个reformat code可以纠正格式
16、简述 int 和 9 等数字 以及 str 和 "xxoo" 等字符串的关系?
int str属于类
9 "xxoo" 属于对象
17、制作趣味模板程序
需求:等待用户输入名字、地点、爱好,根据用户的名字和爱好进行任意现实
如:敬爱可亲的 xxx,最喜欢在 xxx 地方干 xxx
name = input('用户名')
place = input('地点')
hobby = input('爱好')
test = '敬爱可亲的{0},最喜欢在{1}干{2}'
v = test.format(name, place, hobby)
print(v)
18.制作随机验证码,不区分大小写
流程:
-‐ 用户执行程序
-‐ 给用户显示需要输入的验证码
-‐ 用户输入的值
用户输入的值和显示的值相同时显示正确信息;否则继续生成随机验证码继续等待用户输入生成随机验证码代码示例:
def check_code():
import random
checkcode = ''
for i in range(4):
current = random.randrange(0,4)
if current != i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0,9)
checkcode += str(temp)
return checkcode
count = 0
while count == count:
code = check_code()
print(code)
user = input('请输入验证码:')
v = user.upper()
if v == code:
print('欢迎进入')
break
else:
count = count + 1
def check_code():
import random
checkcode = ''
for i in range(4):
current = random.randrange(0,4)
if current != i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0,9)
checkcode += str(temp)
return checkcode
while True:
code = check_code()
print(code)
user = input('请输入验证码:')
v = user.upper()
if v == code:
print('欢迎进入')
break
19、开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:
如 "苍老师" "东京热",则将内容替换为 ***
content = input('>>>')
v = content.replace('苍老师', '***')
v2 = v.replace('东京热', '***')
print(v2)
20、制作表格
循环提示用户输入:用户名、密码、邮箱 (要求用户输入的长度不超过 20 个字符,如果超过则只有前 20 个字符有效)如果用户输入 q 或 Q 表示不再继续输入,将用户输入的内容以表格形式打印
s = ''
while True:
v1 = input('用户名:')
if v1 == 'q' or v1 == 'Q':
break
v2 = input('密码:')
if v2 == 'q' or v2 =='Q':
break
v3 = input('邮箱:')
if v3 == 'q' or v3 == 'Q':
break
if len(v1) > 20:
v1 = v1[0:20]
if len(v2) > 20:
v1 = v1[0:20]
if len(v3) > 20:
v1 = v1[0:20]
template = '{0}\t{1}\t{2}\n'
v = template.format(v1, v2, v3)
s =s + v
print(s.expandtabs(20))