1、 执行 Python 脚本的两种方式

1)/usr/bin/python3  xx.py
2)python3 xx.py #注xx.py需要在内容里面调用由什么解释器执行

2、 简述位、字节的关系

1Byte = 8bit
1bit 表示某个二进制 0 1

3、 简述 ascii、unicode、utf-8、gbk 的关系

最初计算机是由美国发明的,计算机需要一套相应的字符编码集ascii,来表示英文字符
后来中国也表示也用来计算机,也需要一套字符编码集来表示汉字字符,也就是gbk
由于各国需要用计算机都需要一套相应的字符编码,来表示自已国家的字符,
于是就出现统一的字符编码的集也就是unicode,所有的字符都表示两个字节,
原来英文字符只占用一个字节,存放英文字符文档,会浪费一倍的空间,美国肯定不会同意
于是就出现了utf-8编码,可变长的字符编码,英文字符编码表示1个字节,汉字表示3个字节
这下美国就开兴了哈!

4、 请写出 “你好” 分别用 utf-8 和 gbk 编码所占的位数

你好  在utf-8中一个中文字符3个字节(Byte)  1字节 = 8位(bit) 你好就在utf-8表示24位
你好 在gbk中一个中文字符用2个字节(Byte) 1字节 = 8位(bit) 你好就在gbk中表示16位

5、 Pyhton 单行注释和多行注释分别用什么?

单行注释:用 #注释内容
多行注释:用'''注释内容''' 或者 """注释内容"""

6、 声明变量注意事项有那些?

 变量名不能以数字开头
变量名只能是数字,下划线,英文字母的组合
变量名不能有特殊符号
某些特定的字符不能用做变量名

7、 如何查看变量在内存中的地址?

id(变量名)

8、 执行 Python 程序时,自动生成的  .pyc文件的作用是什么?

当执行xx.py的python会 把编译的结果会保存在位于内存中的Pycodeobject中,
python程序运行结束,python解释器则将PyCodeObject写回到pyc文件中。
当python再次执行xx.py时,首先程序会在硬盘中寻找pyc文件,直接载入,否则就重复上面的
过程
.pyc文件在_pycache_ 注:自已理解,我也不是很了解

9、写代码

a.实现用户输入用户名和密码,当用户名为seven且密码为123时,
显示登陆成功,否则登陆失败!

代码如下:

user  =  "seven"
passwd = 123
username = input("please the enter user:")
password = int(input("please the enter passwd:"))
if username == user and password == passwd:
print("logon successfull")
else:
print("logon failed")
注意:input()输入的任何内容都是字符串

b.实现用户输入用户名和密码,当用户名为 seven且密码为 123 时,
显示登陆成功,否则登陆失败,失败时允许重复输入三次

代码如下

user  =  "seven"
passwd = 123
for i in range(3):
username = input("please the enter user:")
password = input("please the enter passwd:")
if password.isdigit():
password = int(password)
if username == user and passwd == password:
print("logon successfull")
break
else:
print("logon failed")
else:
print("logon failed")

c.实现用户输入用户名和密码,当用户名为 seven 或 alex 且密码为 123 时,
显示登陆成功,否则登陆失败,失败时允许重复输入三次

代码如下:

user  =  ["seven","alex"]
passwd = 123
for i in range(3):
username = input("please the enter user:")
password = input("please the enter passwd:")
if password.isdigit():
password = int(password)
if (username in user) and passwd == password:
print("logon successfull")
break
else:
print("logon failed")
else:
print("logon failed")

10、写代码

a.使用 while 循环实现输出 2-3+4­-5+6 ...+100 的和

代码如下:

even = 0
count = 1
while count<100:
count+=1
#方法1:得出偶数-奇数+偶数-奇数...
#方法2:求出所有的偶数减去所有的奇数和 (跟小学的换位运算类似)
if count % 2 == 0:
print("2-100的偶数",count)
even += count
else:
print("2-100的奇数",count)
even -= count
print(even) #得出的结果

b.使用 for 循环和 range 实现输出1-2+3-4+5-6....-98+99  的和

代码如下:

uneven = 0
for i in range(1,100):
#方法1:得出的奇数-偶数+奇数-偶数....
#方法2:求出奇数和,求出偶数和,用奇数和减偶数和
if i % 2 == 1:
print("1-99的奇数",i)
uneven += i
else:
print("1-99的偶数",i)
uneven -= i
print(uneven) #得出结果

c.使用 while 循环实现输出1,2,3,4,5,7,8,9,11,12

