python之day2

模块初识

 

模块分两种:标准库和第三方库

Sys和os模块,标准库

Import sys

Sys.path    #print(sys.path)

起名字时不能与导入的库名一样,因为导入的时候首先会到当前目录中找,这样就会导入自己。

Python和系统都有一个环境变量,print(sys.path)可以打印出python的环境变量,输出结果如下:

[‘D:\\python_file\\day2‘, ‘D:\\python_file‘, ‘C:\\Python35\\python35.zip‘, ‘C:\\Python35\\DLLs‘, ‘C:\\Python35\\lib‘, ‘C:\\Python35‘, ‘C:\\Python35\\lib\\site-packages‘]

导入某个模块必须在python的列出来的目录中,一般的第三方库放在\\lib\\site-packages,标准库一般放在lib下。

Sys.argv    #print(sys.argv) 打印相对路径,并记录参数,如下操作:

可以读到参数的值,并根据参数的值做判断,可以使用下面的命令读取到第二个值

Print(sys.argv[2])

Import os   #跟操作系统相关的命令

import os

os.system("dir")  # 会有乱码,是编码的问题cmd_res = os.system("dir")  # 执行命令,不保存输出内容print("--->", cmd_res)       # 输出命令执行的结果,0表示执行成功,1表示执行失败cmd2_res = os.popen("dir")print("--->", cmd2_res)    # 打印的是内存的对象地址cmd3_res = os.popen("dir").read()   # 通过read方法读取内容print("--->", cmd3_res)    # 打印内容,并且编码问题也解决了os.mkdir("new_dir")     # 在当前目录下创建一个目录(文件夹)

用户输入用户名密码的模块,个人模块使用

Pyc是什么?

 

Python是一门先编译后解释的语言,在运行之前进行一次预编译。

当python程序运行时,编译的结果则是保存在位于内存中的pycodeobject中,当python程序运行结束时,python解释器则将pycodeobject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中找pyc文件,如果找到,并且时间比源文件要新,则直接载入,否则就重复上面的过程。

数据类型python

1、  数字

int(整型)

32位机器上取值范围-2**31~2**31-1:- 2147483648~2147483647

64位机器上取值范围-2**63~2**63-1:-9223372036854775808~9223372036854775807

long(长整型)

python3中都是整型,没有长整型的类型

float(浮点型)

浮点数用来处理实数,即带有小数的数字。

complex(复数)工程领域使用,一般用不到

2、  布尔值

真或假:1或0

3、  字符串

字符串拼接:单双引号都可以,可以使用+拼接,如下情况+可以省略,但如果是字符串赋值给了变量,两个变量要进行拼接不能省略+

字符串比较:长度及各位置上的字符均要相等

数据运算

算数运算

+

_

*

/

%取模,返回余数

**多少次方

//整除,返回整除的部分

比较运算符

==

!=或<>都表示不等于

>

<

>=

<=

赋值预算符

=赋值

+=

-=

/=

逻辑运算

and

or

not

成员运算:

in:如果在序列中找到返回true,否则返回false

not in:如果在序列中没有找到返回true

身份运算:

is

not is

位运算:二进制运算

&   两个都为真

|

^   异或运算:两个相同为0,不同为1

~   按位取反,是一个值取反

<<  左移

>>  右移

计算机中能表示的最小单位,是一个二进制位

计算机中能存储的最小单位,是一个二进制位

8bit=byte(字节)

bytes数据类型

三元运算

如果if的条件成立,则d=a,否则d=b

字符串和byte类型

注:字符串类型的只能encode,bytes类型的只能decode

列表的使用

names =[“ZhangYang”,”GuPeng”,”WangLiang”,”TianXue”]

切片

print(names[0])

print(names[1:3])

print(names[-2:-3])

print(names[0:-1:2])   # 步长切片,0和-1可以省略即print(names[::2])

增删改查

names.append(“XuQing”)

names.insert(1,”XinZhiYu”)   #插入的位置

names[2]=”MingMing”   #直接把位置替换

names.remove=”MingMing”  #删除该内容

del names[1]    #删除下标为1的内容

names.pop(1)   #删除下标为1的内容

names.append(“XuQing”)    #再增加一个同名的内容

其它方法

print(names.count(“XuQing”))   #输出显示2,表示列表中有2个XuQing

names.clear()    #清空列表

names.reverse()   #整个内容反过来,即第一个将排到最后一个显示

names.sort()     #特殊符号、数字、大写字母、小写字母,按ascii照码表中的顺序排序

names2=[1,3,4]

names.extend(names2) #把names2中的内容合并到names中,names2还保留

print(names,names2)

del names2     #删除变量

names = ["ZhangYang", "WangLiang", "TianXue", "GuanYu"]
names2= names.copy()
print(names)
print(names2)

