python基础04

### 执行 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()

转载于:https://www.cnblogs.com/anyanyaaaa/p/6649410.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值