这周时间充裕,把第一周的两个作业登陆验证和三级菜单做完后又用零零散散的时间看完了第二周的课程,不得不说老男孩这个教育方式感觉还是不错的,其实说白了就是花钱找个人监督自己学习呗,而且还强行让我们养成一些好习惯,博客也好,流程图也好,还有ReadMe的一些规范,希望自己也可以坚持下去。

下面简单回顾一下第二周的课程的知识点:

一、模块初识

只讲了两个基础模块

sys:

#Author:Ivor

import sys
s = sys.path #调用python获取模块的路径
print(s)    
print(sys.argv)  #脚本自身的相对路径位置,不过在pycharm里显示的是绝对路径,因为pycharm里边存储的就是绝对路径,在cmd中就会显示相对路径
print(sys.argv[1]) #可以从脚本外取值,相当于shell里边的$1 $2,[1]获取第一个参数

os:

#Author:Ivor

import os

#os.system('dir') #执行命令,dir是windows下显示当前目录文件的命令,直接在屏幕打印出来
cmd_rst = os.popen('dir') #popen可以将打印的信息存储起来,返回存储数据的内存地址
cmd_rst = os.popen('dir').read() #read方法可以直接把打印数据读出来
print(cmd_rst)  #os.mkdir("new_file") #在当前目录新建一个文件夹

二、pyc的概念

自己的理解,python在运行之前会像java一样生成一个预编译的文件*.pyc,但是预编译的程度可能只有20%不到,java可以达到50%左右,当python执行程序时会先找有没有该程序的pyc,再按照pyc和程序的时间进行对比,哪个更新就用哪个。再引用一下Alex写的。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

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

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

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

三、python数据类型

概念类的如果印象不是很深,还是引用一下Alex的博客,大致分为以下几类,不过常用的也就是
Int
long(python3中取消了long类型)
布尔
字符串
bytes
 
1、数字

int(整型)

  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647   
     在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)  跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。   注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。 float(浮点型)
      先扫盲 http://www.cnblogs.com/alex3714/articles/5895848.html   浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。 complex(复数)   复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
 
2、布尔值
  真或假
  1 或 0
3、字符串
"hello world"
字符串常用功能:
  • 移除空白
  • 分割
  • 长度
  • 索引
  • 切片
4、列表

基本操作:

  • 索引
  • 切片
  • 追加
  • 删除
  • 长度
  • 切片
  • 循环
  • 包含
5、元组(不可变列表)
创建元组:
ages = (11, 22, 33, 44, 55)
ages = tuple((11, 22, 33, 44, 55))
 
6、字典(无序)
创建字典:
person = {"name": "mr.wu", 'age': 18}
person = dict({"name": "mr.wu", 'age': 18})
 
四、bytes数据类型
单独说明了一下bytes数据类型,string是用Unicode来进行存储的,但是像视频文件,图片文件,以及网络变成时传输数据,都必须转换成bytes类型。
下面是一个转换的例子
#Author:Ivor

msg='天安门'

print(msg.encode(encoding='GBK'))

mss=b'\xcc\xec\xb0\xb2\xc3\xc5'

print(mss.decode(encoding='GBK'))

五、列表的使用

列表有许多自带的内置方法

#Author:Ivor
#list使用 names = ["zZhangsan","lisi","wangwu","xiaoliu"] #names.clear() #清空列表
#names.pop() #删除最后一个
#names.append("xxxxx") #在最后添加
#print(names.count("Zhangsan")) #计数
#names2=[1,2,3,4,5];names.extend(names2) #将names2添加到names中
#print(names[names.index("lisi")]) #寻找下标,并打印出这个值
#names.insert(1,"aaaa") #在哪个位置插入
#names.reverse() #反向排序
#names.remove("lisi") #删除
#names.sort() #排序,按ascii码
print(names)

列表的另一些用法

#Author:Ivor
import copy person = ["name",['saving',1000]] #浅copy的三种方式
names2 = copy.copy(person)
names2 = person[:]
names2 = list(person) #列表指向同一块内存
#names2 = names #可以用作联合账号
p1 = person[:]
p2 = list(person) p1[0]='alex'
p2[0]='fengjie' p1[1][1]=500 print(p1)
print(p2)

