编码补充:utf8用3个字节表示中文,GBK用两个字节表示中文,两者之间的转换要借助Unicode(全球通用,即utf8先转换为Unicode,再由Unicode转换为GBK)

 

如果将字符串转换为数字:   new_inp = int(inp)

 

while也可以和else连用

count = 0
while count<10:
    print(count)
    count = count + 1
else:
    print("end")

 

continue与break用法(和while连用时遇到continue,终止当前循环,其下面的内部代码块不执行,跳回循环处执行下一次循环)

count = 0
while count<10:
    if count == 7:
        count = count + 1
        continue #break终止以后的所有循环,调到下一个代码
    print(count)
    count = count + 1
print("end")#输出的结果没有7

 练习:用户登录(3次重复机会)

count = 0
while count <3:
    user = input('<<<<')
    pwd = input('<<<<')
    if user == 'alex' and pwd == '123123':
        print('欢迎登录')
        break
    else:
        print('用户名或者密码错误')
    count = count + 1
print('<<<<')

 

python开发IDE:pycharm、eclipse(推荐用pycharm专业版,不要汉化)

 

基本运算符:

1)算数运算符: +  -  *  /  **  %  //          #得到数

2)比较运算符:==(等于)   !=(不等于)  <>(不等于)  >  <  >=  <=       #得到布尔值

3)赋值运算符:          #得到数

=    简单的赋值运算符     c=a + b     将a+b的运算结果赋值为c

+=  加法赋值运算符   c += a      等效于c=c+a

-=   减法赋值运算符   c -= a       等效于c=c-a

*=   乘法赋值运算符   同上

/=    除法赋值运算符   同上

%=  取模赋值运算符   c %= a     等效于c=c%a

**=   幂赋值运算符      同上

//=    取整除赋值运算符   同上

4)逻辑运算符:        #得到布尔值

and    布尔“与”,如果x为false,x and y返回false,否则它返回y的计算结果(布尔值:true为真,false为假:在if判断的结果里,true表示符合,false表示不符合)

or       布尔“或”,如果x为true,x and y返回false,否则它返回y的计算结果

not      布尔“非”,如果x为false,返回true;如果x为true,返回false

注意:v = user == 'alex' and (pwd == "123" or 1 == 1)           #通常情况从左往右判断,但括号内先执行

v = user == 'alex' and pwd == "123" or 1 == 2                   #and与or没有优先级,从前到后执行。如果and前部为false,直接输出false,如果and前部是true则看and后部的条件。如果or前部为true,直接输出true,如果or前部是false则看or后部的条件。

5)成员运算:        #得到布尔值

in   如果在指定的序列中找到值返回true,否则返回false

not in    如果在指定的序列中没有找到值返回true,否则返回false

字符串的in与not in(子序列):必须是相邻的字符

name = "雷雨田"
#"雷雨田"字符串;"雷"字符;"雨田"子字符串或子序列
#选中并Ctrl+?,全部变注释
if "" in name:
    print('OK')
else:
    print('Error')

 

基本数据类型(祥讲)及其魔法变形

1)数字(英文int):

python3里面不管多长的数字都是int类型

python2里面数字分为整形(int)和长整型(long)

数字的所有功能都放在int里面

——int:功能1:,将字符串转换为数字;

a = "123"
b = int (a)
print(type(b),b)

          功能2:将2(或8或16)进制转换为10进制

num = "b"
v = int(num,base=16)
print(v)

          功能3:用几位2进制表示

age = 5
r = age.bit_length()
print(r)

 

2)字符串(str):

          功能见代码

test = "alEx"
# v1 = test.capitalize()#首字母大写,其他小写
# print(v1)

# v2 = test.casefold()#所有变小写,比lower更牛逼,很多未知的相对应变小写
# print(v2)
# v3 = test.lower()#变小写
# print(v3)

# v4 = test.center(20,"中")#设置宽度,并将内容居中;20代指总长度;$空白位置填充,只能填一个,可不带
# print(v4)

# v5 = test.count("lE")#找字符串里有几个指定的子序列,可以设置开始查找和结束查找的位置
# print(v5)

# v6 = test.endswith("E",1,3)#以什么结尾,输出布尔值,同样可以定义起始和结束位
# print(v6)

# v7 = test.find("E",1,4)#从开始往后找,找到第一个后,获取其前的未知位数
# print(v7)
# v8 = test.index("E")#功能与find相似,区别在于找不到就报错,可忽略此
# print(v8)

