别人写好了的程序,可下载或直接调用,分为:

标准库(不用安装,直接可以用的 像getpass,sys,os)

第三方库(必须安装才可以用)

PS: python的标准库一般存在 lib (site-packages的上一层);的第三方库一般存在 site-packages

sys:

import sysprint(sys.path)  # " . " : expand methods of XXXXXXXprint(sys.argv)   # pycharm里是绝对路径,cmd里相对路径 (其实就是打印的相对路径,不会打印绝对路径)
# 为什么pychram是绝对路径? 因为调用的时候写的这个脚本名字的路径就是绝对路径,pycharm在自己调用的时候写的就是绝对路径print(sys.argv[2])  # 取第二个参数   

os:

import os
# 可以从python中调用shell的命令
# 或者在系统中创建一个文件,目录
# 查看当前目录下有多少文件,查看文件的大小

cmd_res = os.system("dir")
# 只执行命令,只输出在屏幕上,不保存结果

cmd_res1 = os.popen("dir")
# 打印的是一个内存的对象地址
cmd_res1 = os.popen("dir").read()
# 执行命令,然后结果存到了一个内存里临时的地方,必须用read方法去取print("-->",cmd_res1)     # 0 means success# 在当前目录下,创建一个目录
os.mkdir("new_dir")   # shows on the left

第三方库(login.py):

# 文件和login在同一个目录下的时候
import login# 文件和login不在同一个目录下,copy login.py到site-package下去

什么是PYC?

python程序运行时,编译的结果是保存在位于内存中的PyCodeObject中;
     python程序运行结束时,python解释器将PyCodeObject写回到pyc文件中
     python程序第二次运行的时候,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程

所以,pyc文件其实是PyCodeObject的一种持久化保存方法

Q:pyc保存了,但是源代码重新被改了怎么办?

A:  python检测文件,再检测时间,然后看pyc的更新时间和源代码的更新时间哪个最新.

数据类型:

1.数字

int              整型(数)
long           长整型 python3没有这个
float           浮点数
                 浮点不是小数
                 浮点的表示形式是小数
                 小数不只包括浮点 forget it anyway
complex      复数

2.布尔值

真 or 假
1 or 0

3.字符串

"hello world”

4.列表

name = ['momo','shirley','curry']
# or
name = list( ['momo','shirley','curry'])

5.元组

   和列表差不多,但是不能修改,只能读

ages = (1,2,3,4)
# or
ages = tuple((1,2,3,4))

6.字典

    字典是无序的

person = {"name":{ "momo"}, "age": {"22"}}
# or
person = dict({"name":{ "momo"}, "age": {"22"}})

数据运算:

算术运算:

//           取整数
              9/2 输出结果4
              9.0/2/0 输出结果4.0
%           取模 (返回除法的余数)
              10%2 输出结果0 11%2 输出结果1
+
-
*
/
**           幂

比较运算:

==          等于
!=         不等于
<>          不等于
>
<
>=
<=

赋值运算:
=                简单的赋值运算符
+=              加法赋值运算符 c+=a c=c+a
-=               减法赋值运算符 c-=a c=c-a
*=              乘法赋值运算符
/=               除法赋值运算符
%=             取模赋值运算符
**=            幂赋值运算符
//=              取整除赋值运算符

逻辑运算:
             and
             or
             not

成员运算:
             in
             not in

身份运算:
             is
             is not

位运算:(practice)
&         按位与运算符 a & b 12 = 0000 1100
|          按位或运算符 a | b 61 = 0011 1101
^         按位异或运算符 a ^ b 49 = 0011 0001
~         按取位反运算符 a ~ b - -61 = 1100 0011
<<       左移动运算符 a << 2 240 = 1111 0000
>>       右移动运算符 a >> 2 15 = 0000 1111

eg.

a = 60       # 60 = 0011 1100
b = 13       # 13 = 0000 1101

