三天的Python课程
基础很sb但必须熟练掌握:
第一天就是Python的简单介绍与简单的接触。基本都是概念性的东西,需要知道一个非常便捷的IDE工具:pycharm,以后的编程就靠它了。还有就是%s和%d的格式化输出、运算符、及流程控制:if...else...;while...else...;for i in seq...else...
第二天的主要讲的是数据类型:数字,字符串,列表,元组,字典,集合及字符编码的详细介绍。
数字:转换为数字: int(10);转换为浮点数:float(10.3) ;是否全部是数字:msg.isdigit()
字符串:切片:msg[1:7];长度:len(msg);成员运算(in or not in):print('a' in msg);查看索引: print(msg.index(18));移除空白:msg.strip();切分split:msg.split('|');以...开头/结尾(startswith/endswith):print(msg.startswith('alex'));替换replace:print(msg.replace('a','B'));格式化输出%和format: print('my name is %s my age is %s' %('egon',18)) print('my name is {} my age is {}'.format('egon',18));合成join:print(':'.join(l));是否全部由字母组成:print(msg.isalpha())
列表:列表可变:msg[0]='abc';切片:msg[1:4];长度:len(msg);成员运算(in or not in):print('a' in msg);追加:msg.append('abc');删除:del msg[1] msg.remove('abc') msg.pop(1);插入:msg.insert(index,'abc');扩展添加:msg.extend([1,2,3,4]);清空列表:msg.clear();复制:msg.copy();反转:msg.reverse()
元组:切片:msg[1:7];长度:len(msg);成员运算(in or not in):print('a' in msg);查看索引: print(msg.index(18));统计元素个数: print(ages.count('abc'))
字典:增加: info['hobbies']=['read','music','play','sleep','eat'] ;长度:len(msg);key运算(in or not in):print('a' in msg);删除:print(info.pop('name')); 键keys(): print(info.keys());值values(): print(info.values());键值对items():print(info.items());获取值:print(info.get('name123',123));删除键值对: print(info.popitem());没有则新增,有则返原值:print(info.setdefault('hobbies',['read','music']));更新字典(字典):info.update(info_new);
集合:长度:len(msg);成员运算(in or not in):print('a' in msg);并集:|;交集:&;差集:-;对称差集:^;父集,子集:>,>= ,<,<=
字符编码: unicode =====encode ======>gbk # 存文件,unicode可以转化成任意编码 gbk====decode====>unicode
#打印三级菜单,打印下级时,记录到列表中;打印上级时,用pop取出,然后再打印最后字典的key
menu = {
'北京':{
'海淀':{'五道口':{'soho':{},'网易':{},'google':{}},
'中关村':{'爱奇艺':{},'汽车之家':{},'youku':{}},
'上地':{'百度':{},},
},
'昌平':{'沙河':{'老男孩':{},'北航':{},},
'天通苑':{},'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{"人民广场":{'炸鸡店':{}}
},
'闸北':{'火车战':{'携程':{}}
},
'浦东':{
},
},
'山东':{
},
} exit_flag = False
current_layer = menu layers = [menu] while not exit_flag:
for k in current_layer:
print(k)
choice = input(">>:").strip()
if choice == "b":
current_layer = layers[-1]
#print("change to laster", current_layer)
layers.pop()
elif choice not in current_layer:continue
else:
layers.append(current_layer)
current_layer = current_layer[choice]
#打印购物车程序 以列表的索引为主
1 #!/usr/bin/env python2
import sys
salary = int(raw_input('please input you salary:'))
products = [
['Iphone',5800],
['MacPro',12000],
['NB Shoes',680],
['Cigarate',48],
['MX',2500]
]
shopping_list = [] while True:
for p in products:
print products.index(p),p[0],p[1]
choice = raw_input("\033[32;1mPlease choose something to buy:\033[0m").strip()
if choice == 'quit':
print "You hava bought below stuff:"
for i in shopping_list:
print '\t',i
sys.exit('Goodbye!')
if len(choice) == 0:continue
if not choice.isdigit():continue choice = int(choice)
if choice >= len(products):
print "\033[31;1mCloud not in the range!\033[0m"
continue
pro = products[choice]
if salary >= pro[1]:#mean you can afford this
salary = salary - pro[1]
shopping_list.append(pro)
print "\033[34;1mAdding %s to shopping list,you have %s left.\033[0m" % (pro[0],salary)
else:
print "\033[31;1mThe price of %s is %s,yet your current balance is %s,so try another one.\033[0m" % (pro[0],pro[1],salary)
第三天是文件处理和函数基础,感觉有点难度了。
# 文件的处理机制
#打开
f=open('a.txt',mode='r',encoding='utf-8') #变量赋值
#读/写
data=f.read()
print(data)
#关闭
del f #回收python资源,python回收机制自动处理,不用写
f.close() #回收操作系统的资源
del f
print(f)
#流程分析:
#1:向操作系统发起系统调用
#2:操作系统打开这个文件,返回一个文件句柄给应用程序
#3: 在应用程序中把文件句柄赋值给一个变量
#注意两点:
#1:打开一个文件对应两部分,一个Python级别的文件句柄,另外一个是操作系统打开的文件(默认
# 打开文件的编码是以操作系统的编码为准的,除非open()指定encoding='编码' )
#2:当文件操作完毕后,应该回收两部分资源,
#del f:回收应用程序资源(python解释器自动的垃圾回收机制已经替我们做了)
#f.close:回收操作系统
#上下文管理with 自动关闭系统的占用f.close()
with open('a.txt',mode='r',encoding='utf-8') as f:
print(f.read())
# 文件打开的模式
#r:默认的打开模式,只读,文件不存在则报错,rt:txt
f=open('a.txt',encoding='utf-8') #默认就是只读模式
print('===>',f.read()) #读所有,bytes---decode('utf-8')--->unicode(str) 从硬盘读出来就是bytes类型,read出来是python的字符串就是unicode,python3的字符串是unicode
print(f.readlines()) #读所有,结果放入列表中
print(f.readline(),end='') #一次读一行 print函数默认有个换行符'\n'
f.close()
#w:只写模式,如果文件存在则清空,如果文件不存在则新建
#a:追加写模式,如果文件存在则把光标移动到文件末尾,如果文件不存在则新建
#b:以bytes的形式去操作文件内容,不能指定编码 只有字符串类型才有编码
with open('a.txt',mode='rb') as f:
data=f.read()
print(data.decode('utf-8')) #bytes类型转成字符串unicode
#了解部分
print(f.readable()) #判断文件是否可读
print(f.writable()) #判断文件是否可写
f.closed() #文件是否关闭
f.encoding() #如果文件打开模式为b,则没有该属性
f.flush() #立刻将文件内容从内存刷到硬盘
f.name() #查看文件名
#以文本t的模式读文件,n代表的是字符的个数,读3个字符,其他都是字节
#以b的模式读文件,n代表的是字节的个数
#tell:告诉当前光标的位置
#seek:移动光标
#0:文件开头 可以b模式,也可以t模式
#1:当前位置 只能基于b模式
#2:文件末尾 只能基于b模式
#tail -f access.log
import time
with open('access.log','rb') as f:
f.seek(0,2)
while True:
line=f.readline()
if line: #读到就打印 没有读到就sleep一下
print(line.decode('utf-8'),end='')
else:
time.sleep(0.2)
#truncate 截断文件 写操作 r模式就报错 w就没有截断这一说直接清空了 只能a模式,就文件开头开始,后面删掉
#文件的修改 硬盘上的内容没有改这一说,直接就是新的内容直接覆盖掉老的文件,会生成新文件.swap,然后删除原文件,重命名至原文件。内存可以改
#方式一(占用内存过大,仅适用于小文件):把硬盘中文件的数据全部读入内存,然后在内存里进行修改,最后保存
import os
with open('e.txt','r',encoding='utf-8') as read_f,\
open('.e.txt.swap','w',encoding='utf-8') as write_f:
data=read_f.read()
# print(type(data)) #str
data=data.replace('alex','SB')
write_f.write(data) os.remove('e.txt')
os.rename('.e.txt.swap','e.txt')
#方式二:一行一行地读,一行一行地改
import os
with open('e.txt','r',encoding='utf-8') as read_f,\
open('.e.txt.swap','w',encoding='utf-8') as write_f:
for line in read_f:
line=line.replace('SB','alex')
write_f.write(line) os.remove('e.txt')
os.rename('.e.txt.swap','e.txt')
函数基础的网址:http://www.cnblogs.com/DemonAngel/p/7581862.html
三天的Python课程的更多相关文章
- python课程单元三编程题讲解(上)
目录 1.快乐的数字 2.凯撒密码I 3.凯撒密码II 4.括号配对检测 A @ 下面向大家介绍一下我在学习python课程的一些题目的解法,如果大家有什么更好的解法请私信我.这里只显示题目与 ...
- 孤荷凌寒自学python第三十九天python 的线程锁Lock
孤荷凌寒自学python第三十九天python的线程锁Lock (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 当多个线程同时操作一个文件等需要同时操作某一对象的情况发生时,很有可能发生冲突, ...
- 孤荷凌寒自学python第三十八天初识python的线程控制
孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看 ...
- 孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化
孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.什么是序列化与反序列化 序列化是指将内存中的数据进行指 ...
- 孤荷凌寒自学python第三十三天python的文件操作初识
孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...
- 孤荷凌寒自学python第三十一天python的datetime.timedelta模块
孤荷凌寒自学python第三十一天python的datetime.timedelta模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.timedelta模块是一个表示 ...
- 孤荷凌寒自学python第三十天python的datetime.datetime模块
孤荷凌寒自学python第三十天python的datetime.datetime模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.datetime模块包含了:datet ...
- 尚学python课程---15、python进阶语法
尚学python课程---15.python进阶语法 一.总结 一句话总结: python使用东西要引入库,比如 json 1.python如何创建类? class ClassName: :以冒号结尾 ...
- 尚学python课程---13、python基础语法
尚学python课程---13.python基础语法 一.总结 一句话总结: legend2系统使我能够快速掌握一门语法,特别有用 pass 语句:空语句:是为了保持程序结构的完整性 :作用:比如: ...
随机推荐
- MVC5+EF6 入门完整教程1 :从0开始
https://www.cnblogs.com/miro/p/4030622.html 第0课 从0开始 ASP.NET MVC开发模式和传统的WebForm开发模式相比,增加了很多"约定& ...
- 智能指针和异常、 weak_ptr、unique_ptr
12.1.4智能指针和异常 1.在块中创建的动态内存,如果是由内置指针来指向这块内存,那么若是在块结束时未delete这个指针,则该内存不会被释放,若在delete之前发生异常,由于还没执行delet ...
- 使用VS2015调试Qt5.9.5源码
调试的前提 1.Qt5.9.5源码. 2.Qt5.9.5对应VS2015版本的pdb文件. 前提1在安装Qt时勾选源代码选项即可,这样安装后的Qt目录会多出一个“Src”的目录,里面就是Qt的源码. ...
- TCL create list from file
proc create_list {filename {prompt verbose} {opts "" }} { set list_return {} if {[file exi ...
- Dev-Cpp/Code::Block/MinGW下使用EasyX
众所周知,EasyX是个很香的东西,但EasyX目前只支持Visual Studio,那么如果要在MinGW(Dev-Cpp和Code::Block均使用这个编译器)上使用EasyX怎么办呢? 这篇文 ...
- js面向过程 分页功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MNIST数据集环境搭建
由于换了电脑,ubuntu是重新下载的,因此记录一些相关数据集的搭建: 首先是data数据集,在第七讲中 我们需要建立data文件夹,并将数据集放进去 再就是model模型 我们应该新建一个model ...
- Ubuntu16.04 QT5编译出现cannot find -lGL和collect2:error:ld r
在ubuntu下使用Qt 编译时候遇上了cannot find -lGL错误,使用命令 是由于系统缺少链接库,在终端执行下面命令就可以解决问题. sudo apt-get install libqt4 ...
- 基于icmp的tracert路由追踪程序
https://blog.csdn.net/u013271921/article/details/45488173 #include<winsock2.h> //#include<i ...
- Bugku-CTF分析篇-weblogic(黑客攻击了Weblogic应用,请分析攻击过程,找出Weblogic的主机名。)
weblogic 黑客攻击了Weblogic应用,请分析攻击过程,找出Weblogic的主机名. flag格式:flag{} Tip:主机名为十六进制.