六、元组

元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

语法

names = ("alex","jack","eric")

它只有2个方法,一个是count,一个是index,完毕。 

七、字典

字典应该是和列表一起,最最常用的数据类型

这里mark一个迭代时候可以用的方法,enumerate,可以获取字典的下标

语法:

info = {
'stu1101': "TengLan Wu",
'stu1102': "LongZe Luola",
'stu1103': "XiaoZe Maliya",
}

增加:

>>> info["stu1104"] = "苍井空"
>>> info
{'stu1102': 'LongZe Luola', 'stu1104': '苍井空', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu'}

修改:

>>> info['stu1101'] = "武藤兰"
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}

删除:

>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}
>>> info.pop("stu1101") #标准删除姿势
'武藤兰'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
>>> del info['stu1103'] #换个姿势删除
>>> info
{'stu1102': 'LongZe Luola'}
>>>
>>>
>>>
>>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} #随机删除
>>> info.popitem()
('stu1102', 'LongZe Luola')
>>> info
{'stu1103': 'XiaoZe Maliya'}

查找:

>>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
>>>
>>> "stu1102" in info #标准用法
True
>>> info.get("stu1102") #获取
'LongZe Luola'
>>> info["stu1102"] #同上,但是看下面
'LongZe Luola'
>>> info["stu1105"] #如果一个key不存在,就报错,get不会,不存在只返回None
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'stu1105'

其他用法:

#values
>>> info.values()
dict_values(['LongZe Luola', 'XiaoZe Maliya']) #keys
>>> info.keys()
dict_keys(['stu1102', 'stu1103']) #setdefault
>>> info.setdefault("stu1106","Alex")
'Alex'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> info.setdefault("stu1102","龙泽萝拉")
'LongZe Luola'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} #update
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
>>> info.update(b)
>>> info
{'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} #items
info.items()
dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')]) #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
>>> dict.fromkeys([1,2,3],'testd')
{1: 'testd', 2: 'testd', 3: 'testd'}

八、之后是按照视频要求写了两个小实例,三级菜单和购物车

三级菜单:

#Authon Ivor

dic_list = {
"北京":{
"东城": {},
"崇文": ['虹桥市场','北京游乐园','百荣商场'],
"西城": {},
"宣武": {}
},
"上海":{},
"广州":{}
} while True:
for i in dic_list:
print(i)
choice = input("Please input your choice exit(q):")
if choice == "q":
print("exit the program..")
exit()
while True:
if choice in dic_list.keys():
for i in dic_list[choice]:
print(i)
choice2 = input("Please input your choice2 exit(q) return(r):")
if choice2 == "q":
print("exit the program..")
exit()
elif choice2 == 'r':
break
if choice2 in dic_list[choice]:
while True:
for i in dic_list[choice][choice2]:
print(i)
choice3 = input("Please input your choice3 exit(q) return(r):")
if choice3 == "q":
print("exit the program..")
exit()
elif choice3 == 'r':
break

购物车:

#Author:Ivor
product_list = [
["iphone", 5999],
["bike", 899],
["book", 120],
["coffee", 31]
]
goods =[]
salary = input("please input your salary:")
if salary.isdigit():
salary = int(salary)
while True:
for index,item in enumerate(product_list):
print(index,item)
user_choice = input(">>>")
if user_choice.isdigit():
user_choice = int(user_choice)
if user_choice >= 0 and user_choice < len(product_list):
if salary > product_list[user_choice][1]:
salary -= product_list[user_choice][1]
goods.append(product_list[user_choice])
print("your balance is:",salary)
else:
print("your money is not enough..")
else:
print("in valid number!")
elif user_choice == 'q':
print("your balance is ",salary)
print("your shop list is ",goods)
break
else:
print("invalid choice")
else:
print("invalid value!")

Python学习-day2的更多相关文章

  1. python学习day2

    一.模块初识 python模块 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用 ...

  2. python学习day2(二)

    1.类与对象的关系 对于Python,一切事物都是对象,对象基于类创建 type是获取类的 dir是获取这个类里面的成员 2.int内部功能介绍 bit_length:返回表示当前数字占用的最少位数: ...

  3. python学习day2(一)

    一.上周作业回顾 1.登陆接口: 思路流程: 1.登陆,三次锁定用户 2.用户信息文件,黑名单文件 3.检测黑名单,如输入账号在黑名单中存在,不允许登陆 4.用户密码判断 主要知识点:while,fo ...

  4. python学习Day2 python 、pycharm安装及环境变量配置

    复习 进制转换:二进制&十六进制转换(从左往右1248机制,每四位二进制对应一位16进制) 二进制&十进制转换   2n-1幂次方相加 十进制到二进制转化  将十进制除以2,把余数记下 ...

  5. python学习 day2 (3月2日)

    .if if else 和 if elif else 的区别是: 前者 判断第一个 判断完第二个 之后还会执行else: 后者是只有满足条件(即都不符合if.elif里的条件时才会进入else) 不清 ...

  6. Python学习Day2笔记(字符编码和函数)

    1.字符编码 #ASCII码里只能存英文和特殊字符 不能存中文 存英文占1个字节 8位#中文编码为GBK 操作系统编码也为GBK#为了统一存储中文和英文和其他语言文字出现了万国码Unicode 所有一 ...

  7. Python学习Day2笔记(集合和文件操作)

    1.集合的使用 列表是有序的可包含重复内容的 集合是无序的不可包含重复内容的 1) 集合关系测试 #列表去重list_1=[1,4,5,6,7,8,9,7,5,4,23,2] #有重复数据 list_ ...

  8. Python学习day2 while循环&格式化输出&运算符

    day2 运算符-while循环 1.while循环 while循环基本结构; while 条件:      结果    # 如果条件为真,那么循环则执行    # 如果条件为假,那么循环不执行 de ...

  9. Python学习日记 --day2

    Python学习日记 --day2 1.格式化输出:% s d  (%为占位符 s为字符串类型 d为数字类型) name = input('请输入姓名') age = int(input('请输入年龄 ...

随机推荐

  1. Spring Framework的核心:IOC容器的实现

    2.1   Spring IoC容器概述 2.1.1 IoC容器和依赖反转模式 依赖反转的要义,如果合作对象的引用或依赖关系的管理由具体对象来完成,会导致代码的高度耦合和可测性的降低.依赖控制反转的实 ...

  2. UIScrollView无法滚动的解决办法及UIScrollView的代理(delegate)

    1•如果UIScrollView无法滚动,可能是以下原因: Ø没有设置contentSize ØscrollEnabled = NO Ø没有接收到触摸事件:userInteractionEnabled ...

  3. Ganglia安装搭建

    Ganglia的安装部署 前言 1 一.Ganglia组件 1 二.安装依赖 2 三.安装expat依赖 2 四.安装confuse 3 五.安装ganglia 4 六. 服务端配置(gmetad 节 ...

  4. bzoj 3196: Tyvj 1730 二逼平衡树

    #include<cstdio> #include<ctime> #include<cstdlib> #include<iostream> #defin ...

  5. css 变量与javascript结合

    <div onClick="test('yellow')"> CSS Variable</div> ================CSS :root{ - ...

  6. "$cond"

    db.items.aggregate([ { "$project": { "name": 1, "customfield": { " ...

  7. LINUX centos 忘记密码

    entos7采用的是grub2,和centos6.x进入单用户的方法不同.但是因为用的是真机环境无法截图,所以只是大概描述以下思路. init方法 1.centos7的grub2界面会有两个入口,正常 ...

  8. JS设置弹出小窗口。

    经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项.版权信息.警告.欢迎光顾之类的话或者作者想要特别提示的信息.其实制作这 ...

  9. jacoco原理

    Jacoco的原理 转自:kingzzm 的博客,感谢~ 覆盖率计数器 Jacoco使用一系列的不同的计数器来做覆盖率的度量计算.所有这些计数器都是从java的class文件中获取信息,这些class ...

  10. boxsizing属性 IE盒模型和标准盒模型

    CSS3有一个非常有用但应用不广泛的属性: box-sizing: content-box | border-box | inherit content-box,默认属性,遵从标准盒模型. borde ...