各种操作!!!怎么操作呢?

 1.列表操作:

          列表是有序的,可做增删减查,也可以多层嵌插列表、元组、字典任何东西

names = ["ZhangYang", "GuYun","XiangPeng","XuLiangChen"] # define a list# list通过下标找元素
names[0]      # 正数第一个元素,下标从零开始往右走
name[-1]      # 倒数第一个元素

loop for a list

>>>for i in names:print(i)
"ZhangYang"
"GuYun"
"XiangPeng"
"XuLiangChen"

View Code

切片

print(names[-1])   # unknown length, 取最后一个元素
print(names[0],names[2])   #  取第一项和第三项
print(names[1:3])   # 顾头不顾尾哈哈哈, 从1-2
print(names[0:3])    # 从0-2 和 print(names[:3])
print(names[-2:])   # unknown length, 取最后两项
print(names[:])  # 从头到尾
print(names[::2])    # 从头到尾,间隔2
print(names[0:-1:2])  # 从0到倒数第二,间隔2

View Code

添加

names.append("LeiHaiDong")   # adding more names  

View Code

插入

# 插入准确的位置,但是不能同时插两个
names.insert(1,"ChenRongHua")   # 插在原本第一项的前面
names.insert(3,"XinZhiYu")        # 插在原本第三项的前面

View Code

修改

# 修改替换
names[2] = "XieDi"  # 把第三项幻城xiedi

View Code

删除

names.remove("ChenRongHua")
del names[1]
names.pop()     # delete the last one if no index input#del names[1] = names.pop(1)

View Code

统计

print(names.count("ChenRongHua"))  # names counting from the list

View Code

排序和翻转

names.reverse()  # reverse the list
names.sort() #  sort in letters & if initials are numbers or notations, then notations-->umbers-->letters

View Code

找下标

names = ["ZhangYang", "GuYun","XiangPeng","XuLiangChen"]
print(names.index("XieDi"))   # 但只能找到第一个xiedi的下标

View Code

copy!!!!来了!! IMPORTANT!

light copy:

names = ["4ZhangYang", "#!GuYun","xXiangPeng",["alex","jack"],"ChenRongHua","XuLiangChen"]
name2 = names.copy()   # 浅copy,只copy第一层,所以name2 之后no change
print(names)
print(name2)names[2] = "向鹏"   # name2 no change
names[3][0] = "ALEXANDER"   # name2 changed     替换alex
print(names)
print(name2)

View Code

names = ["4ZhangYang", "#!GuYun","xXiangPeng",["alex","jack"],"ChenRongHua","XuLiangChen"]
name2 = names
print(names)
print(name2)
names[2] = "向鹏"   # name2也变了(如果是简单字符串和数字是不会变的(见notes 1 小知识),但是列表里会跟着变)
names[3][0] = "ALEXANDER"   # name2 changed
print(names)
print(name2)

View Code

deep copy:

import copynames = ["4ZhangYang", "#!GuYun","xXiangPeng",["alex","jack"],"ChenRongHua","XuLiangChen"]
name2 = copy.deepcopy(names)
print(names)
print(name2)
names[2] = "向鹏"    # name2 no changes
names[3][0] = "ALEXANDER"   # name2 no changes
print(names)
print(name2)

View Code

2.元组操作

         元组是有序的,但是只可读

统计和找下标

ages = (1,2,3,4)   # define a tuple
print(ages.count("1"))  # 统计
print(ages.index(3))     #找下标

people = ("name","age","salary","occupation")
print(people.count("name"))
print(people.index("age"))

View Code

3.字符串操作

           字符串是不可修改的

           eg.  如果变大小写,原本的字符串就会被覆盖掉

11111111111111111

