#!/usr/bin/evn python # 告诉解释器用什么方式来执行这段代码 # -*- coding:utf-8 -*- # 字符编码 在python3中可以不用写 为了保险还是写上 # Author:Li ShiLin # 写代码的人是谁 # 变量 python在定义变量的时候不需要 定义数据类型 # name = "Li ShiLin" # print("My name is",name) ''' 变量定义规则: 1.变量名只能以下划线,数字,字母组合形成 2.变量名的一个字符不能以数字开头 3.不能使用关键字:and、as、assert、break、continue、del、def、elif、except、else、exec、finally for、from、global、if、import、in、is、lambda、not、or、pass、print、raise、return、try、while、 with、yield 常量:python中没有常量的概念 所以定义一个常量的时候需要全大写 eg: PIE = "" ''' # import getpass #(引入加密密码文件包) # 调用的方法 (但是只能再命令行中才能实现) # password =getpass.getpass("password:") # 用户输入 (交互) ''' print("输入您的名字!") UserName = input("UserName:") print("输入你的登陆密码!") PassWord = input("PassWord:") print(UserName,PassWord) ''' # 格式化输出 #错误提示 # IndentationError: unexpected indent (python中一定要注意缩进格式 不然程序会报错) # name = input("name:") # age = int(input("age:")) # job = input("job:") # salary = input("salary:") # # # 数据类型强转 age = int(input("age:")) # # print(type(age)) 打印数据类型 # # %s(表示字符类型) %d(表示整数类型) %f(表示浮点类型) # info = ''' # ————————info of %s —————— # Name:%s # Age:%d # Job:%s # Salary:%s # ————————this is Ok —————— # '''%(name,name,age,job,salary) # # 不能少任何一个变量否则报错 # # 格式化输出的方法 # # print(info) # # # # 第二种格式化输出 这种方式name只用写一次 # info2 = ''' # ————————info of {_name} —————— # Name:{_name} # Age:{_age} # Job:{_job} # Salary:{_salary} # ————————this is Ok —————— # '''.format(_name=name, # _age=age, # _job=job, # _salary=salary ) # # print(info2) # 逻辑判断 # 模拟数据库中的储存信息 # _username = "zhangsan" # _password = "a123" # # username = input("username:") # password = input("password:") # if 逻辑判断 if elif else # if _username == username and _password == password : # print("Welcome user {name} longin...".format(name=username)) # else: # print("Invalid username or password!") # while 循环(三次机会猜年龄大小) # age_of_oldboy = 56 # count = 0 # while True: # if count == 3: # print("三次都没有猜对 不用猜了...") # break # guess_age = int(input("guess_age:")) # if guess_age == age_of_oldboy : # print("恭喜你答对了....!") # break # elif guess_age > age_of_oldboy: # print("我有那么老吗?") # else: # print("呵呵 我可没有那么年轻哦......") # # count +=1 # while 优化之后的代码 # age_of_oldboy = 56 # count = 0 # while count < 3: # guess_age = int(input("guess_age:")) # if guess_age == age_of_oldboy : # print("恭喜你答对了....!") # break # elif guess_age > age_of_oldboy: # print("我有那么老吗?") # else: # print("呵呵 我可没有那么年轻哦......") # count +=1 # else: # print("三次都没有猜对 不用猜了...") # for循环语句的用法(for循环 i 代表的是一个临时变量 range表示的是循环次数) # for i in range(3) : # guess_age = int(input("guess_age:")) # if guess_age == age_of_oldboy : # print("恭喜你答对了.....!") # break # elif guess_age > age_of_oldboy : # print("不好意思我还没有那么Old!") # else: # print("我要是有那么年轻就好了!") # else: # print("不好意思机会已经用完了") # for循环遍历是条件是(for i in range(0,10,2):)的方式加进去的 相当于java的(for(i;i%2;i++)) # for i in range(0,10,2): # print("logle",i) # 模块 import 导入模块 相当于java的导包 # import sys # print(sys.path) #打印环境变量 # print(sys.argv) #打印绝对路径 # import os #python中的另外一个模块 一般与系统交互 # cmd_res = os.system("dir") #打印出系统文件 只执行 但是不保存结果 # print("-->",cmd_res) #得到的是执行命令后的状态码 0再Windows系统下表示执行成功 其他表示不成功 # cmd_type = os.popen("dir") #得到的是计算机内存的对象地址 # cmd_type = os.popen("dir").read() #得到的是结果 # print(cmd_type) # #在当前路径下创建一个新的目录 # os.mkdir("Practice") # 调用第三方库 (相当于Java调用其他类) #import Practice # 简述Python的运行过程 # 在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。 # 我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。 # 当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。 # 当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。 # 所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。 # 数据类型 # 整形 再python3中没有整形和长整形的区别 都是整数型int 不用考虑取值范围 # org = type(2**32) # type()查看数据类型 2**32 表示2的32次方 # print(org) # # # 浮点类型 小数 float # maeary = 3.14125 # print(maeary) # # # 布尔值True 和 False # # # 字符串 string # strs = "zhangsanlisi" # print(strs) # # # 三元运算 # a,b,c = 1,3,5 # d = a if a > b else c #如果a>b那么就输出a 否则就输出C # print(d) # bytes 数据类型 表示的是二进制 二进制和字符串之间是可以互相转换的 # 字符串转为二进制用的是encode 而二进制转字符串则是decode # msg = "我爱北京天安门" # # print(msg.encode(encoding="utf-8")) #转为二进制 # print(msg.encode("utf-8").decode(encoding="utf-8")) #转为正常格式 uft-8再python3中可以不用写 但是最好还是写上 # 列表 相当于java中的数组 取值的时候都是顾头不顾尾 所以取中间值的时候要加一位 # names = ["张三","李斯","王二蛋","丑小鸭","李晨","张三"] # 取出全部 (查找) # print(names) # 按列表的下标进行取值 下标从0开始 # print(names[0],names[4]) #切片的方式取值 从什么位置取到什么位置 # print(names[1:3]) # 取最后一个值 # print(names[-1]) # 取后几个值 取几个 就是几个 # print("取后值",names[-3:]) # 取前面几个值 一样取几个就填几个 # print("取前面的值",names[:3]) # 插入数据(增加) # names.append("张三丰") # print("插入数据",names) # 插入指定的位置 # names.insert(2,"张三全") # print("指定插入",names) # 修改数据(修改) # names[2]="Aone" # print(names) # 删除 # 找数据名删除 # names.remove("张三") #指定位置(下标)进行删除 # del names[3] # 默认是删除最后一位 写上下标等于 del names[3] = names.pop(3) # names.pop() # print(names) # 得到数据的下标 # print(names.index("李晨")) # 根据得到的下标把数据取出 # print( names[names.index("李晨")]) # 统计数据中相同的个数 # count = names.count("张三") # print("相同的数据有",count,"个") #清空列表数据 # names.clear() # 使列表的数据全部反转 # names.reverse(); #排序 按照AIICK码进行的排序 # names.sort() # 合并两个列表 # names2 = [1,2,3,4,5] # 合并两个列表 # names.extend(names2) # 合并之后names2就应该不在存在 所以手动将names2删除 # del names2 # print(names2) names2不再存在 # print(names) #复制数据列表 (拷贝的是列表的内存地址) # names3 = names.copy() # print(names3) # 多重列表组合 相当于java的二维数组或者多维数组用法都相似 # names4 = [3,4,5,6,[7,8,9],10,11] # names4[4][1] = 11 #在这里 copy一份数据 copy这个方法只会将修改过后的数据复制一份(程序从上往下依次执行)如果要复制原始 # 数据怎需要用外包copy # import copy # cops = names4.copy() # cops2 = copy.deepcopy(names4) # print("深度复制",cops2) # 取值 # print(names4[4][0]) # print(cops) # for循环打印列表 # frommart = ["张三","李斯","王二蛋",["Axis","Tom","Tone"],"丑小鸭","李晨","张三"] # 这样方式 从0开始到最后一个结束 以偶数为标 跳着打印 # print(frommart[0:-1:2]) #循环打印出列表的数据 # for i in frommart: # print(i) # 元组 # 元组列表和列表差不多都是存数据 但是元组列表只能查 不能删 不能改 只有两个方法一个是count,一个是index names = ("张三","李氏","王欢") print(names.count("张三")) #查询有几个想通过的数据 print(names.index("李氏")) #查询所在的索引 print(names[names.index("李氏")]) #取出数据 ''' 字符判断 str为字符串 str.isalnum() 所有字符都是数字或者字母 str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 str.islower() 所有字符都是小写 str.isupper() 所有字符都是大写 str.istitle() 所有单词都是首字母大写,像标题 str.isspace() 所有字符都是空白字符、\t、\n、\r '''