输出结果(copy成功,names的内容全部copy了一份儿):

C:\Python35\python3.exe D:/python_file/day2/list.py

[‘ZhangYang‘, ‘WangLiang‘, ‘TianXue‘, ‘GuanYu‘]

[‘ZhangYang‘, ‘WangLiang‘, ‘TianXue‘, ‘GuanYu‘]

names = ["ZhangYang", "WangLiang", "TianXue",["Jiyuyang", "Liubang"], "GuanYu"]
names2= names.copy()
print(names)
print(names2)
names[1] = "王亮"   # names中的内容修改为中文
print(names)        # names修改成功
print(names2)       # names2不变
names[3][0] = "JIYUYANG"
print(names)        # names修改成功
print(names2)       # names2也跟着修改了

输出结果:

C:\Python35\python3.exe D:/python_file/day2/list.py

[‘ZhangYang‘, ‘WangLiang‘, ‘TianXue‘, [‘Jiyuyang‘, ‘Liubang‘], ‘GuanYu‘]

[‘ZhangYang‘, ‘WangLiang‘, ‘TianXue‘, [‘Jiyuyang‘, ‘Liubang‘], ‘GuanYu‘]

[‘ZhangYang‘, ‘王亮‘, ‘TianXue‘, [‘Jiyuyang‘, ‘Liubang‘], ‘GuanYu‘]

[‘ZhangYang‘, ‘WangLiang‘, ‘TianXue‘, [‘Jiyuyang‘, ‘Liubang‘], ‘GuanYu‘]

[‘ZhangYang‘, ‘王亮‘, ‘TianXue‘, [‘JIYUYANG‘, ‘Liubang‘], ‘GuanYu‘]

[‘ZhangYang‘, ‘WangLiang‘, ‘TianXue‘, [‘JIYUYANG‘, ‘Liubang‘], ‘GuanYu‘]

注:copy只是浅copy,第一层的内容copy过来,当遇到第二层比如列表,只copy内存地址,所以当改第二层的数据时,names2的数据也会变

names = ["ZhangYang", "TianXue",["Jiyuyang", "Liubang"], "GuanYu"]
names2 = namesnames[0]= "张扬"names[2][0]= "JIYUYANG"print(names)print(names2)
a = 1b = a
a = 2print(a, b)

输出结果:

C:\Python35\python3.exe D:/python_file/day2/list.py

[‘张扬‘, ‘TianXue‘, [‘JIYUYANG‘, ‘Liubang‘], ‘GuanYu‘]

[‘张扬‘, ‘TianXue‘, [‘JIYUYANG‘, ‘Liubang‘], ‘GuanYu‘]

2 1

注:列表的赋值和普通数字或字符的赋值有本质区别,列表的赋值完全是内存地址,而普通数字或字符的赋值是真实的值而不是地址。

import copy
names = ["ZhangYang", "TianXue",["Jiyuyang", "Liubang"], "GuanYu"]
names2= copy.deepcopy(names)print(names)print(names2)
names[1] = "田雪"   # names中的内容修改为中文print(names)        # names修改成功print(names2)       # names2不变names[2][0] = "JIYUYANG"print(names)        # names修改成功print(names2)       # names2不变

输出结果:

C:\Python35\python3.exe D:/python_file/day2/list.py

[‘ZhangYang‘, ‘TianXue‘, [‘Jiyuyang‘, ‘Liubang‘], ‘GuanYu‘]

[‘ZhangYang‘, ‘TianXue‘, [‘Jiyuyang‘, ‘Liubang‘], ‘GuanYu‘]

[‘ZhangYang‘, ‘田雪‘, [‘Jiyuyang‘, ‘Liubang‘], ‘GuanYu‘]

[‘ZhangYang‘, ‘TianXue‘, [‘Jiyuyang‘, ‘Liubang‘], ‘GuanYu‘]

[‘ZhangYang‘, ‘田雪‘, [‘JIYUYANG‘, ‘Liubang‘], ‘GuanYu‘]

[‘ZhangYang‘, ‘TianXue‘, [‘Jiyuyang‘, ‘Liubang‘], ‘GuanYu‘]

注:此时names2完全独立了是直接把names的内容copy一份儿,并占独立的内存地址,此时修改names的任何内容,names2都不变。一般情况下慎用深copy,因为数据量大的时候很占内存,知道就可以。

列表的循环:

names = ["ZhangYang", "TianXue",["Jiyuyang", "Liubang"], "GuanYu"]for list_content in names:
    print(list_content)

 

元组与购物车程序练习

元组tuple:只能查,所以又叫只读列表

name=(“ZhangYang”, “Liubang” , “Jiyuyang”)

只有两个方法:

name.index

name.count

第一次比较low的代码:

