执行 Python 脚本的两种方式
chmod +x python.py && ./python.py
python python.py
简述位、字节的关系
1byte(字节)== 8bit(位)
- 位是计算机通讯、存储的最小单位
- 字节是计算机数据处理的最小单位
简述 ascii、unicode、utf-8、gbk 的关系
- ascii是美国定义的标准信息交换码,世界上所有计算机以ascii方案来保存英文字母和标点符号
- unicode是世界标准化组织规定的编码,unicode的出现使计算机能够显示汉字等多种语言文字
- utf-8是目前世界上流行最广的字符编码,其特点是可变字节长度,解决了unicode占用过多的存储空间的问题
- gbk包含简体中文和繁体中文,gbk包含所有中文,utf8则包含所有国家需要的文字
请写出 “李杰” 分别用 utf-8 和 gbk 编码所占的位数
- 通常汉字在utf-8中占用3个字节,大概24位,两个字总计48位
- gbk中一个汉字占用两个字节,大概16位,两个字有32位
Pyhton 单行注释和多行注释分别用什么?
- 单行注释用
#
- 多行注释用
'''
或者"""
声明变量注意事项有那些?
- 变量名只能是 字母、数字或下划线的任意组合,且不能用数字开头
- 不能以python关键字命名变量
- 声明的变量最好有意义
如何查看变量在内存中的地址?
print(id(var1))
执行 Python 程序时,自动生成的 .pyc 文件的作用是什么?
pyc是python编译py文件后生成的二进制文件,使用python虚拟机运行,用于加速运行
写代码
- a.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!
- b.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
- c.实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
a
#!/bin/python3
import getpass
user_list = {
"seven":"123"
}
user_name = input("username:")
user_pass = getpass.getpass("password:")
if user_list.get(user_name):
if user_list[user_name] == user_pass:
print("login success!")
exit()
print("login fail!")
b
#!/bin/python3
import getpass
user_list = {
"seven":"123"
}
times = 0
while times < 3:
user_name = input("username:")
user_pass = getpass.getpass("password:")
if user_list.get(user_name):
if user_list[user_name] == user_pass:
print("login success!")
exit()
print("login fail!")
times += 1
print("too much times!")
c
#!/bin/python3
import getpass,os
#var
user_list = {
"seven":["123",0]
}
# functions
def read_users(username):
flag = False
userlist = open('locked.txt', 'r')
while True:
line=userlist.readline()
if len(line.strip()) == 0:
break
if line.strip() == username:
flag = True
break
return flag
def lock_user(username):
userlist = open('locked.txt','w+')
userlist.writelines(username)
while True:
user_name = input("username:")
user_pass = getpass.getpass("password:")
if user_list.get(user_name):
if read_users(user_name):
print("this account has been lockd!")
continue
else:
if user_list[user_name][0] == user_pass:
print("login success!")
exit()
else:
if user_list[user_name][1] == 2:
lock_user(user_name)
print("this account has been locked!")
exit()
else:
print("login fail")
user_list[user_name][1] += 1
else:
print("logi1n fail")
写代码
- a. 使用while循环实现输出2-3+4-5+6...+100 的和
- b. 使用for循环和range实现输出 1-2+3-4+5-6...+99 的和
- c. 使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12
- d. 使用 while 循环实现输出 1-100 内的所有奇数
- e. 使用 while 循环实现输出 1-100 内的所有偶数
a
#!/bin/python3
count = 0
i = 2
while i <= 99:
a = i + 1 #3
b = i - a
if i%2 == 0:
count = count + b
i += 1
count = count + 100
print(count)
b
#!/bin/python3
count = 0
for x in range(2,100):
a = x + 1 #3
b = x - a
if x%2 == 0:
count = count + b
x += 1
count = count + 100
print(count)
c
#!/bin/python3
i = 1
a = ""
while i < 12:
# print(i)
if i != 6 and i != 10:
a += "%s," %i
i += 1
print("%s"%a+str(i))
d
#!/bin/python3
i = 1
while i <= 100:
if i%2 != 0:
print(i)
i += 1
e
#!/bin/python3
i = 1
while i <= 100:
if i%2 != 0:
print(i)
i += 1
分别书写数字 5,10,32,7 的二进制表示
5 = 00000101
10 = 00001010
32 = 00100000
7 = 00000111
简述对象和 类的关系(可用比喻的手法)
class someone{
int 脚的数量 = 2
int 手指数量 = 2
string mingzi = ""
function 拿东西(something){
怎么拿
}
}
public static void(main) {
jack = new someone() #建立对象
jack.mingzi = "王公" #给对象名字
jack.拿东西(西瓜) #让对象拿西瓜
}
现有如下两个变量,请简述 n1 和 n2 是什么关系? n1 = 123 n2 = 123
n1和n2是两个不同的变量但是指向的是一个内存地址,整数-5到257之间的数值会常驻内存
现有如下两个变量,请简述 n1 和 n2 是什么关系? n1 = 123456 n2 = 123456
n1和n2是两个不同的变量但是指向的不是一个内存地址
现有如下两个变量,请简述 n1 和 n2 是什么关系? n1 = 123456 n2 = n1
n1和n2共用一个内存地址
如有一下变量 n1 = 5,请使用 int 的提供的方法,得到该变量最少可以用多少个二进制位表示?
a = 5 && print (int.bit_length(a))
布尔值分别有什么?
true或者false,1或者0
阅读代码,请写出执行结果
a = "alex"
b = a.capitalize()
print(a)
print(b)
输出结果:
alex
换行Alex
写代码,有如下变量,请按照要求实现每个功能 name = " aleX"
- a. 移除 name 变量对应的值两边的空格,并输入移除有的内容
- b. 判断 name 变量对应的值是否以 "al" 开头,并输出结果
- c. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
- d. 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
- e. 将 name 变量对应的值根据 “l” 分割,并输出结果。
- f. 请问,上一题 e 分割之后得到值是什么类型?
- g. 将 name 变量对应的值变大写,并输出结果
- h. 将 name 变量对应的值变小写,并输出结果
- i. 请输出 name 变量对应的值的第 2 个字符?
- j. 请输出 name 变量对应的值的前 3 个字符?
- k. 请输出 name 变量对应的值的后 2 个字符?
- l. 请输出 name 变量对应的值中 “e” 所在索引位置?
a
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
print(name.strip())
b
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
if name[0:2] == 'al':
print(name[0:2])
c
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
if name[-1] == 'X':
print(name[-1])
d
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
name = name.replace('l', 'p')
print(name)
e
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
name = name.split('l')
print(name)
f
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
name = name.split('l')
print(type(name)) #list
g
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
print(name.upper())
h
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
name.upper()
print(name.lower())
i
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
print(name[1])
j
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
print(name[2])
k
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
print(name[-2])
l
#!/bin/python3
# -*- coding:utf-8 -*-
name = " aleX"
name = name.strip()
print(name.index("e"))
字符串是否可迭代?如可以请使用 for 循环每一个元素?
#!/bin/python3
# -*- coding:utf-8 -*-
name = 'yes'
for x in name:
print(x)
22、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain'] 22、写代码,有如下列表,按照要求实现每一个功能
li = ['alex', 'eric', 'rain']
- a. 计算列表长度并输出
- b. 列表中追加元素 “seven”,并输出添加后的列表
- c. 请在列表的第 1 个位置插入元素 “Tony”,并输出添加后的列表
- d. 请修改列表第 2 个位置的元素为 “Kelly”,并输出修改后的列表
- e. 请删除列表中的元素 “eric”,并输出修改后的列表
- f. 请删除列表中的第 2 个元素,并输出删除的元素的值和删除元素后的列表
- g. 请删除列表中的第 3 个元素,并输出删除元素后的列表
- h. 请删除列表中的第 2 至 4 个元素,并输出删除元素后的列表
- i. 请将列表所有的元素反转,并输出反转后的列表
- j. 请使用 for、len、range 输出列表的索引
- k. 请使用 enumrate 输出列表元素和序号(序号从 100 开始)
- l. 请使用 for 循环输出列表的所有元素
a
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
print(len(li))
b
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
li.append("seven")
print(li)
c
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
li.insert(0, 'Tony')
print(li)
d
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
li[1] = "Kelly"
print(li)
e
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
li.remove('eric')
print(li)
f
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
a = li[1]
li.pop(1)
print("%s - %s"%(li,a))
g
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
li.pop(2)
print(li)
h
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
li.insert(0, 'Tony')
print(li)
for x in range(1,4):
li.pop(1)
print(li)
li = ['alex', 'eric', 'rain']
li.insert(0, 'Tony')
del li[1:4]
print(li)
i
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
li.insert(0, 'Tony')
li.reverse()
print(li)
j
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
li.insert(0, 'Tony')
for x in range(0,len(li)):
print(li[x])
k
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
li.insert(0, 'Tony')
for i,j in enumerate(li):
print("%s - %s" %(100+i,j))
l
#!/bin/python3
# -*- coding:utf-8 -*-
li = ['alex', 'eric', 'rain']
li.insert(0, 'Tony')
for x in li:
print(x)
写代码,有如下列表,请按照功能要求实现每一个功能
li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
- a. 请输出 “Kelly”
- b. 请使用索引找到 'all' 元素并将其修改为 “ALL”
a
#!/bin/python3
# -*- coding:utf-8 -*-
li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
print(li[2][1][1])
b
li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
print(li[2][2].upper())
写代码,有如下元组,按照要求实现每一个功能
tu = ('alex', 'eric', 'rain')
- a. 计算元组长度并输出
- b. 获取元组的第 2 个元素,并输出
- c. 获取元组的第 1-2 个元素,并输出
- d. 请使用 for 输出元组的元素
- e. 请使用 for、len、range 输出元组的索引
- f. 请使用 enumrate 输出元祖元素和序号(序号从 10 开始)
a
#!/bin/python3
# -*- coding:utf-8 -*-
tu = ('alex', 'eric', 'rain')
print(len(tu))
b
#!/bin/python3
# -*- coding:utf-8 -*-
tu = ('alex', 'eric', 'rain')
print(tu[1])
c
#!/bin/python3
# -*- coding:utf-8 -*-
tu = ('alex', 'eric', 'rain')
print(tu[0:2])
d
#!/bin/python3
# -*- coding:utf-8 -*-
tu = ('alex', 'eric', 'rain')
for x in tu:
print(x)
e
#!/bin/python3
# -*- coding:utf-8 -*-
tu = ('alex', 'eric', 'rain')
for x in range(0,len(tu)):
print(tu[x])
f
#!/bin/python3
# -*- coding:utf-8 -*-
tu = ('alex', 'eric', 'rain')
for x,y in enumerate(tu):
print("%s - %s"%(10+int(x),y))
有如下变量,请实现要求的功能
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
- a. 讲述元祖的特性
- b. 请问 tu 变量中的第一个元素 “alex” 是否可被修改?
- c. 请问 tu 变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
- d. 请问 tu 变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
a
与列表相似,但不能被修改
b
不能
c
#!/bin/python3
# -*- coding:utf-8 -*-
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
tu[1][2]['k2'].append('Seven') #K2为列表可以被修改
print(tu[1][2]['k2'])
d
不能修改,因为K3是元组
字典
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
- a. 请循环输出所有的 key
- b. 请循环输出所有的 value
- c. 请循环输出所有的 key 和 value
- d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
- e. 请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典
- f. 请在 k3 对应的值中追加一个元素 44,输出修改后的字典
- g. 请在 k3 对应的值的第 1 个位置插入个元素 18,输出修改后的字典
a
#!/bin/python3
# -*- coding:utf-8 -*-
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
for k in dic:
print(k)
b
#!/bin/python3
# -*- coding:utf-8 -*-
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
for v in dic:
print(v)
c
#!/bin/python3
# -*- coding:utf-8 -*-
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
for k in dic:
print(dic[k])
d
#!/bin/python3
# -*- coding:utf-8 -*-
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
dic['k4'] = "v4"
print(dic)
e
#!/bin/python3
# -*- coding:utf-8 -*-
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
dic['k1'] = "alex"
print(dic)
f
#!/bin/python3
# -*- coding:utf-8 -*-
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
dic['k3'].append(44)
print(dic)
g
#!/bin/python3
# -*- coding:utf-8 -*-
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
dic['k3'].insert(0, 18)
print(dic)
转换
- a. 将字符串 s = "alex" 转换成列表
- b. 将字符串 s = "alex" 转换成元祖
- c. 将列表 li = ["alex", "seven"] 转换成元组
- d. 将元祖 tu = ('Alex', "seven") 转换成列表
- e. 将列表 li = ["alex", "seven"] 转换成字典且字典的 key 按照 10 开始向后递增
a
#!/bin/python3
# -*- coding:utf-8 -*-
s = "alex"
s = list(s)
print(s)
b
#!/bin/python3
# -*- coding:utf-8 -*-
s = "alex"
s = tuple(s)
print(s)
c
#!/bin/python3
# -*- coding:utf-8 -*-
li = ["alex", "seven"]
li = tuple(li)
print(li)
d
#!/bin/python3
# -*- coding:utf-8 -*-
tu = ('Alex', "seven")
tu = list(tu)
print(tu)
e
#!/bin/python3
# -*- coding:utf-8 -*-
li = ["alex", "seven"]
dic = {}
a = 10
for x in li:
dic[a] = x
a += 1
print(dic)
转码
n = "老男孩"
- a. 将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8编码字符串,再输出
- b. 将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出
a
#!/bin/python3
# -*- coding:utf-8 -*-
n = "老男孩"
a = n.encode('utf-8')
print(a)
b = a.decode('utf-8')
print(b)
b
#!/bin/python3
# -*- coding:utf-8 -*-
n = "老男孩"
a = n.encode('gbk')
print(a)
b = a.decode('gbk')
print(b)
n = "老男孩"
求 1-100 内的所有数的和
#!/bin/python3
# -*- coding:utf-8 -*-
count = 0
for x in range(1,101):
count += x
print(count)
元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个 key 中,将小于 66 的值保存至第二个 key 的值中。
即: {'k1': 大于 66 的所有值, 'k2': 小于 66 的所有值}
#!/bin/python3
# -*- coding:utf-8 -*-
a = [11,22,33,44,55,66,77,88,99,90]
b = {
'max':[],
'min':[]
}
for x in a:
if x > 66:
b['max'].append(x)
else:
b['min'].append(x)
print(b)
购物车 功能要求:
要求用户输入总资产,例如:2000 显示商品列表,让用户根据序号选择商品,加入购物车 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998},
]
#!/bin/python3
# -*- coding:utf-8 -*-
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
#input salary
while True:
user_salary = input("input your salary:")
if user_salary.isdigit():
user_salary = int(user_salary)
break
for x in range(0,len(goods)):
print("%s - %s - %s" %(x,goods[x]['name'],goods[x]['price']))
bought_list = []
while True:
bought_index = input(">")
if bought_index.isdigit():
bought_index = int(bought_index)
if bought_index >= 0 and bought_index < len(goods):
if user_salary - goods[bought_index]['price'] >= 0:
user_salary = user_salary - goods[bought_index]['price']
bought_list.append(goods[bought_index]['name'])
print('bought [%s]'%goods[bought_index]['name'])
continue
else:
print("salary not enough!")
else:
continue
elif bought_index == 'q' or bought_index == 'Q':
print("%s,your salary:%s" %(bought_list,user_salary))
exit()