name = "my name is alex"
name1 = "my \tname is alex"  # \t 空一隔
name2 = "my \tname is {name} and i am {year} old"     # formatprint(name.capitalize())  # 首字母大写
print(name.title())       # 每个单词第一个字母大写
print(name.zfill(50))     # 在字符串前加50个0
print(name.count("a"))    # 统计a的数量
print(name.center(50,"-"))
print(name.ljust(50,'*'))
print(name.rjust(50,'-'))
print(name.encode)    # 字符串转二进制
print(name.endswith("ex"))   # 判断"ex"结尾
print(name.find("name"))
print(name[name.find("name"):9])  # 字符串贴片print(name1)
print(name1.expandtabs(tabsize=30))    # 30个空格print(name2.format(name= 'alex',year=23))
print(name2.format_map({'name':'alex','year':12}))

code1

输出:

My name is alex
My Name Is Alex
00000000000000000000000000000000000my name is alex
2
-----------------my name is alex------------------
my name is alex***********************************
-----------------------------------my name is alex
<built-in method encode of str object at 0x0000000002130FB0>
True
3
name i
my     name is alex
my                            name is alex
my     name is alex and i am 23 old
my     name is alex and i am 12 old
1234
1,2,3,4
1+2+3+4
aLex li
7
['a', ' ex ', 'i', '']
['1', '2', '3', '4']
['1+2', '+3+4']
['1+2+3+4']

code1

22222222222222222

print('ab23!'.isalnum())          # 判断是否是阿拉伯数字
print('Aab'.isalpha())            # 判断是否纯英文字符
print('1A'.isdecimal())           # 判断是否是十进制
print('ab23!'.isdigit())          # 判断是否是整数
print('A1a'.isidentifier())       # 判断是不是一个合法的标识符
print('ab23'.islower())           # 判断是不是小写
print('aG'.isupper())             # 判断是不是大写
print('33.33'.isnumeric())        # 判断是不是只有数字 forget it
print('ab23!'.isspace())          # 判断是不是空格
print('My Name Is'.istitle())     # 判断是不是标题大写
print('ab23!'.isprintable())print('Alex'.lower())       # all lower
print('Alex'.upper())       # all upper
print('Alex Li'.swapcase())
print('Alex\n'.strip())     # strip 会去掉两头的空格和回车
print('\nAlex'.lstrip())    # \n 换行
print('Alex\n'.rstrip())
print('---')

code2

输出:

False
True
False
False
True
True
False
False
False
True
True
alex
ALEX
aLEX lI
Alex
Alex
Alex
---

code2

33333333333333333

# join
print(''.join(['1','2','3','4']))
print(','.join(['1','2','3','4']))
print('+'.join(['1','2','3','4']))print('alex li'.replace('l','L',1))
print('alex lil'.rfind('l'))   # 找到最后值的下标
print('al ex lil'.split('l'))     # 字符串 -->  列表
print('1+2+3+4'.split('+'))
print('1+2\n+3+4'.splitlines())
print('1+2+3+4'.split('\n'))

code3

输出:

1234
1,2,3,4
1+2+3+4
aLex li
7
['a', ' ex ', 'i', '']
['1', '2', '3', '4']
['1+2', '+3+4']
['1+2+3+4']

code3

随机密码:

#  随机密码!!
p = str.maketrans("abcdef",'123456')
print("alex li".translate(p))   # 用上面abcde所赋的值(对应的数),去转化“alex li”

4.字典

字典一种key——value的数据类型
      通过笔划,字母来查对

字典是无序的,没有下标 (也不需要下标,通过key去找);但是列表有下标,表示位置信息

字典可以多层嵌插字典、列表、元组任何东西

eg.1 loop

# key-value
info = {'stu1101': "TengLan Wu",        # key -->  stu1101;    value --> name'stu1102': "LongZe Luola",'stu1103': "XiaoZe Maliya",
}# basic loop
for i in info:print(i,info[i])    # print key and value# loop   没有上面高效   不推介
for k,v in info.items():print(k,v)

eg.2 update and combine two dicts