shopping_list = [["iphone", 6000],
                 ["iwatch", 2000],
                 ["book", 80],
                 ["banana", 20],
                 ]
cart = []
flag = False
salary = int(input("please input your salary:"))
while not flag:
    product_num = 0
    for product in shopping_list:
        print(product_num, product[0], product[1])
        product_num += 1
    choice = str(input("please input product number:"))
    if  choice.isdigit():
        choice = int(choice)
        if shopping_list[choice][1] <= salary:
            salary = salary - shopping_list[choice][1]
            print("shopping successful,and your salary", salary)
            cart.append(shopping_list[choice])
        elif shopping_list[choice][1] > salary:
            print("your balance:", salary)
    elif choice == "q":
        flag = True
    else
:
        print("please select your shopping or exit:")
print("your list:", cart)

第二次比较low的代码(格式化输出、高亮输出、容错性好一些):

wal_mart = [
    ["Iphone", 6000],
    ["Iwatch", 2000],
    ["Ipad", 1888],
    ["Aisleep", 128],
    ["coffee", 31],
    ["bicycle", 1200]
]
cart_list = []
flag = False
while not
flag:
    salary = input("please input you salary(must be number):")
    if salary.isdigit():
        while not flag:
            print("----------------------wal_mart china-------------------")
            for product_list in wal_mart:
                print(wal_mart.index(product_list), product_list)
            salary = int(salary)
            choice = input("please input your choice:")
            if choice.isdigit():
                choice = int(choice)
                if choice >= 0 and choice < len(wal_mart):
                    if salary >= wal_mart[choice][1]:
                        cart_list.append(wal_mart[choice])
                        salary -= wal_mart[choice][1]
                        print("add \033[1;32m {name} \033[0m successful.".format(name=wal_mart[choice]))
                    else:
                        print("Not sufficient funds,\033[1;31m your balance is %d\033[0m."%(salary))
            elif choice == "q":
                print("--------------cart list-----------------")
                for buy_product in cart_list:
                    print(buy_product)
                print("\033[1;31m your balance is %d\033[0m." % (salary))
                flag = True
    else
:
        print("invalid input,please input your salary again.")

字符串操作

name=”My name is Tone”

name.capitalize()  #首字母大写

name.count(“n”)   #统计字母个数

name.center(50,”-”)  #打印50个字符,把name放在中间,不够的用-补全

name.endswith(“.com”) #判断以什么结尾

name.expandtabs(tabsize=30)  #把tab转成多少个空格

name.find(“y”)   #取出该字符的下标

name.format()  #格式化输出

例子:name=”My name is{name},I am {year} old. ”

print(name.format(name=”Tone”,year=30))

print(name.format_map({“name”:”Tone”,”year”:33}))  #输出内容一致

name.isalnum()     #是否是阿拉伯数字加阿拉伯字符,包含英文字符和数字

name.isalpha()      #纯英文字符

name.isdecimal()

name.isdigit()

name.isidentifier()   #判断是不是一个合法的标识符即变量

name.islower()      #判断都是小写

name.isuper        #判断都是大写

name.isnumeric()    #判断是不是只有数字在里面,与digit没有什么区别

name.isspace       #判断是不是空格

name.istitle()       #判断是不是所有单词的首字母大写

print(‘+’,join([‘1’,’2’,’3’]))   把一个列表变成字符中间用+相连

name.ljust(50,”*”)

name.rjust(50,”*”)

name.lower()

name.uper()

name.lstrip()

name.rstrip()

name.strip()    #左右的换行和空格都去掉

p=str.maketrans(“abcdef”,”123456”)

print(“alex li”.translate(p))   #用p中定义的数字替换字母

name.replace(“l”,”L”)   #把l替换成L

name.rfind(“e”)   #从右开始查找,找最右边e的下标返回

name.rsplit()

name.split()  #默认把字符串按照空格生成一个列表

name.splitlines  #按照换行符生成一个列表

name.startwith

name.swapcase  #大小写转换

字典的使用

 

字典没有下标,是无序的,通过key可以读取value

info={“stu1101”:”Kaili”, “stu1102”:”Tony”, “stu1103”:”Steven” }

查:

print(info[“stu1101”])   #根据KEY查找,存在的情况下没有问题,如果不存在会报错

print(info.get(“stu1104”))   #有就返回值,没有返回none

修改:

info[“stu1101”]=”Summer”    #修改1101学员的名字

print(info)

info.update(b)   #把两个字典合并,重复的用b更新

添加:

info[“stu1104”]=”Tina”

print(info)               #增加1104学员

删除:

del info  #把字典都删除

del info[“stu1101”]  #删除学员1101

info.pop(“stu1101”)  #删除学员1101,标准删除方法

info.popitem()        #随机删除

info.items()       #把字典转化成列表

