老男孩python学习阶段性练习

问题一:命名规范

答:

要求:
1.数字、字母、下划线组成
2.不能以数字开头
3.不能是python的关键字
建议:
1.见名知意
2.若需要用多个单词组成,用下划线连接
补充:
不使用驼峰式命名规则

问题二:字节和位的关系

答:

字节(byte):计算机里最小的存储单位
位(bit):计算机里最小的表示单位
1byte=8bit

问题三:看代码写结果

name = 'wupeiqi'
result = name.upper()
print(name)
print(result)

答:

print(name):'wupeiqi'
print(result):'WUPEIQI'

问题四:'李泉'使用utf-8编码时,占用字节及位数,使用gbk编码,占用字节及位数

答:

utf-8:占6个字节,48位
gbk:占4个字节,32位

问题五:简述一下两段代码的区别

代码一:

n1 = 'wupeiqi'
n2 = n1

代码二:

n1 = 'wupeiqi'
n2 = 'wupeiqi'

答:

代码一:n1和n2指向的是同一内存地址。
代码二:n1和n2指向的是不同的内存地址。

问题六:默认字符串中的常用功能并描述作用

答:

1.upper:字符串转大写
2.lower:字符串转小写
3.strip:去除两侧的空格/换行符/制表符/其他指定要去除的内容
4.split:字符串根据指定的分隔符进行切分
5.replace:字符串替换
6.join:字符串拼接,以一个字符串位连接符连接一个可迭代对象中的内容,内容的每一项必须为字符串
7.startswith:判断字符串以什么开头
8.endswith:判断字符串以什么结尾
9.count:计算一个字符在一个字符串中出现的次数
10.index:返回一个字符在一个字符串中出现的位置
11.isdigit:判断字符串的内容是否为纯数字
12.isalpha:判断字符串的内容是否为纯字母
13.isspace:判断字符串的内容是否为纯空白

问题七:书写布尔值为false的常用值

答:

0、None、''、[]、()、{}

问题八:书写python2和python3的区别

答:

1.默认解释器编码
py2:ascii
py3:utf-8

2.输入
py2:raw_input
py3:input

3.输出
py2:print 要输出的内容
py3:print(要输出的内容)

4.除法
py2: 只能保留整数位
py3: 能保存所有

5.整型
py2: 超出长度之后就会变为long类型
py3: 只有int没有long,所有数字都是int类型

问题九:简述深浅拷贝

答:

浅拷贝:不管多么复杂的数据结构,浅拷贝都只会copy一层。

深拷贝: 拷贝嵌套层次中的所有可变类型

问题十:分别用for和while循环实现 1-2+3-4+5-....+99

答:

for循环:

total = 0
for i in range(1, 100):
    if i % 2 == 0:
        total -= i
    else:
        total += i
print(total)

while循环:

total = 0
i = 1
while i < 100:
    if i % 2 == 0:
        total -= i
    else:
        total += i
    i += 1
print(total)

问题十一:用range实现打印 100,99,98 ...1,0

答:

for i in range(100, -1, -1):
    print(i)

问题十二:看代码写结果

n1 = [11, 22, 33]
n2 = n1
n3 = n1.copy()
n1[1] = 666

print(n1)
print(n2)
print(n3)

答:

[11,666,33]
[11,666,33]
[11,22,33]

问题十三:打印9 *9乘法表

答:

for i in range(1, 10):
    for j in range(1, i + 1):
        print('%d * %d = %d' % (j, i, i * j), end=' ')
    print()

问题十四:判断以下代码是否正确,如果错误则改正,否则书写结果

name = '你{0},{1}无理取闹'
n1 = name.format('冷酷','无情')
print(n1)
n2 = name.format(**['冷酷','无情'])
print(n2)

name = '你{xx},{oo}无理取闹'
n3 = name.format(oo='冷酷',xx='无情')
print(n3)
n4 = name.format(*{'xx':'冷酷','oo':'无情'})
print(n4)

答:

print(n1):你冷酷,无情无理取闹
正确代码如下:

n2 = name.format(*['冷酷','无情'])
print(n2)

print(n2):你冷酷,无情无理取闹
print(n3):你无情,冷酷无理取闹
正确代码如下:

n4 = name.format(**{'xx':'冷酷','oo':'无情'})
print(n4)

print(n4):你冷酷,无情无理取闹

问题十五:计算用户输入的内容中索引为奇数且值为数字的个数

答:

num = 0
content = input('请输入内容:')
for i in range(0, len(content)):
    if i % 2 != 0 and content[i].isdigit():
        num += 1
print(num)

问题十六:实现购物车

功能要求:

要求用户输入自己拥有的总资产,例如:2000。
显示商品列表,让用户根据序号选择商品,加入购物车购买,
如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
购买成功时,需要打印购物清单
商品列表:
goods = [
{'name': '电脑', 'price': 1999},
{'name': '鼠标', 'price': 10},
{'name': '游艇', 'price': 20},
{'name': '美女', 'price': 998}
]

答:

# ! /usr/bin/env python
# -*- coding:utf-8 -*-
goods = [
    {'name': '电脑', 'price': 1999},
    {'name': '鼠标', 'price': 10},
    {'name': '游艇', 'price': 20},
    {'name': '美女', 'price': 998}
]

goods_dict = {}  # 构建空字典存储商品信息
goods_buy_dict = {}  # 构建空字典存储用户的购买信息
total = 0  # 存储商品总额