代码如下:

count = 0
while count <12:
count += 1
if count == 6:
continue
elif count ==10:
continue
print(count)

d.使用 while 循环实现输出 1-100 内的所有奇数

代码如下:

count = 0
while count < 100:
count += 1
if count % 2 == 1:
print("1-100的奇数",count)

e. 使用 while 循环实现输出1-100内的所有偶数

代码如下:

count = 0
while count < 100:
count += 1
if count % 2 == 0:
print("1-100的偶数",count)

11、分别书写数字5,10,32,7的二进制表示

在python解释器中执行bin(number),把某个数字转换成二进制
二进制的表示:0b (binary)
bin(5) #0b101
bin(10) #0b1010
bin(32) #0b100000
bin(7) #0b111

12、简述对象和 类的关系(可用比喻的手法)

类:用来描述具有相同属性和方法的对象集合,
它定义每个对象的属性所共有的属性和方法,对象是类的实例
对象:通过类定义的数据结构实例 假如:人是一个种类,我们自已本身就是类的对象
类是一张图纸(该图纸上画了建筑的模型,以及怎样实现),实际高楼大夏就是图纸
实现的对象,
类是抽象的,对象是实际存在的。

13、现有如下两个变量,请简述 n1 和 n2是什么关系?

n1=123
n2=123

n1和n2关系是一样 ,我们可以用id(n1),id(n2)在内存中的地址的表示

14、现有如下两个变量,请简述 n1 和 n2是什么关系?

n1 = 123456
n2 = 123456

n1和n2虽然在值是一样的,在内存地址表示中是不一样的

注:
(在python内部中,内存还有一个(小数字池,字符串池)缓存池,对于经常用的,
在python内部编译有一个优化,在这个缓存池,如果重复使用,都是使用同一内存缓存池的内存(地址)空间
如果大于这个缓存池,则会在内存独立开辟新的一个内存(地址)空间
例如
数字的缓存池 -5 至 256
可以用不相同的变量名,相同的值,用id(变量名),看它们的内存地址)

15、现有如下两个变量,请简述 n1 和 n2 是什么关系?
n1 = 123456
n2 = n1

n2 是 n1 值的引用   它们在内存的地址是一样和内容也是一样的,只是不同命名
变量的赋值:
赋值不会开辟新的内存空间,它只是复制了新对象的引用,如果n1的值发生改变,
n2还是原来的改变之前值

16、如有一下变量 n1 =5,请使用 int 的提供的方法,
得到该变量最少可以用多少个二进制位表示?

n1= 5
print(n1.bit_length())
#结果
3

17、布尔值分别有什么?

True  False

18、阅读代码,请写出执行结果
a = "alex"
b = a.capitalize()
print(a)
print(b)
请写出输出结果:

alex    #a
Alex #b

19、写代码,有如下变量,请按照要求实现每个功能
name = " aleX"

a. 移除 name 变量对应的值两边的空格,并输入移除有的内容

print(name.strip())
#结果
aleX

b.判断 name 变量对应的值是否以 "al" 开头,并输出结果

print(name.startswith("al"))
#结果
False

c.判断 name 变量对应的值是否以 "X" 结尾,并输出结果

print(name.endswith("X"))
#结果
True

d.将 name 变量对应的值中的 “ l” 替换为 “ p”,并输出结果

print(name.replace("l","p"))
#结果
apeX

e.将 name 变量对应的值根据 “ l” 分割,并输出结果。

print(name.split("l"))
#结果
['\ta', 'eX'] #\t 表示使用了tab

f.请问,上一题 e分割之后得到值是什么类型?

print(type(name.split("l")))
#结果
<class 'list'> #列表

g.将 name 变量对应的值变大写,并输出结果

print(name.upper())
ALEX

h.将 name 变量对应的值变小写,并输出结果

print(name.lower())
#结果
alex

i.请输出 name 变量对应的值的第 2 个字符?

print(name[2])
#结果
l

j. 请输出 name 变量对应的值的前 3 个字符?

print(name[:3])
#结果
al

k. 请输出 name 变量对应的值的后 2 个字符?

print(name[-2:])
#结果
eX

l.请输出 name 变量对应的值中 “ e” 所在索引位置?

print(name.index('e'))
#结果
3

20、字符串是否可迭代?如可以请使用 for 循环每一个元素?

字符串可以迭代
代码如下:
hobby = "一条龙"
for i in hobby:
print(i)
显示结果如下:


21、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,
li = ['alex', 'eric', 'rain']

print("_".join(li))
#结果
alex_eric_rain

22、写代码,有如下列表,按照要求实现每一个功能

li = ['alex','eric','rain']

a.计算列表长度并输出

print(len(li))
#结果
3

b.列表中追加元素 “seven”,并输出添加后的列表

li.append("seven")
print(li)
#结果
['alex', 'eric', 'rain', 'seven']

c.请在列表的第1个位置插入元素 “Tony”,并输出添加后的列表

li.insert(0,"Tony")
print(li)
#结果
['Tony', 'alex', 'eric', 'rain']

d.请修改列表第2个位置的元素为 “Kelly”,并输出修改后的列表

li[1] = "Kelly"
print(li)
#结果
['alex', 'Kelly', 'rain']

e.请删除列表中的元素 “eric”,并输出修改后的列表

第一种:得出“eric”索引,通过索引来删除该值
第二种:直接删除"eric"
1)
del li[1];print(li) #结果['alex', 'rain']
li.pop(1);print(li) #结果['alex', 'rain']
2)
li.remove("eric")
print(li)
#结果
['alex', 'rain']

f.请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表

print(li.pop(1));print(li)
#结果
eric
['alex', 'rain']

g.请删除列表中的第3个元素,并输出删除元素后的列表

print(li.pop(2));print(li)
#结果
rain
['alex', 'eric']

h.请删除列表中的第2至4个元素并输出删除元素后的列表

del li[1:3]
print(li)
#结果
['alex']

i.请将列表所有的元素反转,并输出反转后的列表

li.reverse()
print(li)
#结果
['rain', 'eric', 'alex']

j.请使用 for、len、range 输出列表的索引

#3种方法,建议用第三种
1)for
for i in li:
#list.index()列表有相同元素的,只是的获取(相同元素中的第一个元素)的索引
print(li.index(i),i) #如果列表内有相同的元素,不建议使用此方法
#结果
0 alex
1 eric
2 rain 2)len
zero = []
for i in li:
print(len(zero),i)
zero.append(i)
#结果
0 alex
1 eric
2 rain 3)range
for i in range(len(li)):
print(i,li[i])
#结果
0 alex
1 eric
2 rain

k.请使用 enumrate 输出列表元素和序号(序号从 100 开始)

for index,i in enumerate(li,start=100):
print(index,i)
#结果
100 alex
101 eric
102 rain

l.请使用 for 循环输出列表的所有元素

for i in li:
print(i)
#结果
alex
eric
rain

23、写代码,有如下列表,请按照功能要求实现每一个功能
li=["hello",'seven',["mon",["h","kelly"],'all'],123,446]

a. 请输出 “Kelly”

print(li[2][1][1])
#结果
kelly

b.请使用索引找到 'all'元素并将其修改为 “ALL”

li[2][2] = "ALL"
print(li)
#结果
['hello', 'seven', ['mon', ['h', 'kelly'], 'ALL'], 123, 446]

24、写代码,有如下元组,按照要求实现每一个功能
tu=('alex','eric','rain')

a.计算元组长度并输出

print(len(tu))
#结果
3

b.获取元组的第2个元素,并输出

print(tu[1])
#结果
eric

c.获取元组的第 1-2个元素,并输出

print(tu[0:2])
#结果
('alex', 'eric')

d.请使用 for 输出元组的元素

for i in tu:
print(i)
#结果
alex
eric
rain

e.请使用 for、len、range 输出元组的索引

#跟22题j列表用法类似
for i in range(len(tu)):
print(i,tu[i])
#结果
0 alex
1 eric
2 rain

f.请使用 enumrate 输出元祖元素和序号(序号从 10 开始)

for index,i in enumerate(tu,start=10):
print(index,i)
#结果
10 alex
11 eric
12 rain

25、有如下变量,请实现要求的功能
tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])

a.讲述元祖的特性

元祖和列表类似都是有序的从0开始
不同的是元祖的元素是不能修改的

b.请问 tu 变量中的第一个元素 “alex” 是否可被修改?

不能修改

c.请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?
如果可以,请在其中添加一个元素 “Seven”

print(type(tu[1][2]["k2"]))
#结果
<class 'list'>
列表类型可以修改
tu[1][2]["k2"].append("seven")
print(tu)
#结果
('alex', [11, 22, {'k2': ['age', 'name', 'seven'], 'k3': (11, 22, 33), 'k1': 'v1'}, 44])
注:表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,
tuple的每个元素,指向永远不变。但指向的这个list本身是可变的!