“stu1104” in info    #判断KEY是否存在

info.values()   #打印出所有的值

info.keys()     #打印出所有的key

info.setdefault(“taiwai”,{“www.baidu.com”: [1,2]})

dict.fromkeys([key1,key2],”test”)   #初始化一个字典

初始化字典的小坑:

c=dict.fromkeys([5,6,7],[1,{“name”:”alex”},333])

print(c)

c[7][1][“name”] = “Jack Chen”

print(c)       #此时全改了,并不是改了一个

字典的循环:

for list in info:

print(list,info[list])

内容回顾

列表和元组都是有序的;

字符串不可以修改;

字典是无序的,通过KEY读取值(三级菜单);

时间: 2024-07-30 10:16:57

python之day2的相关文章

python s12 day2

python s12 day2 入门知识拾遗 http://www.cnblogs.com/wupeiqi/articles/4906230.html 基本数据类型 注:查看对象相关成员 var,type,dir 一.整数 如: 18.73.84 每一个整数都具备如下功能: class int(object): """ int(x=0) -> int or long int(x, base=10) -> int or long Convert a number o

(转)Python作业day2购物车

Python作业day2购物车 原文:https://www.cnblogs.com/spykids/p/5163108.html 流程图: 实现情况: 可自主注册, 登陆系统可购物,充值(暂未实现),查询余额. 撸了两天一夜的代码,不多说,直接上码,注释神马的后面再说 按 Ctrl+C 复制代码 按 Ctrl+C 复制代码 分类: python作业 标签: 购物车

Python自学day-2

一.模块  模块分两种:标准库和第三方库,标准库是不需要安装就可以使用的库.  import [模块名]:导入一个库,优先是在项目路径中寻找.自定义模块名不要和标准库模块名相同. sys模块: import sysprint(sys.path) sys.path保存的是Python内部调用或模块的查找路径.结果如下: ['D:\\pycharm_workspace\\FirstProject\\day2', 'D:\\pycharm_workspace\\FirstProject', 'D:\\

python学习-day2

列表: 1.找出某个元素有多少个 字符串: 1.字符串去除空格 .strip() username = input("user:") if username.strip() == 'alex': print("welcom") 2.字符串分隔 split() 分隔后是一个列表 names = "alex,jack,rain" name2 = names.split(",") #split()默认是以空格 print("

python初识-day2

1.模块初识 python中的库包括标准库和第三方库,需要使用时可直接导入,导入格式为"import  库模块",例如: 1 import sys #sys为python的标准库 2 print(sys.path) #打印环境变量 3 print(sys.argv) #打印相对路径 再如: 1 import os 2 cmd_res = os.system('dir') #仅执行命令,不保存结果 3 print('-->',cmd_res) #打印结果为0,表示运行成功了了 4

python笔记day2

作用域 只要内存中存在就可以使用,在有函数栈的情况下,还需要加一个条件. name = {'name1':'Carrick','name2','Tina'} for item in name: print item  -->仅仅是打印,没有将变量指向item内存空间 print item -->无法打印,没有变量指向item的内存空间,print不知道该打印哪个内存空间 name = {'name1':'Carrick','name2','Tina'} for item in name: a

alex python of day2

模块 sys模块:sys模块是用c语言写的,所以在lib下是不会有sys.py这个文件存在 1 import sys 2 print(sys.path) #打印环境变量 3 print(sys.argv) #打印相对路径 os模块 1 # author:"Jason lincoln" 2 import os 3 #cmd_res=os.system("dir") #只执行命令,不保存结果 4 cmd_res = os.popen("dir").r

python 学习day2

变量与常量 在python中没有常量的概念,如果我们要定义常量 通常是用大写变量名称表示 import pyc 解析 python是一门先编译后解释的语言,与java相同 pyc是一个python解释器能够读懂的字节码文件,最后真正运行的文件其实是pyc pyc会在每次导入程序的时候与原始文件进行时间对比,进行重新编译 数据类型初识 字符串 数字 浮点数 整数 常整数 万恶的字符串拼接 列表(元素起始位置是从0 开始) 列表元素的修改 列表元素插入(一次只能插入一个) name = [] nam

python学习day2(一)

一.上周作业回顾 1.登陆接口: 思路流程: 1.登陆,三次锁定用户 2.用户信息文件,黑名单文件 3.检测黑名单,如输入账号在黑名单中存在,不允许登陆 4.用户密码判断 主要知识点:while,for循环,if判断,文件操作 2.三级菜单: 1.写字典,大字典里套小字典,再在小字典里套列表 2.程序开始,列出大字典力所有的keys. 3.用户选择后,列出小字典的key. 4.用户再次选择后,列出小字典中的列表. 5.在用户选择的时候,可以加入判断,如是否输入正确 6.在用户选择的时候,加入b返