# another dict
b = {'stu1101':"Alex",1:3,2:5
}info.update(b)   # combine two dicts, keep different items and replace the same one

eg.3 create new dict

>>>c = info.fromkeys([6,7,8],[1,{"name":"alex"},444])   # create new dict
>>>print(c)
{6: [1, {'name': 'alex'}, 444], 7: [1, {'name': 'alex'}, 444], 8: [1, {'name': 'alex'}, 444]}>>>c[7][1]['name'] = "Jack Chen"  # 全改了,不是单独改了一份数据
>>>print(c)
{6: [1, {'name': 'Jack Chen'}, 444], 7: [1, {'name': 'Jack Chen'}, 444], 8: [1, {'name': 'Jack Chen'}, 444]}

eg.4 dict converts to list(item), find, existence, modify, add, delete

# dict converts to list
print(info.items())# find
print(info["stu1101"])    # if 100% sure it does exist
print(info.get('stu1104'))  # if no such item exists, returns none# judge weather XXX in the dict
print('stu1103' in info)    # returns T or F# modify
info["stu1101"] = "武藤兰"
info["stu1104"] = "CangJingKong"   #  if no such item exists, then adding this item automatically#del
del info["stu1101"]   #  or  info.pop("stu1101")
# del info             delete the whole dict
# info,popitem()       free deleting

污污污污小例子:(多级字典嵌套及操作)

av_catalog = {"欧美":{"www.youporn.com": ["很多免费的,世界最大的","质量一般"],"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],"x-art.com": ["质量很高,真的很高","全部收费,屌比请绕过"]},"日韩":{"tokyo-hot":["质量怎么样不清楚,个人已经不喜欢日韩范了","听说是收费的"]},"大陆":{"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]}
}av_catalog["大陆"]["1024"][1] = "可以在国内做镜像"       # 改print(av_catalog.values())    # 打印value
print(av_catalog.keys())      # 打印key# setdefault   去字典里面找,如果有,就返回;如果没有,创建一个新的
av_catalog.setdefault("台湾",{"www.baidu.com":[1,2]})
print(av_catalog)av_catalog.setdefault("大陆",{"www.baidu.com":[1,2]})    # 大陆不会有变化    BUT 也没有新创建一个值
print(av_catalog)

View Code

小程序之 购物车

product_list = [('Iphone',5800),('Mac Pro',9800),('Bike',800),('Watch',10600),('Coffee',31),('Alex Python',120),
]shopping_list = []salary = input("Input your salary:") # 工资只要输入一次,所以写在循环外面
if salary.isdigit():     # 判断整数salary = int(salary)while True:for index,item in enumerate(product_list):    # enumerate: 把列表下标直接取出来print(index,item)user_choice = input("选择要买嘛?>>>:")if user_choice.isdigit():user_choice = int(user_choice)if user_choice < len(product_list) and user_choice >= 0:p_item = product_list[user_choice]   # 通过下标把商品取出来if p_item[1] <= salary:    # 买得起
                    shopping_list.append(p_item)salary -= p_item[1]  # 扣钱print("Added %s into shopping cart, your current balance is \033[31;1m%s\033[0m"%(p_item,salary))   # red31,green32else:print("\033[41;1m你的余额只剩[%s]拉,还买个毛线\033[0m"% salary)    # red_background41 green_background42else:print("product code [%s] is not exist!"% user_choice)elif user_choice == 'q':print("------------- shopping list --------------")for p in shopping_list:print(p)print("Your current balance:",salary)exit()else:print('invalid option')

View Code

小程序之 三级菜单

