shell作业
1. 取出文件基名
法一:cat 1.txt | egrep -o "[^/]+$"
法二:awk -F/ '{print $NF}' 1.txt
2. 取ip地址
法一:ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -d: -f2
法二:ifconfig eth0 | egrep -o 'addr:[0-9\.]+' |cut -d: -f2
法三:ifconfig eth0 | awk -F'[: ]+' '/inet addr/{print $4}'
ifconfig eth0 | awk -F'[[:space:]:]+' '/inet addr/{print $4}'
3. 百度云网页
法一:egrep -o '[^"><]+mp4' baiduyun.txt | sort -u
法二:awk 'BEGIN{RS=">|<"} /mp4$/{print($0)}' baiduyun.txt
基础知识
1. 冯诺依曼体系架构
CPU:由运算器和控制器组成
运算器:完成算数运算、逻辑运算、数据传输
控制器:控制程序的执行
存储器:用于记忆程序和数据(内存)
2. 高级语言与低级语言
高级语言和低级语言之间的转换工具:编译器和解释器
C、C++需要本地编译
java、python需要被解释器编译成中间代码,在虚拟机上运行
编译语言把源代码转换成目标机器的CPU指令
解释语言,解释后转换成字节码,运行在虚拟机上,解释器执行中间代码
3. Python解释器
CPython:最广泛的解释器
iPython:交互式、功能增强的Cpython
PyPy:JIT技术,动态编译Python代码
Jython:Python的源代码编译成java的字节码,跑在JVM上
IronPython:与Jython类似,python代码编译成.Net的字节码
4. Python基础
注释:#
布尔:True、False
十六进制:0xa 八进制:0o10 二进制:0b10
字符串:使用能够''或""引用字符的序列,''' """单双三引号,可以跨行、可以在其中自由的使用单双引号
在字符串前面加上r或者R前缀,表示该字符不做特殊处理
5. 基础语法
标识符:可以用字母、下划线和数字,但只能以字母或下划线开头,不能使用如def等作为关键字,大小写有区别。
不允许使用中文,不能使用歧义单词,不能随意用下划线开头的表示符。
常量:赋值后就不能改变值的标识符,python无法定义常量
变量:赋值后,可以改变值得标识符
6. python语言类型
python是动态、强类型语言。
静态编译语言:实现声明变量类型,类型不能再改变,编译时检查
动态编译语言:不需要事先声明类型,随时可以赋值为其他类型;编程时不知道是什么类型。
强类型语言:不同类型之间操作,必须先强制类型转换为同一类型。print('a'+1)
弱类型语言:不同类型间可以操作,自动隐式转换。
7. 算数运算符和位运算符
加+ 减- 乘* 除/ 取余% 幂**
/结果是浮点数,//整除
与& 或| 取反~ 异或^ 左移<< 右移>>
8. 原码、反码、补码
原码:5 => 0000 0101
反码:正数将原码按位取反;负数符号位不变其余按位取反
补码:正数的补码是其本身;负数符号位不变其余按位取反后+1
~12:-13 0000 1100 (取反)--> 1111 0011(-1) --> 1111 0010(除符号位,按位取反) --> 1000 1101=-13
9. 运算符
比较运算符: 等于== 不等于!= 大于> 小于< 大于等于>= 小于等于<=
逻辑运算符:与或非 and or not
赋值运算符: += -= *= /= %=
成员运算符: in 、not in
身份运算符: is 、is not
10. 程序控制
顺序,分支,循环
while循环 for循环 if..eles..判断
while True:
block
for _ in range(10):
print('*')
if a>b:
print(b,a)
else:
print(a,b)
11. continue与break
continue:跳出当前循环,开始下次循环。
break:结束循环操作
程序练习:
(1) 打印菱形:
for i in range(-3,4):
space = -i if i < 0 else i
print(' '*space + '*'*(7-2*space))
打印非对称菱形:
for i in range(-3,4):
if i<0:
print(' '*(-i) + '*'*(4+i))
elif i==0:
print('*'*7)
else:
print(' '*3 + '*'*(4-i))
(2) 99乘法表:
for i in range(1,10):
for j in range(1,i+1):
print('{0}*{1}={2:<2}' .format(i,j,i*j),end=' ')
print()
99乘法表倒置(1):
for i in range(1,10):
print(' '*7*(i-1),end=" ")
for j in range(i,10):
print('{0}*{1}={2:<2}' .format(i,j,i*j),end=' ')
print()
99乘法表倒置(2):
for i in range(1,10):
line = ''
for j in range(1,10):
if i>j:
line = '{} {} {:<4}' .format(' ',' ',' ')
else:
line = '{} * {} = {:<4}' .format(i,j,i*j)
print(line,end=' ')
print()
(3) 求10万以内的质数:
import datetime
start = datetime.datetime.now()
for i in range(101,1,-2):
for j in range(3,i**0.5+1,2):
if i%j==0:
break
else:
print(i)
end = datetime.datetime.now() - start
(4) 求斐波那契数列第101项:
a=1
b=1
index=2
print('{0},{1}' .format(0,1))
print('{0},{1}' .format(1,1))
print('{0},{1}' .format(2,1))
while True:
c=a+b
a=b
b=c
index += 1
print('{0},{1}' .format(index,c))
if index == 101:
break
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87284