d.请问 tu 变量中的"k3"对应的值是什么类型?是否可以被修改?
如果可以,请在其中添加一个元素 “Seven”

print(type(tu[1][2]["k3"]))
#结果
<class 'tuple'>
#对应值是元祖,不能修改

26、字典
dic ={'k1':"v1","k2":"v2","k3":[11,22,33]}

a.请循环输出所有的 key

for i in dic:
print(i)
#结果
k1
k3
k2
注:字典是无序的

b.请循环输出所有的value

for i in dic:
print(dic[i])
#结果
[11, 22, 33]
v2
v1

c.请循环输出所有的 key 和 value

for i in dic:
print(i,dic[i])
#结果
k2 v2
k3 [11, 22, 33]
k1 v1

d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典

dic["k4"] = "v4"
print(dic)
#结果
{'k4': 'v4', 'k2': 'v2', 'k3': [11, 22, 33], 'k1': 'v1'}

e.请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典

dic['k1'] = "alex"
print(dic)
#结果
{'k3': [11, 22, 33], 'k1': 'alex', 'k2': 'v2'}

f.请在 k3 对应的值中追加一个元素44,输出修改后的字典

dic["k3"].append(44)
print(dic)
#结果
{'k2': 'v2', 'k3': [11, 22, 33, 44], 'k1': 'v1'}

g.请在 k3 对应的值的第1个位置插入个元素18,输出修改后的字典

dic["k3"].insert(0,18)
print(dic)
#结果
{'k1': 'v1', 'k2': 'v2', 'k3': [18, 11, 22, 33]}

27、转换

a.将字符串 s="alex" 转换成列表

print(list(s))
#结果
['a', 'l', 'e', 'x']

b.将字符串 s="alex" 转换成元祖

print(tuple(s))
#结果
('a', 'l', 'e', 'x')

c.将列表 li =["alex","seven"]转换成元组

print(tuple(li))
#结果
('alex', 'seven')

d.将元祖 tu =('Alex',"seven")转换成列表

print(list(tu))
#结果
['Alex', 'seven']

e.将列表 li=["alex","seven"]转换成字典且字典的key按照10开始向后递增

dic1 = {}
for key,value in enumerate(li,start=10):
dic1[key] = value
print(dic1)
#结果
{10: 'alex', 11: 'seven'}

28、转码

n="老男孩"

a.将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8 编码字符串,再输出

print(n.encode("utf-8"))
#结果
b'\xe8\x80\x81\xe7\x94\xb7\xe5\xad\xa9' print(n.encode("utf-8").decode("utf-8"))
#结果
老男孩

b.将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出

print(n.encode("gbk"))
#结果
b'\xc0\xcf\xc4\xd0\xba\xa2' print(n.encode("gbk").decode("gbk"))
#结果
老男孩

29、求1-100内的所有数的和

#3种方法
1)
print(sum(range(1,101)))
#结果
5050 2)
SUM = 0
for i in range(1,101):
SUM += i
print(SUM)
#结果
5050 3)
SUM = 0
count = 1
while count <= 100:
SUM += count
count += 1
print(SUM)
#结果
5050

30、元素分类

有如下值集合 [11,22,33,44,55,66,77,88,99,90],
将所有大于66的值保存至字典的第一个 key中,
将小于66的值保存至第二个 key 的值中。

即:{'k1':大于 66 的所有值,'k2':小于66 的所有值}

dic = {"k1":[],
"k2":[]}
aa = set([11,22,33,44,55,66,77,88,99,90])
for i in aa:
if i>= 66:
dic["k1"].append(i)
else:
dic["k2"].append(i)
print(dic)
结果
{'k1': [66, 99, 77, 88, 90], 'k2': [33, 11, 44, 22, 55]}

