初学Python 学习笔记 完整版

#!/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
'''

你可能感兴趣的:(Python)