一、执行Python脚本的两种方式
- #python name.py Python解析器
- #chmod +x name.py
二、简述位、字节的关系
1Byte=8bit
三、简述ascii、unicode、utf-8、gbk的关系
ascii是美国最初的英文编码方式
gbk是对ascii的中文扩展,只要第一个字符是大于127就固定表示这个汉字的开始,不管后面跟的是不是扩展字符集里的内容,扩展之后的编码方案被称为gbk标准
Unicode是ISO为了统一地球上所有文化、所有字母和符号的编码,一个中文字符占2个字节
Utf-8就是在互联网上使用最广的一种Unicode的实现方式,为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有的字符了,utf-8是一个中文字符占3个字节
四、请写出“李杰”,分别用utf-8和gbk编码所占的位数
utf-8:2个中文=6个字节=48bit
gbk:2个中文=4个字节=32bit
五、Python单行注释和多行注释分别用什么?
单行注释:#
多行注释:“”
六、声明变量注意事项有哪些?
- 变量只能是字母、数字或者下划线的任意组合
- 变量名的第一个字符不能是数字
- 最好不要重复Python内置的东西
- 以下关键字不能声明为变量名:and、as、assert、break、class、continue、def、del、elif、else、except、exec、finally、for、from、global、if、import、in、is、lambda、not、or、pass、print、raise、return、try、while、with、yield
七、如何查看变量在内存中的地址?
name = ‘Alex’
id(name)
八、执行Python程序时,自动生成的.pyc文件的作用是什么?
pyc文件是PyCodeObject的一种持久化保存方式,是Python、执行前生成的变异字节码文件
九、写代码
- 实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登陆成功,否则登陆失败!
username = input('请输入用户名 : ')
password = input('请输入密码: ')
if username == 'username' and password == 'password':
print('登陆成功 !')
else:
print('用户名或密码错误!')
- 实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
- 实现用户输入用户名密码,当用户名为seven或alex且密码为123时,显示登录成功,否则失败,失败时允许重复输入三次
error_num=0
while True:
username = input('请输入用户名 : ')
password = input('请输入密码: ')
if username == 'wangxue' or username == 'wang':
if password == 'password':
print('登陆成功 !')
break
else:
print('用户名或密码错误!')
error_num += 1
if error_num == 3:
exit()
else:
continue
十、写代码
1、使用while循环实现输出2-3+4-5+6...+100的和
sum = 0
for i in range(2,101):
if i % 2 == 0:
sum += i
else:
sum -= i
print(i,sum)
print('sum:',sum)
2、使用for循环和range实现输出1-2+3-4+5-6...+99的和
sum = 0
for i in range(1,100):
if(i%2==0):
sum -= i
else:
sum += i
print(i,sum)
print('sum:',sum)
3、使用while循环实现输出1,2,3,4,5, 7,8,9, 11,12
n=0
while(n <>
n+=1
if(n == 6 or n == 10):
print(end=' ,')
continue
else:
print(n,end=',')
4、使用while循环实现输出1-100内的所有奇数
n = 0
s = 0
while(s <>
s = 2*n+1
n+=1
print(s,end=' ')
for i in range(1,100,2):
print(i,end=' ')
print('\n')
5、使用while循环实现输出1-100内的所有偶数
m = 1
h = 0
while(h <>
h = 2*m
m+=1
print(h,end=' ')
十一、分别书写数字5,10,32,7的二进制表示
a = [5,10,32,7]
for i in a:
print(i,'(十进制):',bin(i))
print(i,'(八进制):',oct(i))
print(i,'(十六进制):',hex(i))
十二、简述对象和类的关系(可用比喻的手法)
对象是例的实例化
十三、现有如下两个变量,请简述n1和n2的关系,n1=123,n2=123?
内存地址相同,引用同一个内存地址
十四、现有如下两个变量,请简述n1和n2的关系,n1=123,n2=123?
内存地址相同,引用同一个内存地址
十五、如有以下变量n1=5,请使用int提供的方法,得到该变量最少可以用多少个二进制位表示? n1=5
v=int(n1.bit_length())
print(v)
print(bin(n))
十六、布尔值分别有什么
真、假
True、False
0、1
十七、阅读代码,请写出执行结果
a='alex'
b=a.capitalize()
print(a)
print(b)
请写出输出结果:alex
Alex
十八、写代码,有如下变量,请按照要求实现每个功能
name='alex'
1、移除name变量对应的值两边的空格,并输入移除有的内容
2、判断name变量对应的值是否以“al”开头,并输出结果
3、判断name变量对应的值是否以“X”结尾,并输出结果
4、讲那么变量对应的值中的“l”替换为“p”,并输出结果
5、讲name变量对应的值根据“l”分割,并输出结果
6、请问,上一题e分割之后得到值是什么类型
7、将name变量对应的值变大写,并输出结果
8、将name变量对应的值变小写,并输出结果
9、请输出name变量对应的值的第2个字符
10、请输出name变量对应的值得前3个字符
11、请输出name变量对应的值的后2个字符
12、请输出name变量对应的值中“e”所在索引位置
解答:
name = ' aleX'
print('name=',name)
print('name=',name.strip()) #移除空格
print('name=',name.startswith('al')) #是否以al开头
print('name=',name.endswith('X')) #是否以X结尾
print('name=',name.replace('l','p')) #p替换l
print(name.split('l')) #以l为界分割
print(type(name.split('l'))) #以l分割之后的值类型
print('name=',name.upper()) #转化大写字母
print('name=',name.lower()) #转换小写字母
print(name[1]) #输出变量值对应的第二个字符
print(name[:2]) #输出前三个字符
print(name[-2:]) #输出后两个字符
print(name.index('e'))
十九、字符串是否可迭代?如可以请使用for循环每一个元素
for i in name: #字符串迭代,使用for循环每一个元素
print(i,end=' ')
二十、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex','eric','rain']
li = ['alex','eric','rain'] #利用下划线讲列表的每一个元素拼接成字符串
print('_'.join(li))
二十一、写代码,有如下列表,按照要求实现每一个功能
li=['alex','eric','rain']
1、计算列表长度输出
2、列表中追加元素“seven”,并输出添加后的列表
3、请在列表的第1个位置插入元素“Tony”,并输出添加后的列表
4、请修改列表第2个位置的元素为“Kelly”,并输出修改后的列表
5、请删除列表中的元素“eric”,并输出修改后的列表
6、请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表
7、请删除列表中的第2个元素,并输出删除元素后的列表
8、请删除列表中的第2至第4个元素,并输出删除元素后的列表
9、请将列表所有的元素反转,并输出反转后的列表
10、请使用for、len、range 输出列表的索引
11、请使用enumrate输出列表元素和序号(序号从100开始)
12、请使用for循环输出列表的所有元素
解答:
li = ['alex','eric','rain']
print('1:',len(li)) #计算li的数组长度
li.append('seven') #追加元素
print('2:',li)
li.insert(0,'Tony') #数组的第一个位置添加Tony元素
print('3:',li)
li[1] = 'Kelly' #数组的第二个位置的元素改为Kelly
print('4:',li)
li.remove('eric') #删除eric这个元素
print('5:',li)
print('6:',li[1]) #删除列表中的第二个元素
del li[1]
print('7:',li)
del li[2] #删除第三个元素
print('8:',li)
li.append('seven')
li.append('alex')
li.append('Kelly')
li.append('hello')
print(li)
del li[1:4] #删除第2到第四个元素
print('9:',li)
li.reverse() #反转列表中的所有元素
print('11:',li)
print('\n')
for i in range(len(li)): #使用for、len、range输出列表的索引
print(i,end=' ')
print('\n')
for k,v in enumerate(li,100): #使用enumerate输出列表元素和序号
print(k,'.',v)
for i in li: #for循环输出元素列表
print(i,end=' ')
二十二、按照功能要求实现每一个功能
li = ['hello','seven',['mon',['h','kelly'],'all'],123,446]
1、请输出“Kelly”
2、请使用索引找到'all'元素并将其修改为'ALL'
解答:
li = ['hello','seven',['mon',['h','kelly'],'all'],123,446]
print(li)
s = li[2][1][1] #输出“Kelly”
print(s.capitalize())
index = li[2].index('all') #使用索引找到all,并把all修改为ALL
li[2][index] = 'ALL'
print(li)
二十三、写代码,有如下元组,按照要求实现每一个功能
tu = {'alex','eric','rain'}
1、计算元组长度并输出
2、获取元组的第2个元素,并输出
3、获取元组的第1-2个元素,并输出
4、请使用for输出元组的元素
5、请使用for、len、range输出元组的索引
6、请使用enumrate输出元组元素和序号(序号从10开始)
解答:
tu = ['alex','eric','rain']
print(len(tu)) #计算并输出数组长度
print(tu[1]) #获取元组的第二个元素
print(tu[0:2]) #获取元组的第1-2个元素
for i in tu: #for输出元组的元素
print(i,end=' ')
print('\n')
for i in range(len(tu)):
print(i,end=' ')
print('\n')
for k,v in enumerate(tu,10):
print(k,':',v)
二十四、实现要求的功能
tu = ('alex',[11,22,{'k1':'v1','k2':['age','name'],'k3':(11,22,33)},44])
1、讲述元组的特性
2、请问tu变量中的第一个元素“alex”是否可被修改?
3、请问tu变量中的“k2”对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven”
4、请问tu变量中的“k3”对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“seven”
解答:
1、具有列表的全部特性,不同的是,元素不能修改
2、列表list,不
3、 tu = ('alex', [11, 22, {'k2': ['age', 'name'], 'k1': 'v1', 'k3': (11, 22, 33)}, 44])
tu[1][2]['k2'].append('Seven')
print(tu)
4、元组tuple,不能修改
二十五、字典
dic = {'k1':'v1','k2':'v2','k3':[11,22,33]}
1、请循环输出所有的key
2、请循环输出所有的value
3、请循环输出所有的key和value
4、请在字典中添加一个键值对,'k4':'v4',输出添加后的字典
5、请在修改字典中'k1'对应的值为“alex”,输出修改后的字典
6、请在k3对应的值中追加一个元素44,输出修改后的字典
7、请在k3对应的值的第一个位置插入元素18,输出修改后的字典
解答:
dic={'k1':'v1','k2':'v2','k3':[11,22,33]}
for i in dic.keys():
print(i,end=' ')
print('\n')
for j in dic.values():
print(j,end=' ')
print('\n')
for k in dic.items():
print(k,end=' ')
print('\n')
dic['k4'] = 'v4'
print(dic)
dic['k1'] = 'alex'
print(dic)
dic['k3'].append(44)
print(dic)
dic['k3'].insert(0,18)
print(dic)
二十六、转换
1、将字符串s=“alex”转化成列表
2、将字符串s=“alex”转换成元组
3、将列表li=['alex','seven']转化成元组
4、将元组tu=('Alex','seven')转换成列表
5、将列表li=['alex','seven']转换成字典且字典的key按照10开始向后递增
解答:
s = 'alex'
print(list(s))
print(tuple(s))
li = ['alex','seven']
print(tuple(li))
tu = ('alex','seven')
print(list(li))
print('\n')
li_dic = {}
for k,v in enumerate(li,10):
li_dic[k] = v
print(li_dic)
s = '老男孩'
print(s.encode('utf-8'))
print(s.encode().decode('utf-8'))
print(s.encode('gbk'))
print(s.encode('gbk').decode('gbk'))
二十八、求1-100内的所有数的和
sum = 0
for i in range(1,101):
sum += i
print(i,sum)
print('sum=',sum)
二十九、元素分类
有如下集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中
即:{'k1':大于66的所有值,'k2':小于66的所有要求}
a = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
b = []
c = []
for i in a:
if i <=>=>
b.append(i)
else:
c.append(i)
d = {'k1':b, 'k2':c }
print(d)
三十、功能要求:
要求用户输入总资产,例如2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
goods = [
{'name':'电脑','price':'1999'},
{'name':'鼠标','price':'10'},
{'name':'游艇','price':'20'},
{'name':'美女','price':'998'}
]
解答:
zong_zi_chan = 0
zong_zi_chan1 = input('请输入总资产:')
if zong_zi_chan1.isdigit():
pass
else:
exit('你输入的不是数字类型的资产')
zong_zi_chan = int(zong_zi_chan1)
print('你的总资产为:', zong_zi_chan, '元')
print('\n')
print('可购买商品有:')
shang_pin = [
{'name':'电脑','price':'1999'},
{'name':'鼠标','price':'10'},
{'name':'游艇','price':'20'},
{'name':'美女','price':'998'},
]
shang_pin2 = []
for i in shang_pin:
print(i['name'], i['price'], '元')
print('\n')
ming = ''
while True:
ming_cheng = input('输入y结算/请输入要购买的商品名称挑选商品:')
if ming_cheng == 'y':
break
else:
for i in shang_pin:
if i['name'] == ming_cheng:
ming = i['name']
else:
pass
if ming == ming_cheng:
pass
else:
exit('你输入的商品名称不存在')
for i in shang_pin:
if i['name'] == ming_cheng:
shang_pin2.append(i)
print('你可以挑选了:', shang_pin2)
zongjia = 0
for i in shang_pin2:
danjia = i['price']
zongjia += danjia
print('现在开始结算共计:', zongjia, '元')
if zong_zi_chan >= zongjia:
print('恭喜你购买成功')
else:
print('你的余额不足,请充值')