sum_amount = input('请输入您拥有的总资产:').strip()

# 打印商品列表
for index, item in enumerate(goods, start=1):
    goods_dict[str(index)] = list(item.values())
print('商品列表如下:')
for dict_index, dict_content in goods_dict.items():
    print('%s:%s %d' % (dict_index, dict_content[0], dict_content[1]))

# 让用户输入购买信息,并存入到goods_buy_dict中,以购买商品序号为键,以购买数量为值
while True:
    buy_index = input('请输入要购买的物品序号:').strip()
    if goods_dict.get(buy_index):
        while True:
            buy_count = input('请输入要购买的物品数量:').strip()
            if buy_count.isdigit():
                goods_buy_dict[buy_index] = int(buy_count)
                break
            else:
                print('输入有误,请重新输入!')
                continue
    else:
        choice = input('您输入的商品序号不在商品列表中,是否继续购买(Y/N):').strip()
        if choice.upper() == 'Y':
            continue
        else:
            break

# 合计商品总额,并与用户输入总资产进行对比,如果商品总额大于总资产,提示账户余额不足,否则,购买成功,并打印购物清单
for buy_dict_index, buy_dict_count in goods_buy_dict.items():
    total += goods_dict[buy_dict_index][1] * buy_dict_count
if total > int(sum_amount):
    print('账户余额不足!')
elif len(goods_buy_dict) == 0:
    print('您的购物车是空的!')
else:
    print('购买成功!
')
    print('购物清单如下:')
    for k, v in goods_buy_dict.items():
        print('%s:购买%s个' % (goods_dict[k][0], v))
    print('合计金额:%s元' % (total))

问题十七:看代码写结果

for i in range(0, 5):
    print(i)
    for j in (0, i):
        print(j)

答:

0
0
0
1
0
1
2
0
2
3
0
3
4
0
4

问题十八:看代码写结果

while True:
    for i in range(10):
        print(i)
        if i == 5:
            continue
    else:
        break

答:

0
1
2
3
4
5
6
7
8
9

问题十九:补充代码

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

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

代码:

li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
result = {}
for row in li:

答:

li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
result = {}
for row in li:
    if row > 66:
        if result.get('k1'):
            result['k1'].append(row)
        else:
            result['k1'] = [row]
    elif row < 66:
        if result.get('k2'):
            result['k2'].append(row)
        else:
            result['k2'] = [row]
print(result)

问题二十:写代码

将列表 li = [11, 22, 33, 44, 55]的第一个和最后一个值相加并插入索引为3的位置

答:

li = [11, 22, 33, 44, 55]
li.insert(3,li[0]+li[-1])
print(li)

问题二十一:写代码

有以下数字:1,2,3,4,5,6,7,8共8个数字,可以组成多少个互不相同且无重复的两位数

答:

li = ['1', '2', '3', '4', '5', '6', '7', '8']
result = []
for i in li:
    for j in li:
        if i != j:
            if i + j not in result:
                result.append(i + j)
            elif j + i not in result:
                result.append(j + i)
print(result)

问题二十二:写代码

有以下列表,请找到列表中任意两个数字相加等于9的元素的索引
nums = [2, 7, 11, 15, 1, 8, 7]
结果为:[(0, 1), (0, 6), (4, 5)]

答:

nums = [2, 7, 11, 15, 1, 8, 7]
result = []
for i in range(len(nums)):
    for j in range(i, len(nums)):
        if nums[i] + nums[j] == 9:
            result.append((i, j))
print(result)

问题二十四:基于文件实现用户登录程序

提示用户输入用户名和密码,检查用户名和密码是否正确

保存用户名密码的文件user.txt

答:

#创建文件
li = ['alex|123123', 'root|89788fs', 'eric|mimimi']
f = open(file='user.txt', encoding='utf-8', mode='w')
for i in li:
    f.writelines(i + '
')
f.close()

#读取文件
message = '登录失败'
f = open(file='user.txt', encoding='utf-8', mode='r')
input_name = input('请输入用户名:')
input_pwd = input('请输入密码:')
for j in f:
    l = j.strip().split('|')
    if input_name == l[0] and input_pwd == l[1]:
        message = '登录成功'
        break
print(message)
f.close()

问题二十五:看代码书写结果

name = '海娇'
userlist = ['老狗', '方惊鸿']
userlist.extend(name)
print(userlist)

答:

['老狗', '方惊鸿', '海', '娇']

问题二十六:列举int、bool、str、list、tuple、dict、set中可以作为字典的key的类型

答:

int、bool、str、tuple

问题二十七:转换

a.将字符串s = 'alex'转换成列表
b.将字符串s = 'alex'转换成元组
c.将列表li = ['alex', 'seven']转换成元组
d.将元组tu = ('alex', 'seven')转换成列表
e.将列表li = ['alex', 'seven']转换成字典,且字典的key按照10开始向后递增

答:

a.

s = 'alex'
print(list(s))

b.

s = 'alex'
print(tuple(s))

c.

li = ['alex', 'seven']
print(tuple(li))

d.

tu = ('alex', 'seven')
print(list(tu))

e.

li = ['alex', 'seven']
d = {}
k = 10
for i in li:
    d[k] = i
    k += 1
print(d)
原文地址:https://www.cnblogs.com/zhanglongfei/p/11718579.html