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