一、 笔试题

1. 列举常见的操作系统及公司线上服务器用的操作系统?

#常见的操作系统: Windows Linux macos
#公司线上服务器:windows server2003、server2003
# linnux:centos(做运维,没有图形化界面)、red hat(红帽) IBM

2. 简述位(bit)和字节(byte)的关系.

1byte = 8b
一个汉字 = 2 byte
一个英文 = 1 byte

3. Pass的作用

跳过当前继续执行,相当于占位

4. 变量的命名规范和建议

1.变量名只能以字母数字和下划线组成
2.变量名不能由数字开头
3.变量名不能是python内置关键字

建议:1.下划线命名法,单词比较长的时候用下划线分开 2.见名知意

5. =和==的区别

=是赋值 ==是判断

6. Range的作用

创建一个整数列表
返回一个可迭代对象,可以将指定范围数字返回,也可以用切片

7. 列举你了解的数据类型及他所具有的方法,每种最多写5个方法.

str:.upper() .lower() .startswith() .endswith() .strip() .replace()
list:.append() .insert() .extend() .remove() .pop() …clear() .reverse()
tuple:tuple() len() 索引 切片
dict:.keys() .values() .item() .pop() .get()
set:add() .discard() & | - len()

8. 列举你了解的转换为布尔值为False的常见值

0,“”,[],(),{}

9. 简述下列变量的区别

v1 = (1) 整数

v2 = (1,) 元组

v3 = 1 整数

10.写代码实现将字符串 v=“凤兮凤兮归故乡,遨游四海求其凰。”反转. 切片、reverse()、

v = “凤兮凤兮归故乡,遨游四海求其凰。”
#print(‘’.join(reversed(v))) #。凰其求海四游遨,乡故归兮凤兮凤
print(v[::-1]) # 反转

11.看代码写结果

School_post = [
{“principal”: “刘德华”,
“life”: {“hobby”: [“sing”, “dance”], “age”: 58, “representative_work”: [“拆弹专家”, “投名状”, “失孤”, “无间道”]}},
{“teacher”: “林俊杰”, “life”: {“hobby”: [‘sing’, ‘disco’], “age”: 38, “On_behalf_of_music”: [“修炼爱情”, “关键词”, “交换余生”]}},
]

1.请获取Shool_post列表中的principal

print(School_post[0][“principal”]) # 刘德华

2.请根据索引获取ShooL_post列表中的"sing"

print(School_post[0][“life”][“hobby”][0]) # sing

3.请根据索引获取ShooL_post列表中的"disco"

print(School_post[1][“life”][“hobby”][1]) # disco

4.请跟根据索引获取ShooL_post列表中的58.

print(School_post[0][“life”][“age”]) # 58

4.请跟根据索引获取ShooL_post列表中的On_behalf_of_music的列表

print(School_post[1][“life”][“On_behalf_of_music”]) # [‘修炼爱情’, ‘关键词’, ‘交换余生’]

5.请跟根据索引获取ShooL_post列表中的representative_work的列表

print(School_post[0][“life”][“representative_work”]) #[‘拆弹专家’, ‘投名状’, ‘失孤’, ‘无间道’]

6.请跟根据索引获取ShooL_post列表中的hobby并添加一个整数元素:99

School_post[0][“life”][“hobby”].append(99)
print(School_post)

7.请跟根据索引获取ShooL_post列表中的teacher

print(School_post[1][“teacher”]) # 林俊杰

8.请跟根据索引获取ShooL_post列表中的38

print(School_post[1][“life”][“age”]) # 38

9.请跟根据索引获取ShooL_post列表中的拆弹专家

print(School_post[0][“life”][“representative_work”][0]) # 拆弹专家

10.请跟根据索引获取ShooL_post列表中的无间道

print(School_post[0][“life”][“representative_work”][3]) # 无间道

12.看代码写结果