31、购物车
功能要求:
要求用户输入总资产,例如: 2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
goods = [
{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":98},
]

shop_cart = []
goods = [
{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":98},
]
while True:
salary = input("请输入用户余额[quit]:")
if salary.isdigit():
salary = int(salary)
break
elif salary == "quit":
exit("不想购买")
else:
print("please the enter number")
while True:
print("shop list".center(50, '*'))
for index,i in enumerate(goods):
print(index,i)
choose_number = input("请输入购买商品编号[quit]:")
if choose_number.isdigit():
choose_number = int(choose_number)
product_list = []
if 0 <= choose_number <= len(goods):
product_list.append(goods[choose_number])
if salary >= product_list[0]["price"]:
shop_cart.append(goods[choose_number])
salary -= product_list[0]['price']
print("当前购买的商品",product_list,"当前用户余额\033[1;31m{salary}\033[0m".format(salary=salary))
else:
print("余额不足")
else:
print("无效的商品编号")
elif choose_number.lower() == 'quit': print("购买的商品".center(50,"*"))
for y in shop_cart:
print(y)
exit()
else:
print("无效的输入")
#注:简易的购物车,还能继续优化

python3的基础练习题的更多相关文章

  1. Python3.x 基础练习题100例(51-60)

    练习51: 题目: 学习使用 按位与(&) . 分析: 0&0=0; 0&1=0; 1&0=0; 1&1=1. 程序: if __name__ == '__ma ...

  2. Python3.x 基础练习题100例(41-50)

    练习41: 题目: 模仿静态变量的用法. 程序: def varfunc(): var = 0 print('var = %d' % var) var += 1 if __name__ == '__m ...

  3. Python3.x 基础练习题100例(31-40)

    练习31: 题目: 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母. 分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. 程序 ...

  4. Python3.x 基础练习题100例(21-30)

    练习21: 题目: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前 一天剩下的一半零一个.到第10天早上 ...

  5. Python3.x 基础练习题100例(11-20)

    练习11: 题目: 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析: 兔子的规律为数列1,1,2, ...

  6. Python3.x 基础练习题100例(01-10)

    练习01: 题目: 有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 分析: 可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. ...

  7. Python3.x 基础练习题100例(61-70)

    练习61: 题目: 打印出杨辉三角形. 程序: if __name__ == '__main__': a = [] for i in range(10): a.append([]) for j in ...

  8. Python3.x 基础练习题100例(81-90)

    练习81: 题目: 809??=800??+9?? 其中??代表的两位数, 809??为四位数,8??的结果为两位数,9??的结果为3位数.求??代表的两位数,及809*??后的结果. 程序: a = ...

  9. Python3.x 基础练习题100例(91-100)

    练习91: 题目: 时间函数举例1. 程序: if __name__ == '__main__': import time print (time.ctime(time.time())) print ...

随机推荐

  1. Jenkins部署到远程(Linux服务器)

    接着上次的说,上次只是实现了本地自动化部署,这种情况只是针对开发环境和部署环境在同一台机器时适用.不过,一般情况下,我们都会要把项目部署到远程Linux服务器上,所以这节的主要内容是: 1.部署开发环 ...

  2. EF继承关系映射

    继承映射策略的三种策略 There are following three different approaches to represent an inheritance hierarchy in ...

  3. Nim游戏

    目前有3堆石子,每堆石子个数也是任意的,双方轮流从中取出石子,规则如下:1)每一步应取走至少一枚石子:每一步只能从某一堆中取走部分或全部石子:2)如果谁不能取谁就失败. Bouton定理: 必败状态当 ...

  4. java之多线程 一

    概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程与线程: 进程是指处于运 ...

  5. 转: Protobuf 的 proto3 与 proto2 的区别

    Protobuf 的 proto3 与 proto2 的区别   On 2015-07-17 19:16:00 By Soli   Protobuf 的 proto3 与 proto2 的区别 这是一 ...

  6. return false

    ”return false“到底做了什么? 当你每次调用”return false“的时候,它实际上做了3件事情: •event.preventDefault();•event.stopPropaga ...

  7. sqlserver 2008R2数据库迁移oracle

    x项目需要,将以前的sqlserver数据库迁移的oracle数据库中,由于以前对oracle只是在DML语句的步骤,所以总结一下这次遇到的问题以及具体步骤 1,oracle新建数据库 新建Oracl ...

  8. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 所有的基础数据都可以恢复删除

    客户的需求如下: 所有基礎信息需要記錄創建人,創建時間,更改人,更改時間,刪除人,刪除時間.有停用基礎信息功能(停用不是刪除,只是暫時停用).基礎信息可以查出已經刪除的信息(有選項可以選擇),有方法把 ...

  9. java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z 的解决

    jetty 9 嵌入式开发时,启动正常,但是页面一浏览就报错如下: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest ...

  10. C#进阶系列——AOP?AOP!

    前言:今天大阅兵,可是苦逼的博主还得坐在电脑前写博客,为了弄清楚AOP,博主也是拼了.这篇打算写写AOP,说起AOP,其实博主接触这个概念也才几个月,了解后才知道,原来之前自己写的好多代码原理就是基于 ...