# test1 = 'I am {name}, age{a}'
# print(test1)
# v1 = test1.format(name='alex',a=19)#格式化,将一个字符串中的占位符替换成为指定的值
# v2 = test1.format_map({"name":'alex',"a":19})#相同功能,格式不一样
# print(v1)
# print(v2)
# test1 = 'I am {0}, age{1}'
# print(test1)
# v = test1.format('alex',19)#格式化,将一个字符串中的占位符替换成为指定的值,另一种格式
# print(v)

test2 =  "xsdjf123_?"
v = test2.isalnum()#字符串是否只包含 字母和数字
print(v)

 

# test3 = "username\temail\tpassword\n111\t111@.com\t123\n222\t222@.com\t123\n333\t333@.com\t123"
# v =test3.expandtabs(20)#遇到\就以前面本身加上后面填补空白组成20个为一组;\后面的忽略;\t表示制表符;\n换行
# print(v)

test4 = "sdfff几节课67\n"
# v = test4.isalpha()#是否只有字母,中文也算字母
# print(v)
# v1 = test4.isdecimal()#判定当前输入是否为数字,最常用
# v2 = test4.isdigit()#判定当前输入是否为数字,功能更强大
# v3 = test4.isnumeric()#判断是否为数字,可以判断中文,功能最强大
# print(v1,v2,v3)
# v4 = test4.isidentifier()#判定是否为标识符(标识符:字母数字下划线,包括print等)
# print(v4)
# v5 = test4.isprintable()#判断是否存在不可显示的字符,例如制表符,换行符等
# print(v5)
# v6 = test4.isspace()#判断是否全为空格,即空字符串(制表符也算空字符串)
# print(v6)
# v7 = test4.title()#将字符串转换为标题形式
# print(v7)
# v8 = test4.istitle()#判断是否为标题形式
# print(v8)

# test5 = "你是风儿我是沙"
# print(test5)
# t = '$'
# v = t.join(test5)#将字符串中的每一个元素按照指定分隔符进行拼接,重点记住!
# print(v)

# test6 = "alex"
# v1 = test6.ljust(20,'*')#字放左边,其余用指定符填满,与center类似
# v2 = test6.rjust(20,'*')#字放右边
# v3 = test6.zfill(20)#不足的默认用0填充在前面,一般用上面的
# print(v1,v2,v3)

# test6 = "ALex"
# v = test6.lower()#全变小写;(upper全部变为大写)
# print(v)

# test6 = "eALex"
# v = test6.strip('9eAL')#去除左右空白和\t及\n及括号内指定的字符(指定字符要与开头或结尾的子序列一样,优先最多匹配);lstrip去左边的...
# print(v)

# test6 = "aeiou"
# test7 = "12345"
# v = "sfddijidnvsiiwiefnnvnvjdkdejffj"
# m = str.maketrans(test6,test7)#制作替换的对应关系
# new_v = v.translate(m)#进行替换
# print(new_v)

# test6 = "sfddijidnvsiiwiefnnvnvjdkdejffj"
# v1 = test6.partition('d')#按照指定的分隔符将其分开,只能分成3个,从左开始
# v2 = test6.rpartition('f')#从右开始
# v3 = test6.split('j',3)#也是分割功能,不包括分隔符本身,能指定分几次(参数),从左开始
# v4 = test6.rsplit('j',3)#从右开始     (正则表达式是上述功能的合集)
# print(v1,v2,v3,v4)

# test6 = "sfddijidnv\nsiiwiefn\nnvnvjdkdejffj"
# v = test6.splitlines(True)#只能根据制表符分割,False不保留制表符,True保留
# print(v)

# test6 = "sfddijidnv\nsiiwiefn\nnvnvjdkdejffj"
# v = test6.startswith('s')#判断是否以什么开头;endswith结尾
# print(v)

test6 = "sfddiJJdnv\nsiiwiefn\nnvnvjdkdejffj"
v = test6.swapcase()#大小写互换
print(v)

 重点记:join  split  find  strip  upper  lower  replace  索引  切片  for  len

记住:字符串一旦创建就不可修改;一旦修改或者拼接,都会造成重新生成字符串(所有语言均如此)

# test6 = "sfddiJJdnv\nsiiwiefn\nnvnvjdkdejffj"
# v = test6[2]#索引,下标,获取字符串中的某一个字符,第一位是0,只能取一个
# t = test6[1:-1]#索引范围(-1表示末尾)即切片
# print(v,t)