result = 1 > 6 and 8 < 9 ,请写出result的值。
False
result = 1 or 2 ,请写出result的值。
1
result = 0 or True ,请写出result的值
True
result = 1 and 8 or True and 4 ,请写出result的值。
8
result = “九天” or “Ture” and “九月”,请写出result的值。
“九天”

13.用代码实现实现将字符串 v = “k1|v1,k2|v2,k3|v3…” 转换成字典 {‘k1’:’v1’,’k2’:’v2’,’k3’:‘v3’…}.

方法一:
v = "k1|v1,k2|v2,k3|v3"
data = []
data1 = []
data2 = {}
for i in v.split("|",3) :
    data.append(i.split(",",3))
print(data)
data1.append(data[0])
data1.append(data[1][0])
data1.append(data[1][1])
data1.append(data[2][0])
data1.append(data[2][1])
data1.append(data[3])
print(data1)
print(len(data1))
data2[data1[0][0]] = data1[1]
data2[data1[2]] = data1[3]
data2[data1[4]] = data1[5][0]
print(data2)  # {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
方法二:
v = "k1|v1,k2|v2,k3|v3"
dict = {}
data = v.split(",")
print(data)
for i in data:
    data1 = i.split("|")
    dict.update([(data1)])
print(dict)
方法三:
v = "k1|v1,k2|v2,k3|v3"
dict = {}
items = v.split(",")
print(items)
for i in items:
    dict[i[0:2]] = i[3:5]
print(dict)

14.实现一个整数乘法计算器

content = input(“请输入内容:”) # 用户输入:5999或5* 9 * 10 * 99 或5 * 9 * 99(含空白)

data = content.split("*")
print(data)
total = 1
a = []
num = 0
for i in data:
    a.append(i.strip())
    print(a)
for x in a:
    total *= int(x)
    print(total)
    ```
### 15.看代码写结果:

dict = {'Name': 'Zara', 'Age': 28, 'Class': 'First'}

#### 1.请修改Name的值为Shining
dict["Name"] = "Shining"
print(dict)
#### 2.请添加一个新的键值对{"email":Shining@163.com}
dict["email"] = "Shining@163.com"
print(dict)
#### 3.请删除First
del dict["Class"]
print(dict)
### 16.请将courtship中索引值为偶数的值使用 “*” 拼接起来,并添加到一个新列表中.
#### courtship=["双","翼","俱","起","翻","高","飞",",无","感","我","思","使","余","悲"]
```python
courtship=["双","翼","俱","起","翻","高","飞",",无","感","我","思","使","余","悲"]
list = []
list1 = []
for x in courtship:
    list.append(x)
for i in range(0,len(courtship)):
    if i % 2 == 0:
        list1.append(list[i]+"*")
        "*".join(list1)
    else:
        continue
print(list1)

courtship=["双","翼","俱","起","翻","高","飞",",无","感","我","思","使","余","悲"]
list = []
data = "*".join(courtship[::2])
print(data)
list.append(data)
print(list)

17.请简述元组的特性.

不允许增删改,只允许查,私密性好

18.字典有序还是无序?

3.6版本以后有序

20.集合在进行数据类型转换时,具有什么特性?

如果元素有重复会自动剔除 可哈希对象都可以进行转换:List/dict/tuple/int/str

21.请分别使用while和for循环打印1000-0的正整数.

a = 1000
while True:
    if 0 < a <=1000:
        print(a)
        a -= 1
    else:
        break
for i in range(1000,0,-1):
     print(i)

二、综合题

1. 车牌区域划分,请根据车牌信息,分析出各省的车牌持有数量.

cars = [‘鲁A32444’, ‘鲁B12333’, ‘京B8989M’, ‘黑C49678’, ‘黑C46555’, ‘沪B25041’, ‘黑C34567’]
#根据cars得到如下结构
#info = {‘鲁’: 2, ‘黑’: 3, ‘京’: 1, ‘沪’: 1}