data = {'北京':{"昌平":{"沙河":["oldboy","test"],"天通苑":["链家地产","我爱我家"]},"朝阳":{"望京":["奔驰","陌陌"],"国贸":["CICC","HP"],"东直门":["Advent","飞信"]},"海淀":{},},'山东':{"德州":{},"青岛":{},"济南":{},},'广东':{"东莞":{},"常熟":{},"佛山":{},},
}exit_flag = False   # 为了在任意一层可以退出while not exit_flag:for i in data:print(i)choice = input("选择进入1>>:")if choice in data:   # 在不在字典里while not exit_flag:      # 死循环for i2 in data[choice]:print("\t",i2)choice2 = input("选择进入2>>:")if choice2 in data[choice]:while not exit_flag:      # 死循环for i3 in data[choice][choice2]:print("\t\t",i3)choice3 = input("选择进入3>>:")if choice3 in data[choice][choice2]:for i4 in data[choice][choice2][choice3]:print("\t\t",i4)choice4 = input("最后一层,按b返回>>:")if choice4 == "b":pass   # 什么也不做,不写就报错了,其实就是个占位符elif choice4 == "q":exit_flag = Trueif choice3 == "b":breakelif choice3 == "q":exit_flag = Trueif choice2 =="b":breakelif choice2 == "q":exit_flag = True

View Code

转载于:https://www.cnblogs.com/momo-momo-jia/p/6701654.html

Long Way To Go 之 Python 2相关推荐

  1. Github配置(git+vscode+python+jupyter)

    ①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...

  2. 【实验楼】python简明教程

    ①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...

  3. 【Kaggle Learn】Python 5-8

    五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...

  4. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  5. 使用python愉快地做高数线代题目~

    今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...

  6. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  7. python减小内存占用_如何将Python内存占用缩小20倍?

    当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...

  8. python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...

  9. python程序如何执行死刑图片_如何判断对象已死

    已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...

  10. Python gRPC 安装

    1. 安装依赖库 sudo pip3 install grpcio sudo pip3 install protobuf sudo pip3 install grpcio_tools 2. 生成对应文 ...

最新文章

  1. php除去重复数组算法,如何从PHP中的多维数组中删除重复值
  2. 自助服务台——多渠道触发运维工单
  3. linux c++ 得到 指定进程名 线程数
  4. Python dict dictionaries Python 数据结构——字典
  5. .classpath文件有什么用_干货分享:Windows目录结构剖析,C盘目录常见文件夹都有什么用?...
  6. c# 2.0 Factory的实现
  7. HDU - 5878 A - I Count Two Three H 技巧枚举
  8. Java基础学习总结(97)——合格的Java的架构师需要具备的技术知识
  9. LeetCode 387:first-unique-character-in-a-string
  10. 线性代数学习笔记——矩阵主要公式
  11. 全志F1C100s入坑与填坑 uboot Linux Kernel 与buildroot
  12. ARCore-普及篇
  13. adb 环境变量配置 无效
  14. ie8安装java提示被阻止_IE8浏览器安装失败的解决方法
  15. 《德鲁克管理思想精要》读书笔记8 - 时间
  16. 异常音检测(持续更新)
  17. 招聘 | 腾讯TEG机器学习平台预训练组实习生JD
  18. (转)TSQL和PLSQL的区别
  19. 台式计算机蓝屏代码08e,win7系统下电脑开机出现蓝屏代码0x000008e解决方法(图)
  20. 如何学习C/C++ (适用于初次做项目、实习生)

热门文章

  1. 关闭计算机小键盘快捷键,笔记本小键盘怎么关 关闭小键盘的方法【详解】
  2. web_set_user 不能login问题
  3. no matching distribution found for XXX
  4. js页面跳转 和 js打开新窗口方法
  5. 高通 Msm835平台充电功能的开发与调试
  6. 滴滴-----浅谈滴滴派单算法
  7. 联想昭阳E47A无线网卡指示灯不亮,搜不到无线信号,解决办法
  8. c语言 switch案例,C语言switch语句实例
  9. hihoCoder 1095 HIHO Drinking Game 微软苏州校招笔试 12月27日
  10. HTML基础标签总结(仅用作复习,持续补充扩展)