# test6 = "v\nsii"
# v = len(test6)#有几个字符组成
# print(v)

# li = [11,22,33,44,"qwert"]#列表
# v = len(li)#在列表中表示个数
# print(v)

# test6 = "sfddiJJdnv"
# index = 0
# while index < len(test6):
#     print(test6[index])
#     index += 1
# print("==========")
#等同于如下
# test6 = "sfddiJJdnv"
# for qwe in test6:#for循环,依次输出字符,其他数据类型也能用
#     print(qwe)

# test6 = "sfddiJJdnv"
# v = test6.replace("d","niubi",3)#替换,可以指定替换的次数
# print(v)
# test6 = "法国红酒不能那么那么过分"
# for v in test6:#注意顿号不可去掉
#     continue#continue可以用在for语句
#     print(v)

# v = range(10,100,5)#帮助创建连续的数字,可以设置开始结束和步长;python2里面立即创建,python3循环时才一个一个创建(=pytho2的xrange)
# for v1 in v:
#     print(v1)

test6 = input(">>>")#练习
for item in range(0,len(test6)):
    print(item,test6[item])

某一类型的所有魔法都在str里面

 单行注释用#,多行注释用"""或者'''

可迭代对象:可以被for进行循环获取

 类与对象:基本数据类型各自为一类,如str;对象:根据某一个类型创建的项目为对象,如“asd”

 

 3)布尔值(bool)

bool(.......)

判断:None  ""  ()  []  {}  0   ==>False 

 

4)列表(list):中括号括起来,中间以逗号分割每一个元素,元素可以是数字或字符串或列表(即可以嵌套列表)或布尔值

列表是一个集合,内部放置任何东西

列表元素在内存内可以被修改,并且有顺序

None在python中是一个特殊值,表示空值

# li = [1,"qwe","dfg",223,456,23323,[1,234,"fgh",["dfg"]],"oi"]
# print(li[6])#索引
# print(li[0:6])#切片,切片结果也是列表
# for item in li:
#     print(item)#列表也可以循环

# li = [1,"qwe","dfg",223,456,23323,[1,234,"fgh",["dfg"]],"oi"]
# li[1] = 10#索引和切片方式均可修改
# print(li)

# li = [1,"qwe","dfg",223,456,23323,[1,234,"fgh",["dfg"]],"oi"]
# del li[2]
# print(li)#索引和切片方式均可删除

# li = [1,"qwe","dfg",223,456,23323,[1,234,"fgh",["dfg"]],"oi"]
# v = 223 in li#判断元素是不是在列表中,必须是元素整体
# print(v)

# li = [1,"qwe","dfg",223,456,23323,[1,234,"fgh",["dfg"]],"oi"]
# print(li[6][2][1])#可以往元素中的列表继续找

# li = "1qwedfg2356"
# new_li = list(li)#把其他类型转换为列表(原类型必须可以for循环才可转换)
# print(new_li)

# li = [1,"qwe","dfg",223,456,23323,[1,234,"fgh",["dfg"]],"oi"]
# r = str(li)#不会去掉列表的括号,只会整体加引号
# print(r)

# li = [1,"qwe","dfg",223,456,23323,"oi"]#想把列表变字符串:元素有字符串又有数字,用for循环
# s = ""
# for r in li:
#     s = s + str(r)
# print(s)

# li = ["qwe","dfg","oi"]#想把列表变字符串:元素只有字符串,用join
# r = "".join(li)
# print(r)

# li = ["qwe","dfg","oi"]
# li.append(5)
# li.append("led")#往列表追加元素,整体加入,与extend区别
# print(li)

# li = ["qwe","dfg","oi"]
# li.clear()#清空列表
# print(li)

# li = ["qwe","dfg","oi"]
# v = li.copy()#浅拷贝
# print(v)

# li = ["qwe","dfg","oi",22,22]
# v = li.count(22)#计算元素出现的次数
# print(v)

# li = ["qwe","dfg","oi"]
# li.extend("牛逼")#执行for循环后加入对象
# print(li)

# li = ["qwe","dfg","oi",11,22,33,22,44]
# v = li.index(22)#根据值获取当前索引位置(左边优先)
# print(v)

# li = ["qwe","dfg","oi"]
# li.insert(1,"牛逼")#在指定索引位置插入元素
# print(li)