cars = ['鲁A32444', '鲁B12333', '京B8989M', '黑C49678', '黑C46555', '沪B25041', '黑C34567']
info = {}
num1 = num2 = num3 = num4 = 0
for i in cars:
    if i.startswith("鲁"):
        num1 += 1
    elif i.startswith("京"):
        num2 += 1
    elif i.startswith("黑"):
        num3 += 1
    elif i.startswith("沪"):
        num4 += 1
    else:
        break
info.update({"鲁":num1,"京":num2,"黑":num3,"沪":num4})
print(info) # {'鲁': 2, '京': 1, '黑': 3, '沪': 1}

2.写程序:保存用户名和密码。

(1).用户名和密码保存在如下数据结构中

user_list = [
{‘username’: ‘zs’, ‘password’: ‘1234’},
#{‘username’: ‘ls’, ‘passwod’: ‘asdf’}
]

(2).非法字符模板board = [‘zs’, ‘ls’, ‘ww’]。

(3).可连续输入用户名和密码。

(4).如果想终止程序,请输入Q或者q。

(5).录入用户名时,如果是board里面的非法字符串,将非法字符串替换成同等数量的* 例如 zs 替换成**。

然后添加到user_list中

(6).每次添加成功后,打印出刚添加的用户名,密码。

"""
board = ["zs","ls","ww"]
"""
user_list = []
while True:
    user_input = input("如果想终止程序,请输入Q或者q,不想请输入n或者N:")
    if user_input.upper() == "Q":
        break
    else:
        user_name = input("请输入用户名:")
        user_password = input("请输入密码:")
         if user_name == "zs":
             user_name = "**"
            user_list.append({"user_name":user_name,"password":user_password})
             print(user_list)
         elif user_name == "ww":
             user_name = "**"
            user_list.append({"user_name":user_name,"password":user_password})
             print(user_list)
         elif user_name == "ls":
             user_name = "**"
             user_list.append({"user_name":user_name,"password":user_password})
             print(user_list)
         else:
             user_list.append({"user_name":user_name,"password":user_password})
             print(user_list)
        """
        if user_name in board:
            user_name = "*" * len(user_name)
        """
        if user_name != "zs" and  user_name != "ww" and user_name != "ls":
            user_list.append({"user_name":user_name,"password":user_password})
            print(user_list)
        else:
            user_name = "**"
            user_list.append({"user_name":user_name,"password":user_password})
            print(user_list)

3.超市买水果

(1)输入自己所有的钱。

(2)展示商品的序号,名称及其价格。

(3)输入要买商品的序号。

(4)输入要买商品的数量。

(5)购物车中显示购买的水果名称及其对应的数量和剩余钱。

(6)如果序号输入有误就提示用户重新输入。

如果钱不够了提示用户钱不够,并且退出程序

user_money = int(input("请输入你所拥有的钱:"))
total = 0
money = []
gouwuche = []
goods = [
    {"序号":0,'name':'苹果','price':5},
    {"序号":1,'name':'香蕉','price':5},
    {"序号":2,'name':'西瓜','price':10},
    {"序号":3,'name':'草莓','price':20},
]
for i in goods:
    print(i)
while True:
    user_input = input("进行购买请输入Y/y不购买输入N/n:")
    if user_input.upper() == "N":
        break
    else:
        index = int(input("请输入你所购买的水果序号:"))
        num = int(input("请输入你所购买的水果数量:"))
        if index != 0 and index != 1 and index != 2 and index != 3:
            print("你输入的序号有误,请重新输入。")
            continue
        else:
            total = total + goods[index]["price"]*num
            last = "购物车:{}个{}总计{}元".format(num,goods[index]["name"],total)
            print(last)
            if total <= user_money:
                print("支付宝到账{}元".format(total))
                user_money -= total
                print("你还剩余{}元".format(user_money))
                total = 0
            else:
                print("你的钱不够")
                break
                ```