|
1.执行脚本的两种方式 Python a.py 直接调用Python解释器执行文件 chomd +x a.py ./a.py #修改a.py文件的属性,为可执行,在用 ./ 执行a.py 文件 2、简述位、字节的关系 1bytes=8bit ,2**8=256,可以代表256中变化,
4 N {8 B/ y# ~% g; K/ i3、简述 ascii、unicode、utf-8、gbk 的关系ascii 是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用 二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符, Unicode是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2**16=65556个,称为万国语言,特点:速度快,但浪费空间, 可以用在内存处理中,兼容了utf-8,gbk,ASCII, utf-8 为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,特点;节省空间,速度慢,用在硬盘数据传输,网络数据传输,相比硬盘和网络速度,体现不出来的, gbk 是中文的字符编码,用2个字节代表一个字符, - f7 }7 U: z/ Q9 R T, y
4、请写出 “李杰” 分别用 utf-8 和 gbk 编码所占的位数utf-8 是3 bytes=24bit gbk 是2bytes=16bit ! x2 [& q5 }7 N" t9 u% i, d
5、Pyhton 单行注释和多行注释分别用什么?单行注释 # 多行注释 """ """三个双引号或是三个单 引号把要解释的内容放中间, ‘’‘ ’’’ ( l' ?. m! J6 d2 ~4 s1 J
6、声明变量注意事项有那些?万能避错规则,以小写字母开头命名,可以加上下划线,或者数字, 不能以Python的关键字命名, 能表明变量的意义
6 R' e) U! R8 L! J% L0 e D3 p8、如何查看变量在内存中的地址?$ d( |7 d" b* I( r! {# z
z=1; s# |8 N8 N5 |
print(id(z))5 O3 X7 k7 A, x% Y" e3 [
9、执行 Python 程序时,自动生成的 .pyc 文件的作用是什么?.pyc 是编译py文件后的二进制文件,用于加速运行
; T1 k9 x% \& M& `1 i3 F6 e* T10、写代码7 A9 P! H' C. C+ N0 a$ A
a.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!4 r7 D- D( y O
name=input('name:').strip()$ N1 d) c+ y8 f+ e- A( J* s
pwd=input('pwd:').strip()
3 d& [1 \3 n5 b, Wif name=='seven' and pwd=='123' :9 \* W+ d+ C, v2 @$ l H( m. [
print('ok')
' e. o. N3 H; c1 _* }8 Z9 zelse:
6 |- ]2 ~7 [2 [7 H- i' P print('error'): d7 V- P& L; Q( _
. a( w. ?3 h6 n0 @6 qb.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次while循环: ^" @+ a( x4 ?
count=1
# N' L. W+ X' e# @" [/ Bwhile count<=3 :& X8 r8 G; x! D
name = input('name:').strip()" m8 ] b5 l7 F; I" r
pwd = input('pwd:').strip()/ a7 i p5 b! [% L
. e/ S6 E, I2 _7 l8 z$ F& c# t
if name=='seven' and pwd=='123' :. a" B6 R0 ?- ~1 _( g
print('ok')
: c! p- _) v1 t else:$ |. V+ [) Y, ?" f+ f4 [
print('error')0 L/ S4 X+ I" H- H$ d
count += 11 F8 }* Y( x; U i; j2 B
for循环:- j' l( ? j4 s Y2 F. G! v1 O' x, x8 t
for count in range(3) :
; b n+ U" o! X& v+ L: R name = input('name:').strip()- R2 R7 k1 c+ d* w
pwd = input('pwd:').strip()- o; h) X/ o% H7 X; X
* g4 G' J8 r+ s if name=='seven' and pwd=='123' :+ u; m( R% c$ ]& V1 ^/ v
print('ok')- w% J* T) z; F' I/ C
else:
( m9 z; P+ {" p, ]' m$ ^& }' k print('error')9 W: ?+ S$ Y, B2 P. ]/ L
count += 1c.实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次while 循环- E, K6 L7 J" S1 E4 X& d
count =1$ y+ u: F( ^) a' U
while count<=3 :3 {) Z8 @3 w* _; v9 @) [
name = input('name: ')
) f! g; x+ A9 X9 v# x- B7 \ pwd = input('pwd: ')
, c! n( s. O& K8 U9 a, I# L if name == 'seven' and pwd == '123' or name == 'alex' and pwd == '123':& D1 j: P2 z: J! {; y
print('ok')
' Q9 E! E% h! Q+ h else :
- n6 ?% ^8 W$ \1 B1 N print('error')* Y @! i# A3 X8 P/ Z6 h4 w
count+=1
8 K( t$ h v& |( O) B; o/ a6 b+ cfor循环
6 |* \6 _; q7 s( N& @; X/ \! W Zfor count in range(3) :( \% i3 U, b# ]1 i
name = input('name: ')
0 O5 s; @( l# m7 ?1 \; R* i pwd = input('pwd: ')8 H' g( w( S" L; B
if name == 'seven' and pwd == '123' or name == 'alex' and pwd == '123':
& k; Z% h+ S) q print('ok')$ f' W, ^6 d* ?) R" a
else :0 G: j, h, r5 K
print('error')
+ W+ j6 i, ]0 H- l0 r* _5 [ count+=111、写代码- |2 u2 Y- c* W) T$ ~7 _3 n# s
a. 使用while循环实现输出2-3+4-5+6...+100 的和. M+ R) I2 ]+ _4 M, q: |( M1 c! R
count=2
) |% X; c) e: I- T7 A, v4 `num=0
- W4 w/ l& `" Jwhile count<=100 :' q1 N+ j5 u6 E0 {! B, b5 C
if count % 2 ==0 :
; m5 d5 F4 g" t num=count+num
1 O5 M- V* N/ {9 B7 ?4 }5 y count+=1
R, ` W* v6 o. R" N else:
& ?/ V# G; x$ I- x num=num-count9 b: G% n8 N }# B* w. j) ?. L) {
count+=10 ]! G t. ?9 y* [
print(num)
0 j+ v. T% x; I( c# I. ~" U8 i& u" s
b. 使用for循环和range实现输出 1-2+3-4+5-6...+99 的和
: o5 {, ?4 Y4 q- W# x num=03 M+ q7 l' F" q3 V
count=1; v9 S* U. a4 ]' Q* o8 d
for count in range(100) : c; z$ z; R ~5 `: x& u0 C
if count % 2 == 0 :
" ~4 u5 y; {; g6 W9 G- V5 z- v num=num - count
) `# I0 O& \- y6 m else :2 e: d$ g5 G4 Y3 m
num=num+count
, ~$ K2 T0 R& p2 Sprint(num) c. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12 , ~ w! V0 L/ h
count=1/ x- C5 @+ P T5 Q" K/ ^2 c4 ^+ g
while count < 13 :1 J6 h& q7 `+ h2 g
if count !=6 :
/ I( \! O6 w% B if count !=10 :, Q$ E- S% t+ p4 b) D9 S+ i% ?
print(count)
, M' N8 L; r8 W( @1 e, d3 d. }( k
count+=1d. 使用 while 循环实现输出 1-100 内的所有奇数
( r$ g' y. E; K: Z8 k8 Z* J7 Efor i in range(101) :
I0 D: `3 l" ?, K- L- E ` K if i %2 != 0 :
% @, v; M4 u( a print(i)8 u! f# I, d$ P7 Z i% `+ I
% n f1 f+ X7 h$ m9 Fcount=0
}% `& H% m) s6 N; l5 s( J6 vwhile count<100 :9 p1 |* t( s9 n; I5 a! q- U- c
if count %2 != 0 :
& V9 E9 \/ T' U7 }# [ print(count)! j5 e/ L6 l6 f& c0 H
count += 10 @% m. F3 }$ ?7 v3 d
& H% V( U5 s7 U* L' ]e. 使用 while 循环实现输出 1-100 内的所有偶数' D* v) y! p0 h0 U8 C/ n- p$ ~! j; {
for i in range(100) :+ d0 G* p- _' e! L
if i %2 == 0:' r- w# \% I) w) ^. i
print(i)
3 m2 s& V T6 @
/ j* |2 `2 S( c) \- C% |" n5 w* icount=0
. ?% P4 l( D0 V3 m; n- p3 @3 owhile count<100 :
. ?' |2 n' ]1 R1 K if count%2 == 0 :
" F8 {$ n3 g* d; s6 P, g$ n print(count)
# \; {: |( y* E! |& M count+=1
; K) z, p0 v. @; `/ M8 j
5 j; z" R! l: O# }- C0 j2 O12、分别书写数字 5,10,32,7 的二进制表示 \ w% j, Q& O
+ E! s5 V( h1 F" G& u4 wprint(bin(5))二进制 0b101
* u; M+ R, Q9 H: i8 @* n( r- Mprint(hex(10))十六进制 0x5
- o( {, W m" Jprint(oct(5)) 八进制 0o5
( E v, k; P% w" u0 h0 B14、现有如下两个变量,请简述 n1 和 n2 是什么关系? n1 = 123 n2 = 123n1,n2是连个不同的变量名,但值都一样,都指向了同一个内存地址, 8 ?7 G' q5 u9 z/ _8 j& [
16、现有如下两个变量,请简述 n1 和 n2 是什么关系? n1 = 123456 n2 = n1n2赋值给n1.指向同一个内存地址,
" P/ K' }2 a# F17、如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示? n1=5: B! b' _5 j- J! |
print(int.bit_length(n1)) 结果 3
- [. @0 l, G L/ b' ?
& r- f/ s" w0 c/ q a8 c18、布尔值分别有什么?False .Ture ,或1 和0 # O) J" M; }- q
20、写代码,有如下变量,请按照要求实现每个功能 name = " aleX"1 m" D- b1 e: i* y, F
a. 移除 name 变量对应的值两边的空格,并输入移除有的内容print(name.strip())9 g* O8 s" N) ?" H" Y( @/ O
, U0 k$ z; p+ G+ U
b. 判断 name 变量对应的值是否以 "al" 开头,并输出结果
# l5 j5 D) w6 a- lprint(name.startswith('al')); o$ h* R# a2 J* M% b
c. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果print(name.endswith('x'))
; N9 s z+ d: u( ~/ S/ r! ~0 r+ Ed. 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
) u8 O$ [% C0 F' m& M* \print(name.replace('l','p')) apex P3 ~" ]' I0 Z
e. 将 name 变量对应的值根据 “l” 分割,并输出结果。. k( B6 v) J7 w- w" h
print(name.split('e')) ['al', 'x '] 列表( d- _% R5 F f7 {$ f; \+ M$ n
9 m( j1 L- i4 T1 {$ jg. 将 name 变量对应的值变大写,并输出结果print(name.upper()) print(name.lower())i. 请输出 name 变量对应的值的第 2 个字符?print(name[1])
; X4 v5 D. I- M7 W0 p
" G! \, y$ ^ m7 `( N, m( g$ fj. 请输出 name 变量对应的值的前 3 个字符?print(name[:3])k. 请输出 name 变量对应的值的后 2 个字符? l. 请输出 name 变量对应的值中 “e” 所在索引位置?print(name.index('e')): [% r/ z! g+ t: [; u* @: I; n
21、字符串是否可迭代?如可以请使用 for 循环每一个元素?/ x* h- v+ I" E0 x6 d! I
依赖索引
/ `2 G- h1 T. O; E- Z& Dname = "Alex "
- F0 |/ Y, e2 N) d7 Hfor i in range(len(name)) :
3 t2 K+ X( n8 i- R print(name)+ J0 U6 [- i: J3 T1 g3 h7 S' z
for i in name:
) `" [% D# c4 D' ` print(i)22、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain']print('_'.join(['alex', 'eric', 'rain'])) alex_eric_rain- e/ p4 N# E1 S6 [, i0 g5 D
22、写代码,有如下列表,按照要求实现每一个功能 li = ['alex', 'eric', 'rain']li = ['alex', 'eric', 'rain']5 S6 h& Q/ m% U8 C8 R
print(len(li))b. 列表中追加元素 “seven”,并输出添加后的列表li.append('seven') / ?1 i8 d3 X4 n5 ^$ e2 |0 k
print(li)5 Y/ c4 M. Z7 t
['alex', 'eric', 'rain', 'seven']; p* b8 N! r5 M
c. 请在列表的第 1 个位置插入元素 “Tony”,并输出添加后的列表li.insert(0,'TONY')( o4 @" ?! T+ R H) y+ U; ?
print(li)d. 请修改列表第 2 个位置的元素为 “Kelly”,并输出修改后的列表li[1]=('killy')
" ^9 P3 `2 C( L& H- h1 o7 cprint(li)6 v9 }6 D# ?/ B3 S: b: x4 w2 N
e. 请删除列表中的元素 “eric”,并输出修改后的列表li = ['alex', 'eric', 'rain']$ M8 M- b. P3 o2 [- P! {* x$ [
li.pop(1)* V! P! O( m& j. {/ V4 F
print(li) ['alex', 'rain']
/ i. x7 c) g' y指名道姓的删除li = ['alex', 'eric', 'rain']* O t `% X- A ~
li.remove('alex')) ~- J( L+ o3 q! a9 s/ z' x
print(li)
' V; S/ \( o' y" C" L( A- Yf. 请删除列表中的第 2 个元素,并输出删除的元素的值和删除元素后的列表li = ['alex', 'eric', 'rain'] J" R, }! l9 M0 ^
print(li.pop(1))! F [% U) p1 }* m% V. ^& n
print(li)! A& A( m6 V: J6 @: v# I
0 e2 t! z) d! P. T H0 ?8 f( yeric
1 q8 W+ u! }4 N# N, B['alex', 'rain']h. 请删除列表中的第 2 至 4 个元素,并输出删除元素后的列表li = ['alex', 'eric', 'rain']
2 P/ i z( V5 adel li[1:]
9 c/ _9 `7 w: G0 [print(li) k. 请使用 enumrate 输出列表元素和序号(序号从 100 开始)
1 p3 _# U6 C4 M7 m9 ~: cli = ['alex', 'eric', 'rain']0 w# u$ E. c" W0 c3 P5 H
for k,v in enumerate(li,1):
# t2 J$ y3 J! F" \2 {) Y: _9 j0 v" F print(k,v)23、写代码,有如下列表,请按照功能要求实现每一个功能 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
! R" \' \9 ]6 W5 ga. 请输出 “Kelly”
, f# \+ m2 z/ a9 ^li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
. Z) ^" y0 L$ b4 }print(li[2][1][1])
' ]4 ^' U/ ]0 S/ Xb. 请使用索引找到 'all' 元素并将其修改为 “ALL”
8 F/ a* z- h5 e j6 Oli[2][2]='ALL' p2 s/ o% ?! l- q8 [; x1 B. }
print(li)
9 S% k \) X5 k0 C24、写代码,有如下元组,按照要求实现每一个功能 tu = ('alex', 'eric', 'rain'): Z: Z- @9 h# A
a. 计算元组长度并输出tu = ('alex', 'eric', 'rain')
9 }9 F7 v) a/ |print(len(tu)) |# A0 a5 K( @/ P4 W0 Z
b. 获取元组的第 2 个元素,并输出, p+ k- }6 r8 n" A
print(tu[1])" w% D: i* H+ k: N. `
e. 请使用 for、len、range 输出元组的索引
0 ^; k: G8 ^1 b1 s- x) Afor i in range(len(tu)) :
7 K3 G7 _" O% q7 O" Z/ F, Y print(tu.index(tu))f. 请使用 enumrate 输出元祖元素和序号(序号从 10 开始)' i$ y" T& q) d" o" S% b p. {
for k,v in enumerate(tu,10) :. S' ?8 H* O( c/ o& d
print(k,v)
i/ ^; L, a- J y( g) N% J10 alex
! w/ [: a6 F# Q8 R) W6 |" T11 eric9 R( {. T k3 B+ W9 r; A
12 rain: q9 a0 q: |7 X# @- l
2 Z+ H. f# ^7 Q. }- B! p% W. Pfor k in enumerate(tu,10) :
6 D" p4 {* I) z8 o/ [2 B print(k)
+ j2 ~) c3 C# i% S(10, 'alex')$ R. x- F- R1 c1 e
(11, 'eric')
4 u6 d: O' z# H8 \6 r( x; z(12, 'rain')
4 d/ F& `5 k. ~5 ^& J
6 v& D. D2 [0 U3 o+ s% ]$ K3 E; Z/ x4 F$ C; J, Q
25、有如下变量,请实现要求的功能
1 F6 l/ {% O- xtu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])c. 请问 tu 变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”元组,不可以
) b ~( X/ d. N* ]* Nd. 请问 tu 变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”列表,可以
- q. X/ g5 V) o, H' Etu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])6 @/ I* _; p0 V8 q/ ~! x
res=tu[1][2]['k2'].append('seven')
, ?% p* F6 N& ]4 E* k5 q5 @; q9 p" |5 j e6 U+ j2 X3 d
print(tu)
" i5 [! `$ ~+ S2 s4 V26、字典
, r- s- ] u( fdic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}for i in dic: e5 B4 u4 w8 N
print(i)b. 请循环输出所有的 value
- u9 t7 c3 ~" ]( [for i in dic:
$ D! X" Q- t% g# L# {2 e5 f print(dic)& W* ~- ]* B6 @
c. 请循环输出所有的 key 和 valuefor i in dic:0 p4 e0 j* a2 t7 a1 e J/ ?. Y
print(i,dic)
! H. w+ p% q. p0 Q9 Ld. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典1 f, d1 z0 Z! B9 o0 F5 a6 ^0 [
dic['k4']='v4'
- k1 L/ n) z3 I/ k5 y9 Vprint(dic)- ~ t. b3 ]/ H5 p1 [
e. 请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典# F3 L# ~3 A7 R! y( y7 E
dic['k1']='alex'
& j0 V. P- ]7 J3 \# eprint(dic)f. 请在 k3 对应的值中追加一个元素 44,输出修改后的字典
$ |+ D/ M p g( w9 I: Wdic['k3'].append(44)$ {; ?5 S% Y: `, I& k4 f
print(dic)7 Q- t& C: X% s6 g- R
# }4 T5 y! F: H
g. 请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典; n. p2 a0 N3 {, O u" L' J& ?
dic['k3'].insert(0,44)' X# \7 [. z2 X4 O
print(dic)$ E. p& ^3 C$ u
27、转换2 l y9 L9 z# F0 Z5 F- \6 h
a. 将字符串 s = "alex" 转换成列表 s = "alex"# G# I8 J- R% s; n8 \7 x
9 U8 c3 n2 @: E
print(list(s))b. 将字符串 s = "alex" 转换成元祖
6 S6 @ y( O4 x% E: W) w8 [s = "alex"' o( b% q; C8 _) X, y
print(tuple(s))
: ^# Y% w/ C6 g v5 g7 Q6 ]: i" W- O4 t
b. 将列表 li = ["alex", "seven"] 转换成元组
( ]* z0 I2 G! D6 ]. gli = ["alex", "seven"]
6 y, ~" o; I& \1 C4 P ~% a$ xprint(tuple(li))c. 将元祖 tu = ('Alex', "seven") 转换成列表; f$ n. Z$ ?# L; ?, {/ R* f
tu = ('Alex', "seven")
7 c. d" \8 R6 m+ Jli=list(tu)! \( d. N* r. T; Y* c( A+ _
print(li)
+ u# j S; b& w7 N7 s* f* m, E
5 m+ J, i7 ~3 }9 Z3 |
d. 将列表 li = ["alex", "seven"] 转换成字典且字典的 key 按照 10 开始向后递增' }; r. f" @" y2 l* o' k% I
/ z4 B7 T' r7 w1 c+ u
dic={}* C$ ^& P) b& I& V: q! D% L! o
for k,v in enumerate(li,10) :----li要放在前面,序号放在后面6 E. u1 F& A0 Q6 L, C
dic[k]=v+ i0 v1 X( _5 Z, w' H
print(dic)27、转码n = "老男孩"! m1 ?! p$ F2 T1 }% i3 o
a. 将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8 编码字符串,再输出n = "老男孩", c: |6 x, }0 _+ ~
a=n.encode('utf-8') + f3 h/ `* d8 T
print(a)
7 _9 A: h% ^' U, D1 J$ V2 [& [ P$ kb=a.decode('utf-8')
( F E. \) ~/ L- K5 tprint(b)
# Q3 J. Q' J( t; e, wb. 将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出a=n.encode('gbk')3 b( P R, P! t8 \# p
print(a)3 B! ]' A( b, y* E& ^$ b
b=a.decode('gbk')
3 ~1 S' ]0 B) x0 n( mprint(b)28、求 1-100 内的所有数的和3 k- N2 [; B$ D: e
count=1! f& h" {+ c7 H* }2 p. i }
sum=0; x% a* a: R+ f# }3 `
for i in range(100) :
" y( C9 L8 w9 i+ K2 ` sum=sum+count
1 E; d$ N* }( c count+=1" k8 V( T5 a3 H3 }- d' c
print(sum)
1 i5 G, N! [3 t9 W/ U; a# Y) @* M$ v8 ]/ P
count=1
* j8 K. M% D* A0 R6 ?' esum=0, J4 ]# d" c$ ]4 ~
while count<=100 :
A# Y: F4 O. g/ T" x9 q( P! B sum+=count) {" V" G0 @* {- f/ d
count+=10 X1 y) @$ Q6 Q/ }$ M
print(sum)29、元素分类
) N* V. }& Y3 H: _( _! g1 C有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个 key 中,
5 A* u% d6 H5 z8 D$ R# `将小于 66 的值保存至第二个 key 的值中。
5 P, L2 G8 e1 ]: j3 h, r, a即: {'k1': 大于 66 的所有值, 'k2': 小于 66 的所有值}
/ Z( d' c, y" e- g9 ~* F) G$ _li=[11,22,33,44,55,66,77,88,99,90]
5 @+ T9 o8 y$ |8 ddic1={
9 o1 \) m$ n3 q5 L: F& Y 'max':[],3 b! ]5 q( Y; w
'min':[]
% s; R# g8 o' ^% I: O; H, m- E} W5 I8 D" s' ?4 n7 m3 @
for i in li :
% D4 Y7 S& E5 V4 p6 ? if i <66 :
8 A' X/ X: M2 a1 C dic1['min'].append(i)
3 W- l, }5 H1 b2 j else:
# @' }3 K! b" s dic1['max'].append(i); K! U" C; N8 }' }" j G3 b
print(dic1)
( ]; y, ?( W1 |+ X0 ~5 j* [' U0 O% B( J
---{'max': [66, 77, 88, 99, 90], 'min': [11, 22, 33, 44, 55]}
: L n; ?. A7 j$ k x0 m' t |