广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python3.6.4的学习
  • 736
分享到

python3.6.4的学习

2023-01-31 07:01:00 736人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

[root@mantisbt01 python]# ./13.pyPlease input your name:hadoopPlease input your height(m):1.80Please input your height(k

[root@mantisbt01 python]# ./13.py
Please input your name:hadoop
Please input your height(m):1.80
Please input your height(kg):75.3
hadoop , Your bmi value is: 23.24 !
Your body type is 正常
[root@mantisbt01 Python]# python
Python 3.6.4 (default, Mar 19 2018, 10:30:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more infORMation.

abs(12)
12
abs(-12)
12
abs(0)
0
abs(-12.3)
12.3
abs(12.3)
12.3
abs(1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: abs() takes exactly one argument (2 given)
abs(f)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'f' is not defined
max(1,2)
2
max(1,2,23,4)
23
max(1,2,23,4,-9,0)
23
int(321)
321
int(12.32)
12
float(12.32)
12.32
float(12)
12.0
float('12.32')
12.32
str(100)
'100'
str(13)
'13'
str(as)
File "<stdin>", line 1
str(as)
^
SyntaxError: invalid syntax
str('as')
'as'
str('a')
'a'
str(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
bool(1)
True
bool(-1)
True
bool(0)
False
bool(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
bool('a')
True
a=abs
a(-2)
2
n1=255
n2=1000
hex(n1)
'0xff'
hex(n2)
'0x3e8'

def my_abs(x):
... if x >=0:
... return x
... else:
... return -x
...
my_abs(-9)
9
my_abs(-8)
8
my_abs(8)
8
my_abs(0)
0
my_abs(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in my_abs
TypeError: '>=' not supported between instances of 'builtin_function_or_method' and 'int'
my_abs('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in my_abs
TypeError: '>=' not supported between instances of 'str' and 'int'

[root@mantisbt01 python]# pwd
/root/python
[root@mantisbt01 python]# cat 14.py
def my_abs(x):
if x >=0:
return x
else:
return -x
[root@mantisbt01 python]# python
Python 3.6.4 (default, Mar 19 2018, 10:30:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.

from 14 import my_abs
File "<stdin>", line 1
from 14 import my_abs
^
SyntaxError: invalid syntax

KeyboardInterrupt

[root@mantisbt01 python]# mv 14.py abstest.py
[root@mantisbt01 python]# python
Python 3.6.4 (default, Mar 19 2018, 10:30:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
from abstest import my_abs
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/python/abstest.py", line 3
return x
^
TabError: inconsistent use of tabs and spaces in indentation

[root@mantisbt01 python]# vi abstest.py
[root@mantisbt01 python]# python
Python 3.6.4 (default, Mar 19 2018, 10:30:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
from abstest import my_abs
my_abs(-18)
18
my_abs(19)
19
my_abs(0)
0
my_abs('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/python/abstest.py", line 2, in my_abs
if x >=0:
TypeError: '>=' not supported between instances of 'str' and 'int'
my_abs(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

def nop():
... pass
...

if age >=18:
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'age' is not defined
age=10
if age >=18:
... age
...

my_abs(2)
2
my_abs(1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: my_abs() takes 1 positional argument but 2 were given
my_abs('A')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/python/abstest.py", line 2, in my_abs
if x >=0:
TypeError: '>=' not supported between instances of 'str' and 'int'
abs('A')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'

[root@mantisbt01 python]# cp -p abstest.py abstest2.py
[root@mantisbt01 python]#
[root@mantisbt01 python]# vi abstest2.py
[root@mantisbt01 python]# cat abstest2.py
def my_abs(x):
if not isinstance(x,(int,float)):
raise TypeError('bad operand type')
if x >=0:
return x
else:
return -x
[root@mantisbt01 python]#

[root@mantisbt01 python]# cp -p abstest.py abstest2.py
[root@mantisbt01 python]#
[root@mantisbt01 python]# vi abstest2.py
[root@mantisbt01 python]# cat abstest2.py
def my_abs(x):
if not isinstance(x,(int,float)):
raise TypeError('bad operand type')
if x >=0:
return x
else:
return -x
[root@mantisbt01 python]# python
Python 3.6.4 (default, Mar 19 2018, 10:30:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.

from abstest2 import my_abs
my_abs(-9)
9
my_abs(9)
9
my_abs(0)
0
my_abs('A')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/python/abstest2.py", line 3, in my_abs
raise TypeError('bad operand type')
TypeError: bad operand type

import math
def move(x,y,step,angle=0):
... nx = x + step math.cos(angle)
... ny = y + step
math.sin(angle)
... return nx,ny
...
x,y=move(100,100,60,math.pi / 6)
print(x,y)
151.96152422706632 130.0
r = move(100,100,60,math.pi / 6)
print(r)
(151.96152422706632, 130.0)

r
(151.96152422706632, 130.0)

[root@mantisbt01 python]# cat 14.py
#!/usr/bin/python

#-- coding: utf-8 --

import math
def quadratic(a,b,c):
if not ( isinstance(a,(int,float)) and isinstance(b,(int,float)) and isinstance(c,(int,float)) ):
raise TypeError('bad operand type')
delta=(b*2)-(4bc)
if delta < 0:
print('delta小于零,方程无解')
else:
x1=(-b+math.sqrt(delta))/(2
a)
x2=(-b-math.sqrt(delta))/(2*a)
print('x1=%.2f x2=%.2f'%(x1,x2))
return x1,x2

print('quadratic(2,3,1)=',quadratic(2,3,1))
print('quadratic(1,3,-4)=',quadratic(1,3,-4))
[root@mantisbt01 python]# ./14.py
delta小于零,方程无解
quadratic(2,3,1)= None
x1=2.27 x2=-5.27
quadratic(1,3,-4)= (2.274917217635375, -5.274917217635375)
[root@mantisbt01 python]#

def power(x):
... return x*x
...
power(4)
16
power(2)
4
power(3)
9
power(11)
121

def power(x,n)
File "<stdin>", line 1
def power(x,n)
^
SyntaxError: invalid syntax
def power(x,n):
... s=1
... while n > 0:
... n=n-1
... s=s*x
... return s
...
power(2,3)
8
power(3,3)
27
power(3,4)
81

power(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: power() missing 1 required positional argument: 'n'
def power(x,n=2):
... s=1
... while n > 0:
... n=n-1
... s=sx
... return
...
power(5)
def power(x,n=2):
... s=1
... while n > 0:
... n=n-1
... s=s
x
... return s
...
power(5)
25
power(3)
9
power(3,4)
81

def enroll(name,gender):
... print('name:',name)
... print('gender:',gender)
...
enroll('Sarah','F')
name: Sarah
gender: F
def enroll(name,gender,age=6,city='Beijing'):
... print('name:',name)
... print('gender',gender)
... print('age:',age)
... print('city:',city)
...

enroll('Sarah','F')
name: Sarah
gender F
age: 6
city: Beijing
enroll('Bob','M',8)
name: Bob
gender M
age: 8
city: Beijing
enroll('Adam','M',city='shanghai')
name: Adam
gender M
age: 6
city: shanghai

def add_end(L=[]):
... L.append('END')
... return L
...
add_end([1,2,3])
[1, 2, 3, 'END']
add_end(['x','y','z'])
['x', 'y', 'z', 'END']
add_end([1,2,3])
[1, 2, 3, 'END']
add_end()
['END']
add_end()
['END', 'END']
add_end()
['END', 'END', 'END']
add_end()
['END', 'END', 'END', 'END']
def add_end(L=[]):
... if L is None:
... L=[]
... L.append('END')
... return L
...
add_end()
['END']
add_end()
['END', 'END']
add_end()
['END', 'END', 'END']
def add_end(L=None):
... if L is None:
... L=[]
... L.append('END')
... return L
...
add_end()
['END']
add_end()
['END']
add_end()
['END']

def calc(number):
... sum=0
... for n in number:
... sum=sum+n*n
... return sum
...
calc([1,2,3])
14
calc([1,2,3,4])
30
calc(1,2,3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: calc() takes 1 positional argument but 3 were given

def calc(number):
... sum=0
... for n in number:
... sum=sum+n
n
... return sum
...
calc(1,2,3)
14
calc([1,2,3])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in calc
TypeError: can't multiply sequence by non-int of type 'list'
calc(1,2,3,4)
30

calc(1,2)
5
calc()
0
nums = [1,2,3]
calc(nums[0],nums[1],nums[2])
14
calc(*nums)
14

关键字参数

def person(name,age,**kw):
... print('name:',name,'age:',age,'other:',kw)
...

person('Michael',30)
name: Michael age: 30 other: {}
person('Bob',35,city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
person('Adam',45,gender='M',job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

extra={'city':'Beijing','job':'Engineer'}
person('Jack',24,city=extra['city'],job=extra['job'])
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

person('Jack',24,**extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

extra表示把extra这个dict的所有key-value用关键字参数传入到函数的kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra.

命名关键字参数

def person(name,age,**kw):
... if 'city' in kw:
... pass
... if 'job' in kw:
... pass
... print('name',name,'age',age,'other:',kw)
...
person('Jack',24,city='Beijing',addr='Chaoyang',zipcode=123456)
name Jack age 24 other: {'city': 'Beijing', 'addr': 'Chaoyang', 'zipcode': 123456}

def person(name,age,*,city,job):
... print(name,age,city,job)
...
person('Jack',24,city='Beijing',job='Engineer')
Jack 24 Beijing Engineer

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:

def person(name,age,*args,city,job):
... print(name,age,args,city,job)
...
person('Jack',24,'Beijing','Engineer')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: person() missing 2 required keyWord-only arguments: 'city' and 'job'
person('Jack',24,city='Beijing','Engineer')
File "<stdin>", line 1
SyntaxError: positional argument follows keyword argument
person('Jack',24,city='Beijing',job='Engineer')
Jack 24 () Beijing Engineer

命名关键字参数可以有缺省值,从而简化调用:

def person(name,age,*,city='Beijing',job):
... print(name,age,city,job)
...
由于命名关键字参数city具有默认值,调用时,可不传入city参数:
person('Jack',24,job='Engineer')
Jack 24 Beijing Engineer

数组

def f1(a,b,c=0,*args,**kw):
... print('a=',a,'b=',b,'c=',c,'args=',args,'kw=',kw)
...

def f2(a,b,c=0,*,d,**kw):
... print('a=',a,'b=',b,'c=',c,'d=',d,'kw=',kw)
...

f1(1,2)
a= 1 b= 2 c= 0 args= () kw= {}
f1(1,2,c=3)
a= 1 b= 2 c= 3 args= () kw= {}
f1(1,2,'a','b')
a= 1 b= 2 c= a args= ('b',) kw= {}
f1(1,2,3,'a','b')
a= 1 b= 2 c= 3 args= ('a', 'b') kw= {}
f1(1,2,3,'a','b','c')
a= 1 b= 2 c= 3 args= ('a', 'b', 'c') kw= {}
f1(1,2,3,'a','b','c',x=98)
a= 1 b= 2 c= 3 args= ('a', 'b', 'c') kw= {'x': 98}

f2(1,2,d=23,ext=None)
a= 1 b= 2 c= 0 d= 23 kw= {'ext': None}

通过一个tuple和dict,也可以调用上述函数:

args=(1,2,3,4)

kw={'d':99,'x':'#'}

f1(*args,**kw)
a= 1 b= 2 c= 3 args= (4,) kw= {'d': 99, 'x': '#'}

f2(*args,**kw)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f2() takes from 2 to 3 positional arguments but 4 positional arguments (and 1 keyword-only argument) were given

args=(1,2,3)

kw={'d':88,'x':'#'}

f2(*args,**kw)
a= 1 b= 2 c= 3 d= 88 kw= {'x': '#'}

[root@mantisbt01 python]# cat ./15.py
#!/usr/bin/python

#-- coding:utf-8 --

def product(numbers):
product=1
if numbers==():
raise TypeError
else:
for n in numbers:
product=product
n

    return product

#test
print('product(5) =',product(5))
print('product(5,6) =',product(5,6))
print('product(5,6,7) =',product(5,6,7))
print('product(5,6,7,9) =',product(5,6,7,9))

if product(5) != 5:
print('test failed!')
elif product(5,6) != 30:
print('test failed!')
elif product(5,6,7) != 210:
print('test failed!')
elif product(5,6,7,9) != 1890:
print('test failed!')
else:
try:
product()
print('test failed!')
except TypeError:
print('test successful')
[root@mantisbt01 python]# ./15.py
product(5) = 5
product(5,6) = 30
product(5,6,7) = 210
product(5,6,7,9) = 1890
test successful
[root@mantisbt01 python]#

递归函数

def fact(n):
... if n==1:
... return 1
... return n*fact(n-1)
...
fact(1)
1
fact(5)
120
fact(100)
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
fact(1000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in fact
File "<stdin>", line 4, in fact
File "<stdin>", line 4, in fact
[Previous line repeated 994 more times]
File "<stdin>", line 2, in fact
RecursionError: maximum recursion depth exceeded in comparison

[root@mantisbt01 python]# python
Python 3.6.4 (default, Mar 19 2018, 10:30:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.

def fact(n):
... return fact_iter(n,1)
...
def fact_iter(num,product):
... if num==1:
... return product
... return fact_iter(num-1,num*product)
...
fact_iter(5,1)
120
fact_iter(10,1)
3628800
fact_iter(1,1)
1
fact_iter(20,1)
2432902008176640000
fact_iter(1000,1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in fact_iter
File "<stdin>", line 4, in fact_iter
File "<stdin>", line 4, in fact_iter
[Previous line repeated 994 more times]
File "<stdin>", line 2, in fact_iter
RecursionError: maximum recursion depth exceeded in comparison

fact(10)
3628800
def fact(n):
... s=1
... for i in range(1,n+1):
... s=si
... return s
...
fact(10)
3628800
fact(5)
120
from functools import reduce
def Fact(n):
... return reduce((lambda x,y:x
y),list(range(1,n+1)))
...
Fact(5)
120
Fact(10)
3628800

汉诺塔的移动可以用递归函数非常简单地实现。

请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如:
[root@mantisbt01 python]# cat ./17.py
#!/usr/bin/python

#-- coding:utf-8 --

def move(n,a,b,c):
if n==1:
step=1
print(a,'-->',c)
return step
else:
s1=move(n-1,a,c,b)
s2=move(1,a,b,c)
s3=move(n-1,b,a,c)
step=s1+s2+s3
return step

s=move(3,'A','B','C')
print('need %d steps'%s)
[root@mantisbt01 python]# ./17.py
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
need 7 steps
[root@mantisbt01 python]#

高级特性
比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现:

L = []
n = 1
while n <= 99:
L.append(n)
n = n + 2
取list的前一半的元素,也可以通过循环实现。

但是在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。

基于这一思想,我们来介绍Python中非常有用的高级特性,1行代码能实现的功能,决不写5行代码。请始终牢记,代码越少,开发效率越高。
法1:

L=[]
n=1
while n<=99:
... L.append(n)
... n=n+2
...
L
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]

法2:

print(list(range(1,100,2)))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]

法3:

print([i for i in range(1,100,2)])
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]

1.切片
1.1 list

L=['Michael','Sarah','Tracy','Bob','Jack']
[L[0],L[1],L[2]]
['Michael', 'Sarah', 'Tracy']
[L[-1],L[-2],L[-3]]
['Jack', 'Bob', 'Tracy']
r=[]
n=3
for i in range(n):
... r.append(L[i])
...
r
['Michael', 'Sarah', 'Tracy']
L[0:3]
['Michael', 'Sarah', 'Tracy']
L[0:4]
['Michael', 'Sarah', 'Tracy', 'Bob']
L[1:3]
['Sarah', 'Tracy']
L[:3]
['Michael', 'Sarah', 'Tracy']
L[-2:]
['Bob', 'Jack']
L[-2:-1]
['Bob']
L[-1]
'Jack'
L=list(range(100))
L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
L[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
L[-10:]
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
L[10:20]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
L[2:10:2]
[2, 4, 6, 8]
L[2:10:3]
[2, 5, 8]
L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
L[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

1.2 tuple

(0,1,2,3,4,5)[:3]
(0, 1, 2)
'ABCDEFG'[:3]
'ABC'
'ABCDEFG'[::2]
'ACEG'

利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:
[root@mantisbt01 python]# cat 18.py
#!/usr/bin/python

#-- coding:utf-8 --

#def trim(s):

def trim(s):
if s[:1] != ' ' and s[-1:] != ' ':
return s
elif s[:1] == ' ':
return trim(s[1:])
else:
return trim(s[:-1])

if trim('hello ') != 'hello':
print('测试失败!')
elif trim(' hello') != 'hello':
print('测试失败!')
elif trim(' hello ') != 'hello':
print('测试失败!')
elif trim(' hello world ') != 'hello world':
print('测试失败!')
elif trim('') != '':
print('测试失败!')
elif trim(' ') != '':
print('测试失败!')
else:
print('测试成功!')
[root@mantisbt01 python]# ./18.py
测试成功!

2.迭代

d={'a':1,'b':2,'c':3}
for key in d:
... print(key)
...
a
b
c
for ch in 'ABC':
... print(ch)
...
A
B
C

from collections import Iterable
isinstance('abc',Iterable)
True
isinstance([1,2,3],Iterable)
True
isinstance(123,Iterable)
False

for i,value in enumerate(['A','B','C']):
... print(i,value)
...
0 A
1 B
2 C
for x,y in [(1,1),(2,4),(3,9)]:
... print(x,y)
...
1 1
2 4
3 9

请使用迭代查找一个list中最小和最大值,并返回一个tuple:
使用冒泡排序
[root@mantisbt01 python]# cat 19.py
#!/usr/bin/python

#-- coding:utf-8 --

def findMinandMax(L):
if (L==[]):
return (None,None)
else:
num=len(L)
for i in range(num):
for j in range(i):
if L[i]<L[j]:
L[i],L[j]=L[j],L[i]
return (L[0],L[-1])

if findMinandMax([]) != (None,None):
print('测试失败!')
elif findMinandMax([7]) != (7,7):
print('测试失败!')
elif findMinandMax([7,1]) != (1,7):
print('测试失败!')
elif findMinandMax([7,1,3,9,5]) != (1,9):
print('测试失败!')
else:
print('测试成功')
[root@mantisbt01 python]#
[root@mantisbt01 python]# ./19.py
测试成功

3.列表生成式

list(range(1,11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
L=[]
for x in range(1,11):
... L.append(xx)
...
L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[x
x for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

[x*x for x in range(1,11) if x%2 == 0]
[4, 16, 36, 64, 100]

[m+n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

import os
[d for d in os.listdir('.')]
['18.py', '19.py', '1.py', '2.py', '3.py', '4.py', '5.py', '6.py', '7.py', '8.py', '9.py', '10.py', '11.py', '12.py', '13.py', 'abstest.py', 'pycache', 'abstest2.py', '14.py', '15.py', '16.py', '17.py']

[d for d in os.listdir('/')]
['boot', 'dev', 'proc', 'run', 'sys', 'etc', 'root', 'var', 'tmp', 'usr', 'bin', 'sbin', 'lib', 'lib64', 'home', 'media', 'mnt', 'opt', 'srv', '.autorelabel']

[d for d in os.listdir('/home')]
['test2', 'test3', 'test4', 'test1']

d={'x':'A','y':'B','z':'C'}
for k,v in d.items():
... print(k,'=',v)
...
x = A
y = B
z = C

d={'x':'A','y':'B','z':'C'}
[k+'='+v for k,v in d.items()]
['x=A', 'y=B', 'z=C']
L=['Hello','World','IBM','Apple']
[s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']

L=['Hello','World',18,'IBM','Apple']
[s.lower() for s in L]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <listcomp>
AttributeError: 'int' object has no attribute 'lower'

[root@mantisbt01 python]# cat 20.py
#!/usr/bin/python

#-- coding:utf-8 --

L1=['Hello','World',18,'IBM',None]
L2=[s.lower() for s in L1 if isinstance(s,str)]

print(L2)
if L2 == ['hello','world','ibm']:
print('测试通过!')
else:
print('测试失败')
[root@mantisbt01 python]# ./20.py
['hello', 'world', 'ibm']
测试通过!
[root@mantisbt01 python]#

4.生成器

L=[x*x for x in range(10)]
L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

g=(x*x for x in range(10))
g
<generator object <genexpr> at 0x7f8ab91c8570>
next(g)
0
next(g)
1
next(g)
4
next(g)
9
next(g)
16
next(g)
25
next(g)
36
next(g)
49
next(g)
64
next(g)
81
next(g)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration

g=(x*x for x in range(10))
for n in g:
... print(n)
...
0
1
4
9
16
25
36
49
64
81
def fib(max):
... n,a,b=0,0,1
... while n < max:
... print(b)
... a,b=b,a+b
... n=n+1
... return 'done'
...
fib(6)
1
1
2
3
5
8
'done'

def fib(max):
... n,a,b=0,0,1
... while n < max:
... yield b
... a,b=b,a+b
... n=n+1
... return 'done'
...
f=fib(6)
f
<generator object fib at 0x7f8ab91c8620>

def odd():
... print('step 1')
... yield 1
... print('step 2')
... yield(3)
... print('step 3')
... yield(5)
...
o=odd()
next(o)
step 1
1
next(o)
step 2
3
next(o)
step 3
5
next(o)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
for n in fib(6):
... print(n)
...
1
1
2
3
5
8
g=fib(6)
while True:
... try:
... x=next(g)
... print('g:',x)
... except StopIteration as e:
... print('Generator return value:',e.value)
... break
...
g: 1
g: 1
g: 2
g: 3
g: 5
g: 8
Generator return value: done

练习

[root@mantisbt01 python]# cat ./21.py
#!/usr/bin/python

#-- coding:utf-8 --

def triangles():
L=[1]
while True:
yield L
L = [x+y for x,y in zip([0]+L,L+[0])]

n = 0
results = []
for t in triangles():
print(t)
results.append(t)
n = n + 1
if n == 10:
break
if results == [
[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
[1, 4, 6, 4, 1],
[1, 5, 10, 10, 5, 1],
[1, 6, 15, 20, 15, 6, 1],
[1, 7, 21, 35, 35, 21, 7, 1],
[1, 8, 28, 56, 70, 56, 28, 8, 1],
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
]:
print('测试通过!')
else:
print('测试失败!')
[root@mantisbt01 python]# ./21.py
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
测试通过!
[root@mantisbt01 python]# cat ./22.py
#!/usr/bin/python

#-- coding:utf-8 --

def triangles():
L=[1]
while True:
yield L
L = [x+y for x,y in zip([0]+L,L+[0])]

n = 0
results = []
for t in triangles():
print(t)
results.append(t)
n = n + 1
if n == 15:
break
[root@mantisbt01 python]# ./22.py
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
[1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1]
[1, 12, 66, 220, 495, 792, 924, 792, 495, 220, 66, 12, 1]
[1, 13, 78, 286, 715, 1287, 1716, 1716, 1287, 715, 286, 78, 13, 1]
[1, 14, 91, 364, 1001, 2002, 3003, 3432, 3003, 2002, 1001, 364, 91, 14, 1]
[root@mantisbt01 python]#

from collections import Iterable
isinstance([],Iterable)
True
isinstance({},Iteranle)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Iteranle' is not defined
from collections import Iterable
isinstance([],Iterable)
True
isinstance({},Iterable)
True
isinstance('abc',Iterable)
True
isinstance(x for x in range(10),Iterable)
File "<stdin>", line 1
SyntaxError: Generator expression must be parenthesized if no t sole argument
isinstance((x for x in range(10)),Iterable)
True
isinstance(100,Iterable)
False

from collections import Iterator
isinstance((x for x in range(10)),Iterator)
True
isinstance([],Iterator)
False
isinstance({},Iterator)
False
isinstance('ABC',Iterator)
False
isinstance(100,Iterator)
False
isinstance(iter([]),Iterator)
True
isinstance(iter('abc'),Iterator)
True

for x in [1,2,3,4,5]:
... pass
...
for x in [1,2,3,4,5]:
... print(x)
...
1
2
3
4
5

it=iter([1,2,3,4,5])
while True:
... try:
... x=next(it)
... print(x)
... except StopIteration:
... break
...
1
2
3
4
5

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

函数式编程

函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!

Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

1.高阶函数

传入函数
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

一个最简单的高阶函数:

abs
<built-in function abs>
abs(-10)
10
x=abs(-2)
x
2
f=abs
f
<built-in function abs>
f(-2)
2
abs=10
abs
10
abs(-2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

[root@mantisbt01 python]# python
Python 3.6.4 (default, Mar 19 2018, 10:30:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.

abs(-2)
2
f(-2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'f' is not defined
f=abs
f(-2)
2
def add(x,y,f):
... return f(x) + f(y)
...
print(add(-5,6,abs))
11

map\reduce

abs(-2)
2
f(-2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'f' is not defined
f=abs
f(-2)
2
def add(x,y,f):
... return f(x) + f(y)
...
print(add(-5,6,abs))
11

def f(x):
... return x*x
...
r=map(f,[1,2,3,4,5,6,7,8,9])
list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
r
<map object at 0x7fa94a74ce10>

L=[]
for n in [1,2,3,4,5,6,7,8,9]:
... L.append(f(n))
...
print(L)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

from functools import reduce
def add(x,y):
... return x+y
...
reduce(add,[1,3,5,7,9])
25

from functools import reduce
def fn(x,y):
... return x*10+y
...
reduce (fn,[1,3,5,7,9])
13579

from functools import reduce
def fn(x,y):
... return x*10+y
...
def char2num(s):
... digits = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
... return digits[s]
...
reduce (fn,map(char2num,'13579'))
13579

整理成一个函数

from functools import reduce
DIGITS = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def str2int(s):
... def fn(x,y):
... return x*10+y
... def char2num(s):
... return DIGITS[s]
... return reduce(fn,map(char2num,s))
...
print(str2int('13579'))
13579

from functools import reduce
DIGTS={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def char2sum(s):
... return DIGITS[s]
...
def str2int(s):
... return reduce(lambda x,y:x*10+y,map(char2num,s))
...

str2int('13579')
13579
str2int('1239')
1239

利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']:

def normalize(name):
... name=name[0].upper()+name[1:].lower()
... return name
...
L1=['adam','LISA','BarT']
Ls=list(map(normalize,L1))
print(Ls)
['Adam', 'Lisa', 'Bart']

def normalize2(name):
... name=name.lower()
... name=name.upper()
... return name
...
L1=['adam','LISA','BarT']
L2=list(map(normalize2,L1))
print(L2)
['ADAM', 'LISA', 'BART']

def normalize3(name):
... return name.capitalize()
...
L2=list(map(normalize3,L1))
print(L2)
['Adam', 'Lisa', 'Bart']
L1=['adam','LISA','BarT']
L2=list(map(normalize3,L1))
print(L2)
['Adam', 'Lisa', 'Bart']

Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积:

def prod(L):
... def fn(x,y):
... return xy
... return reduce(fn,L)
...
print('3
579=',prod([3,5,7,9]))
357*9= 945
if prod([3,5,7,9])==945:
... print('测试成功!')
... else:
... print('测试失败!')
...
测试成功!

利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:

from functools import reduce
def str2float(s):
... def fn(x,y):
... return x*10+y
... n=s.index('.')
... s1=list(map(int,[x for x in s[:n]]))
... s2=list(map(int,[x for x in s[n+1:]]))
... return reduce(fn,s1) + reduce(fn,s2)/10**len(s2)
... print('str2float(\'123.456\') =', str2float('123.456'))
...

print('str2float(\'123.456\') =', str2float('123.456'))
str2float('123.456') = 123.456

if abs(str2float('123.456') - 123.456) < 0.00001:
... print('测试成功!')
... else:
... print('测试失败!')
...
测试成功!

print('str2float(\'1.43\') =', str2float('1.43'))
str2float('1.43') = 1.43

filter

用filter求素数
计算素数的一个方法是埃氏筛法,它的算法理解起来非常简单:

首先,列出从2开始的所有自然数,构造一个序列:

2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

取序列的第一个数2,它一定是素数,然后用2把序列的2的倍数筛掉:

3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

取新序列的第一个数3,它一定是素数,然后用3把序列的3的倍数筛掉:

5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

取新序列的第一个数5,然后用5把序列的5的倍数筛掉:

7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

不断筛下去,就可以得到所有的素数。

def is_odd(n):
... return n%2 ==1
...
list(filter(is_odd,[1,2,4,6,9,10]))
[1, 9]
list(filter(is_odd,[1,2,4,5,6,9,10,15]))
[1, 5, 9, 15]

def not_empty(s):
... return s and s.strip()
...
list(filter(not_empty,['A','','B',None,'C',' ']))
['A', 'B', 'C']

def _odd_iter():
... n=1
... while True:
... n=n+2
... yield n
...

def primes():
... yield 2
... it = _odd_iter()
... while True:
... n=next(it)
... yield n
... it=filter(_not_divisible(n),it)
...

for n in primes():
... if n < 1000:
... print(n)
... else:
... break
...
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
211
223
227
229
233
239
241
251
257
263
269
271
277
281
283
293
307
311
313
317
331
337
347
349
353
359
367
373
379
383
389
397
401
409
419
421
431
433
439
443
449
457
461
463
467
479
487
491
499
503
509
521
523
541
547
557
563
569
571
577
587
593
599
601
607
613
617
619
631
641
643
647
653
659
661
673
677
683
691
701
709
719
727
733
739
743
751
757
761
769
773
787
797
809
811
821
823
827
829
839
853
857
859
863
877
881
883
887
907
911
919
929
937
941
947
953
967
971
977
983
991
997

回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数:

def is_palindrome(n):
... if str(n)==str(str(n)[::-1]):
... return n
...
out=filter(is_palindrome,range(1,1000))

print('1~1000:',list(out))
1~1000: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, 525, 535, 545, 555, 565, 575, 585, 595, 606, 616, 626, 636, 646, 656, 666, 676, 686, 696, 707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 808, 818, 828, 838, 848, 858, 868, 878, 888, 898, 909, 919, 929, 939, 949, 959, 969, 979, 989, 999]
out=filter(is_palindrome,range(1,200))
print('1~200:',list(out))
1~200: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]

貌似不能判断最后一个元素

out=filter(is_palindrome,1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
out=filter(is_palindrome,range(1))
print('1:',list(out))
1: []
out=filter(is_palindrome,range(1,2))
print('1:',list(out))
1: [1]
out=filter(is_palindrome,range(1,3))
print('1~3:',list(out))
1~3: [1, 2]
out=filter(is_palindrome,range(1,11))
print('1~3:',list(out))
1~3: [1, 2, 3, 4, 5, 6, 7, 8, 9]
out=filter(is_palindrome,range(1,12))
print('1~3:',list(out))
1~3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11]

法2

def is_palindrome(n):
... a=list(str(n))
... b=list(str(n))
... b.reverse()
... return a==b
...

out=filter(is_palindrome,range(1,11))
print('1~3:',list(out))
1~3: [1, 2, 3, 4, 5, 6, 7, 8, 9]
out=filter(is_palindrome,range(1,12))
print('1~3:',list(out))
1~3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11]

a=range(1,5)
a
range(1, 5)
list(a)
[1, 2, 3, 4]

sorted

sorted([2,4,-6,21,9])
[-6, 2, 4, 9, 21]
sorted([2,4,-6,21,-9])
[-9, -6, 2, 4, 21]
sorted([2,4,-6,21,-9,0])
[-9, -6, 0, 2, 4, 21]
sorted([2,4,-6,21,-9,0],key=abs)
[0, 2, 4, -6, -9, 21]
sorted(['Bob','about','Zoo','Credit','kel'])
['Bob', 'Credit', 'Zoo', 'about', 'kel']

sorted(['bob','about','Zoo','Credit'],key=str.lower)
['about', 'bob', 'Credit', 'Zoo']

sorted(['bob','about','Zoo','Credit'],key=str.lower,reverse=True)
['Zoo', 'Credit', 'bob', 'about']

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

按分数排序

sorted(L,key=lambda x:x[1])
[('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]

按名字排序

sorted(L,key=lambda x:x[0])
[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]

--结束END--

本文标题: python3.6.4的学习

本文链接: https://www.lsjlt.com/news/191452.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python3.6.4的学习
    [root@mantisbt01 python]# ./13.pyPlease input your name:hadoopPlease input your height(m):1.80Please input your height(k...
    99+
    2023-01-31
  • python3.6.4安装opencv3.4.2的实现
    目录python3.6.4安装opencv3.4.2使用pip安装OpenCVPython3.6/Anaconda下安装OpenCV 3.4.2问题1. Anaconda 下使用 c...
    99+
    2022-11-11
  • Mysql的学习
    数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓库。 3. 数据库的特点: 1. 持久化存储数据的。其实数据库就是一个文件系统 2. 方便存储和管...
    99+
    2018-06-07
    Mysql的学习
  • JDBC的学习
        前短日子花了挺长一段时间学习了MySQL、Oracle数据库之后,现在就要来学习JDBC了,下面做了一些自己学习的笔记。   &...
    99+
    2022-10-18
  • scrapy 爬虫学习二[中间件的学习]
    scrapy源码解析参考连接:https://www.jianshu.com/p/d492adf17312 ,直接看大佬的就行了,这里便就不多说了。 今天要学习的是:Scrapy框架中的download middlerware【下载中间件...
    99+
    2023-01-31
    爬虫 中间件 scrapy
  • 机器学习:无监督学习
    文章目录 线性学习方法聚类ClusteringKmeansHAC 分布表示降维PCAMatrix FactorizationManifold LearningLLELaplacian Eigenmapst-SEN ...
    99+
    2023-08-30
    机器学习 无监督学习
  • 【李沐】动手学深度学习 学习笔记
    目录 【内容介绍】动手学深度学习-基于pytorch版本【脉络梳理】预备知识数据操作数据预处理线性代数矩阵计算自动求导 线性神经网络线性回归深度学习的基础优化算法线性回归的从零开始实现线...
    99+
    2023-08-31
    深度学习 学习 python
  • Java学习星球,Java学习路线
    目录 一、Java学习路线二、学习计划三、为何会有Java学习星球?四、加入星球后,你可以得到什么?五、如何加入Java学习星球?六、打卡挑战 大家好,我是哪吒,一个靠着热情攀登至C...
    99+
    2023-08-31
    java 学习 开发语言
  • MSP430的学习(3)
    MSP430单片机具有基本定时器(Basic Timer1),经常用于低功耗当中,他工作的目的就是支持软件和各种外围模块工作于低频率 低功耗条件下。通过对SMCLK或者ACLK进行分频,向其他外围模块提供低频控制信号。     Bacis ...
    99+
    2023-01-31
  • jbpm学习
    转http://linliangyi2007.javaeye.com/blog/176345本片文章,我们将从业务流程的设计开始,通过带领大家完成一个完整工作流的程序设计,来学习jPDL的使用。业务流程设计这里我们实现一个相对简化的公司借款...
    99+
    2023-06-03
  • EventSource学习
    一、EventSource的基本概念 EventSource是HTML5中的一种新的API,用来实现服务器端向客户端推送事件。相比于常规的轮询方式,EventSource可以实现更加高效、低延迟的数据...
    99+
    2023-09-21
    学习 服务器 网络
  • Python 学习
    第一次学习python查阅的资料一,熟悉基本在正式介绍python之前,了解下面两个基本操作对后面的学习是有好处的:1)基本的输入输出 可以在Python中使用+、-、*、/直接进行四则运算。11+3*3查看全部10(2)导入模块 使用im...
    99+
    2023-01-31
    Python
  • 学习oracle
    下载oracle网址http://www.oracle.com/technetwork/index.html根据你的机型选择下载安装不同版本,首先你得注册一个oracle账户才能下载。官网EX Editio...
    99+
    2022-10-18
  • xtrabackup学习
    xtrabackup安装 https://www.percona.com/downloads/XtraBackup/LATEST/ 下载相应版本包  wget ftp://rpmfind...
    99+
    2022-10-18
  • redis学习
    邻近年底,决定辞职,自认为即使没有找到很满意的工作,也应该不会差。事实是有点自信回头,虽然找到了工作,但途中也受到了打击,不得不承认学习的激情不知何时,渐渐熄灭。直到认识一个女生,她让我对未来充满着信心。曾今何时,也在这写过一些...
    99+
    2021-09-30
    redis学习
  • nfs学习
    一、实验要求    (1) nfs server导出/data/application/web;    (2) nfs cli...
    99+
    2022-10-18
  • Oracle学习
    001——在现有的表上新建表Create table t2as select ename name,sal salary from emp;当t2诞生时就会有子查询中所查出的数据。如果想改变列的名...
    99+
    2022-10-18
  • OSPFv3学习
     OSPF是一种链路状态路由协议。它具有标准开放、收敛迅速、无环路、便于层级化设计等众多优点。IPv4网络中广泛使用的OSPFv2协议由于在报文内容、运行机制等方面与IPv4地址联系得过于紧密,大大制约了它的可扩展性和适应性。在IPv6环...
    99+
    2023-01-31
  • Python学习
    Python是创始人吉多•范罗苏姆(Guido van Rossum)在1989年圣诞节期间,在阿姆斯特丹,为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,而在给自己新创造的计算机语言起名字的时候,由于其是,自于七十年代风靡全球的英国六...
    99+
    2023-01-31
    Python
  • 学习python
    亲爱的朋友:     欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着python越来越流行,资料也越来越多,...
    99+
    2023-01-31
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作