• 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()
    
    
  • 相关阅读:
    The best programmers are the quickest to Google
    NetBeans 时事通讯(刊号 # 117 Sep 16, 2010)
    Apache HttpClient 4.0.3 GA 发布
    warning LNK4070的解决办法
    看泡沫
    早秋精神
    NetBeans 时事通讯(刊号 # 117 Sep 16, 2010)
    Maven 3.0 RC1 发布
    关于类的数据成员的访问权限设计的一些思考
    看泡沫
  • 原文地址:https://www.cnblogs.com/anyanyaaaa/p/6649410.html
Copyright © 2020-2023  润新知