# li = ["qwe","dfg","oi",11,22,33,22,44]
# v = li.pop(0)#删除某个指定索引的值,并获取删除的值;没有指定索引默认为最后一个
# print(li)
# print(v)

# li = ["qwe","dfg","oi",11,22,33,22,44]
# li.remove(22)#删除列表中的指定值,左边优先(ps:pop del都是删除)
# print(li)

# li = ["qwe","dfg","oi",11,22,33,22,44]
# li.reverse()#将当前列表进行翻转
# print(li)

# li = [11,22,33,22,44]
# li.sort()#列表的排序
# print(li)

# li = [11,22,33,22,44]
# li.sort(reverse=True)#排反序
# print(li)

 

5)元组(tuple)

对列表的二次加工,元组的一级元素不可被修改、不能被增加或者删除,二级元素等可以被修改;属于可迭代对象,能进行for循环

不想让其被修改的就设为元组

# tu = (11,22,33,22,44,"alex",[123],(123),True)#元组可以包括任何类型
# #一般写元组时,推荐最后一个元素后面加上逗号,区别函数参数
# v = tu[1:-1]#有序,可索引,切片,切片后仍是元组
# print(v)
# for item in tu:#可for循环,属于可迭代对象
#     print(item)

# s = "123,qwe"
# li = [123,"qwe"]
# v = tuple(s)#可转换,执行for循环;元组转换为字符串的方法也是join和for循环
# print(v)
# g = tuple(li)#列表和元组可循环
# print(g)

# tu = (11,22,33,22,44,"alex",[(12,3)],(123),True,)
# tu[6][0] = 120#注意是一级元组才不可修改、增删( tu[6][0][0] = 120不可更改,因为其是元组的一级元素)
# print(tu)

#tu.count(22)获取指定元素在元组中出现的次数
#tu.index(22) 某元素索引位置,左边优先

 

6)字典(dict)

字典是无序的

重点记住keys()   values()    items()     update     

 

# info = {"k1":"v1","k2":"v2"}#上述含2个键值对,k1、k2为key,v1、v2为value

# info = {"k1":[123],"k2":(123,),"k3":123,"k4":"123","k5":True}#value可以是任何数据类型;列表、字典不能作为key,2个相同的key只能取一个value
# print(info)

# info = {"k1":[123,234],"k2":(123,34,),"k3":123,"k4":"123","k5":True}
# v = info["k2"][0]#可以索引查找,输入要查找的key;不能切片寻找
# del info["k1"][0]#可以索引删除
# print(v,info)

# info = {"k1":[123,234],"k2":(123,34,),"k3":123,"k4":"123","k5":True}
# for k,v in info.items():#字典可以for循环,默认进行keys循环,可以设置values循环和items循环
#     print(k,v)

#字典还有clear  copy    等功能

# v = dict.fromkeys(["k1",111,(12)],[123,"asd"])#根据序列,第一个括号内每一个都表示一个key,创建字典,并指定统一的值
# print(v)

# info = {"k1":[123,234],"k2":(123,34,),"k3":123,"k4":"123","k5":True}
# v = info.get("k33","不存在")#根据key获取对应的值,不存在时可以指定默认值
# print(v)

# info = {"k1":[123,234],"k2":(123,34,),"k3":123,"k4":"123","k5":True}
# v = info.pop("k6","不存在")#指定某一key删除,并可以获取值,删除失败时可以输出设置的值
# print(info,v)

# info = {"k1":[123,234],"k2":(123,34,),"k3":123,"k4":"123","k5":True}
# v = info.popitem()#随机删,并获取删除值
# print(info,v)

# info = {"k1":[123,234],"k2":(123,34,),"k3":123,"k4":"123","k5":True}
# v = info.setdefault('k6',123)#设置值:已存在,不设置,获取当前key对应的值;不存在,设置,获取设置的值
# print(info,v)

# info = {"k1":[123,234],"k2":(123,34,),"k3":123,"k4":"123","k5":True}
# info.update({"k2":"你好",6:"hello"})#或者info.update(k2="你好",k6='hello')       更新字典,存在key的修改值,不存在的key增添进去
# print(info)

# info = {"k1":[123,234],"k2":(123,34,),"k3":123,"k4":"123","k5":True}
# v = 123 in info.values()#判断值或key是否在字典里面
# print(v)

 

posted on 2020-12-23 22:30  yutianray  阅读(137)  评论(0)    收藏  举报