吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12538|回复: 55
收起左侧

[Python 转载] 吐血整理的初学者习题,今天敲了一晚上,一边做一边回顾

  [复制链接]
埃博拉 发表于 2017-12-30 06:06
本帖最后由 wushaominkk 于 2018-8-28 09:19 编辑

明天继续更新装饰器以及剩余的定义函数一边做题一边编译器里敲 已经天亮了沉迷python  无法自拔希望初学者认真做题,总会有帮助的,在里面我每道题尽可能用多种方法解

输出1-100连续数字

for i in range(1,101):

print(i)

输出100-1且间隔的为2数字

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

print(i)

使用continue输出数字1 2 3 4 5 6  8 9 10

for i in range(1,11):  #无空格版

if i == 7:

continue

print(i)

for i in range(1,11):  #有空格

if i == 7:

print(' ')

else:

print(i)

打印 1-99之间的所有奇数

for i in range(1,100,2):

print(i)

打印 1-99之间所有能被3整除数

for i in range(1,100):

if i%3 == 0:

print(i)

打印 1-99之间所有数总和

num = 0

i = 1

while i < 100:

num += i

i += 1

print(num)

打印 1-99之间所有奇数总和

num = 0

i = 1

while i < 100:

if i%2 == 1:

num += i

i +=1

print(num)

打印 1-2+3-4+5-6+7 ...+99 之间所有奇数总和

i = 1

num = 0

while i < 100:

if i%2 == 1:

num += i

else:

num -= i

i += 1

print(num)

打印 1-2+3-4+5-6+7 ...+99 之间所有奇数总和排除66的数字

i = 1

num = 0

while i < 100:

if i != 66:

if i%2 == 1:

num += i

else:

num -= i

i += 1

print(num)

字符串格式化 %s字符串  %d数字

msg = 'my name is %s, my age %d'%('Ebola',23)

print(msg)

用数字循环打印1,10,3

flag = False

for i in range(1,10,2):

print(i)

if flag:

break

for i in range(10,20):

flag = True

print(i)

break

for i in range(1,10,2):

print(i)

if i == 3:

break

for i in range(10,13):

print(i)

break

######### 索引为奇数值,删除

li = [11, 22, 33, 44, 66]

li1 = []

还思路偶数位置添加到新列表

for a,b in enumerate(li):

print(a,b)

if a%2 == 0:

li1.append(b)

print(li1)

切片思想

li = li[0:5:2]

print(li)

倒删除

for i in range(len(li)-1,-1,-1):

if i%2==1:

del li[i]

print(li)

文件修改实例

with open('文件使用实例','w',encoding='utf-8') as f ,open('文件使用实例1','w', enconding='utf-8')as f1:

for i in f:

i.

###############################################################################

1.变量名命名规则(3分)

由字母、数字、下划线组成;数字不能开头;不能为python中特殊字符;见名知意,一般用下划线将单词连接

2.字节和位关系(2分)


1个字节由8个二进制数表示,1个二进制数代表1位,即1byte=8bite

3.看代码写结果(2分)

name = “wupeiqi”

result = name.upper()

print(name)

print(result)


   输出结果:'wupeiqi' 'WUPEIQI'         #字符串功能不改变原内容

#

4.“埃博拉”使用utf-8编码时,占用字节以及位数;使用gbk编码时,占用字节以及位数(2分)

utf-8(汉字占三个字节)时占用9个字节,54位;使用gbk(汉字占两个字节)时占用6个字节,48位

查看代码使用占字符

print(bytes("李泉",encoding='utf-8'))

print(bytes("李泉",encoding='gbk'))

5.简述 一下两段代码的区别?(2分)

代码1:

n1 = “wupeiqi”

n2 = n1

代码2:

n1 = “wupeiqi”

n2 = “wupeiqi”

n1 n2指向同一个内存地址

n1,n2两个内存地址是完全不同的

6.默认字符串 中的10个功能并描述作用(10分)

(1)upper()        全部变大写

(2)lower()        全部变小写

(3)strip()         首尾去空格、制表符及换行符等,指定去除的内容

(4)split()        将字符串分割

(5)captalisize()  首字母大写

(6)isdecimal()    是否全部为数字

(7)startswith()   是否以什么开头

(8)endswith()     是否以什么结尾

(9)lstrip()       左去空格

(10)rstrip()      右去空格

  (11)replace()     替代

(12)join()        连接-以一个字符串为连接符连接一个可迭代对象中的内容,内容的每一项必须为字符串

(13)isdigit()     是否为纯数字

(14)isalpha()     是否为纯字母

(15)isspace()     是否为纯空格

7.书写布尔值为False的常用值(2分)

0 none "" [] () {}

8.书写Python3和Python2的三个不同(3分)

默认编码不同:py2为ascii,py3为unicode

除法不同:py2中"/"得整数商,py3中为正常除法

print形式不同:py2要不要括号都可以,py3必须要有括号

9.简述深浅拷贝(2分)

浅拷贝直接使用copy()方法即可,只拷贝第一层数据;深拷贝需要引入copy模块,将数据的所有层都进行拷贝

10.分别使用for和while循环实现 1 - 2 + 3 - 4 + 5 …+99 (8分)

sum=0

for i in range(1,100):

if i%2==0:

sum-=i

else:

sum+=i

print(sum)

#

sum=0

i=1

while i<100:

if i%2==0:

sum-=i

else:

sum+=i

i+=1

print(sum)

#

11.使用range实现打印 100,99,98…1,0 (2分)

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

print(i)

12. 看代码写结果(3分)

#

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]

13. 打印 9*9 乘法表(8分)即:

  1 * 1 = 1

  1 2 = 2 2 2 = 4

  1 3 = 3  2 3 = 6 …

  …

  1 9 = 9  2 9 = 18 …

for i in range(1,10):

for j in range(1,i+1):

print('%d%d=%d'%(j,i,ij),end=' ')

print()

14. 判断 一下代码是否正确,如果错误则改正,否则书写结果(4分)

name = "你{0},{1} 无理 取闹"

n1 = name.format('冷酷','无情')

print(n1)

n2 = name.format(*['冷酷',' 无情'])   #错误:列表打散用1个

print(n2)

name = "你{xx},{oo} 无理 取闹"

n3 = name.format(oo='冷酷',xx='无情')

print(n3)

n4 = name.format({'xx': '冷酷', 'oo':'无情'})  #字典打散用2个

print(n4)

15. 计算 用户输入的内容中索引为奇数并且值为数字的个数(7分)

方法一 切片

count = input('请输入内容')

num = 0

count = count[1::2]

for i in count:

if i.isdigit():

num += 1

print(num)

方法二

count = input('请输入内容')

num = 0

for i in range(len(count)):

if i%2==1:

if count[i].isdigit():

num += 1

print(num)

16. 实现购物车(8分)

  功能要求:

  要求用户输入自己拥有总资产,例如:2000

  显示商品列表,让用户根据序号选择商品,加入购物车

  购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。

  购买成功时,需要打印购物清单

  商品列表:

  v = [

{"name": "电脑", "price": 1999},

{"name": " 鼠标", "price": 10},

{"name": "游艇", "price": 20},

{"name": "美 女 ", "price": 998},

]

v = [

{"name": "电脑", "price": 1999},

{"name": " 鼠标", "price": 10},

{"name": "游艇", "price": 20},

{"name": "美 女 ", "price": 998},

]

lis_car = []

print('--------------欢迎光临-------------')

user_money = input('请输入您的金额')

if int(user_money) > 0:

while 1:

for x,y in enumerate(v,1):

print(x,y['name'].strip(),y['price'])

stor_num_user = input('请输入您要购买的商品序号/退出请按Q/结算B')

if stor_num_user.strip().isdigit():

if 0 < int(stor_num_user) < len(v)+1:

lis_car.append(v[int(stor_num_user)-1]['price'])

else:

print('请输入有效数字')

elif stor_num_user.strip().isalpha():

if stor_num_user.strip().upper() == 'B':

lis_car_money = sum(lis_car)

if lis_car_money < int(user_money):

print('剁手成功')

break

else:

print('余额不足')

break

else:

print('输入正确退出按键')

else:

print('余额为0,请充值再购物')

17.看代码书写结果(3分)

for i in range(0,5):

print(i)

for j in (0,i):  #不是range 仔细!!!!

print(j)

代码结果为:0 0 0 1 0 1 2 0 2 3 0 3 4 0 4

18.看代码书写结果(3分)

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

#

19.补充代码(5分)

有如下值集合 [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]

li1 = []

li2 = []

dic = {}

dic['key1'] = li1

dic['key2'] = li2

for i in li:

if i > 66:

li1.append(i)

elif i < 66:

li2.append(i)

else:

pass

print(dic)

思路二:

li = [11,22,33,44,55,66,77,88,99,90]

dic={}

for i in li:

if i > 66:

if 'k1' in dic:

dic['k1'].append(i)

else:

dic['k1'] = [i]

elif i < 66:

if 'k2' in dic:

dic['k2'].append(i)

else:

dic['k2'] = [i]

else:

pass

print(dic)

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

li = [11,22,33,44,55]

a = int(li[1])+int(li[-1])

li.insert(3,a)

print(li)

21.写代码,有以下数字:1,2,3,4,5,6,7,8 共八个数字,能组成多少个互不相同且无重复的两位数?(8分)

count = 0

for i in range(1,9):

for j in range(1,9):

if i != j:

count += 1

print(count)

22.写代码,有以下列表,请找到列表中任意两个数字相加等于9的元素的索引(8分)

nums = [2,7,11,15,1,8,7]

  结果为: [(0,1),(4,5)...]

li1 = []

for i in range(len(nums)):

for j in range(i+1,len(nums)):

if nums[i] + nums[j] == 9:

li1.append((i,j))

print(li1)

23. 看代码,书写结果(2分)

dic = dict.fromkeys(['k1',True,(11,22)],[])

dic['k1'].append(6)

dic[('k2')].append(7)

print(dic)

{'k1': [6, 7],'k2':[6,7] True: [6, 7], (11, 22): [6, 7]}

24.基于文件实现用户登录程序,提示用户输入用户名和密码,检查用户名是否正确。保存用户名密码的文件user.txt

username = input('请输入用户名')

with open('user.txt','r',encoding='gbk') as f:

a = f.readline()

l1 = a.strip().split('|')

if l1[0] == username:

passwd = input('请输入密码')

if passwd == l1[1]:

print('登陆成功')

else:

print('密码错误')

else:

print('账号错误')

25. 看代码,书写结果(2分)

name = "ebola"

userlist = ['狗狗','露露']

userlist.extend(name)  #迭代去增加

print(userlist)

26.列举int、bool、str、list、tuple、dict、set中可以作为字典的Key的类型(2分)

int、bool、str、tuple

27.转换(6分,每个1分,最后 一个2分)

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

s = "alex"

lis = list(s)

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

s = "alex"

val=tuple(s)

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

li = ["alex", "seven"]

def func(*args):

li = args

print(li)

func(*li)

val = tuple(li)

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

li = ('alex', 'seven')

val=list(li)

print(val)

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

li = ["alex", "seven"]

dic = {}

x = 0

for i in range(10,len(li)+10):

dic[i] = [li[x]]

x += 1

print(dic)

li = ["alex", "seven"]

dic = {}

x = 10

for i in li:

dic[x] = i

x += 1

print(dic)

1.li = [1,2,3,5]  在列表中元素5的前边进行添加一个‘3’

#

li.insert(-2,'3')

#

2. dic={‘key’:’v1’}   dic2={‘key2’:’v2’}  将俩个字典进行合并

dic.upadte(dic2)

排序

lis =[8,5,2,0,4,6]

lis.sort()

print(lis)

4.for i in range(3)

Print i+1

以上代码有什么问题

冒号 括号

#

5.a=‘hello world’ 对这个变量进行顺序反转

a[-1::-1]

6.d={‘k1’:{2:{‘k3’:[{(1,2,3):6},2,3,4]}}}将(1,2,3)对应的值修改成66

d[k1][2][k3][0][(1,2,3)] = 66

免费评分

参与人数 29吾爱币 +28 热心值 +30 收起 理由
zyz911222 + 1 + 1 用心讨论,共获提升!
catter + 1 + 1 我很赞同!
梧呆 + 1 + 1 我很赞同!
wxy123 + 1 + 1 我很赞同!
cs001 + 2 + 1 谢谢@Thanks!楼主格式能调整下嘛
五五66 + 1 + 1 热心回复!
lemons + 1 + 1 谢谢@Thanks!
vcvexuko + 1 + 1 用心讨论,共获提升!
mail139 + 1 + 1 谢谢@Thanks!
skyfallall + 1 我很赞同!
小黑渣 + 1 + 1 我很赞同!
lushan63 + 1 + 1 用心讨论,共获提升!
zwk123456 + 1 + 1 谢谢@Thanks!
lkkjm + 1 + 1 用心讨论,共获提升!
星月神话199100 + 1 + 1 用心讨论,共获提升!
TanSent + 1 + 1 我很赞同!
Fieryhao + 1 + 1 谢谢@Thanks!
abcxutao + 1 + 1 我很赞同!
零之初音 + 1 + 1 用心讨论,共获提升!
西华刺激 + 1 + 1 谢谢@Thanks!
ldgreg1 + 1 + 1 用心讨论,共获提升!
riwfhiu + 1 + 1 用心讨论,共获提升!
a2001103 + 1 + 1 用心讨论,共获提升!
会飞的大屌 + 1 + 1 热心回复!
流年回忆 + 1 + 1 用心讨论,共获提升!
zhaolisheng + 1 + 1 热心回复!
iteamo + 2 我很赞同!
小蜜蜂 + 1 + 1 谢谢@Thanks!
默默黎明 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lilihuakai 发表于 2018-8-5 23:15
感谢分享!
楼主的习题很有用,受益良多。可是我发现点小问题还请指正,谢谢。测试环境为python 3.7,win7 64位
1.在习题20的答案中,计算a的值出错,应该是:a = int(li[0])+int(li[-1])
2.在习题23的问题中,dic的赋值应该为:dic = dict.fromkeys(['k1','k2',True,(11,22)],[])。不然程序出错
3.最后一题的答案应该为:d['k1'][2]['k3'][0][(1,2,3)] = 66
Tisrop 发表于 2017-12-30 10:37
 楼主| 埃博拉 发表于 2017-12-30 06:19
本帖最后由 埃博拉 于 2017-12-30 06:21 编辑

文件修改实例那个题回头补一下 ,和后续的习题放一块
这是经典模型  
f = open('file',encoding='utf-8')
f2 = open('file_bak','w',encoding='utf-8')             #文件本身不存在
for line in f:
    user_list = line.split('|')
    print(user_list)
    user_list[0] = user_list[0]+'_somebody'
    #print(user_list)
    user_str = '|'.join(user_list)
    print(user_str)
    f2.write(user_str)
f.close()
f2.close()
import os                                              #模块- 用来和操作系统交互的模块
os.remove('file')                                      #删除一个文件
os.rename('file_bak','file')                           #重命名一个文件
LeiSir 发表于 2017-12-30 07:19
写的好,学了一段时间又扔下了
天羽七星 发表于 2017-12-30 07:35 来自手机
楼主辛苦了,希望帮主有用的人!
czwuyang 发表于 2017-12-30 08:36 来自手机
感谢楼主的辛苦劳动。元旦快乐
稀罕谁 发表于 2017-12-30 08:46
谢谢!辛苦了!
fangaiyisheng 发表于 2017-12-30 09:08

楼主辛苦
丿颠覆灬虎哥 发表于 2017-12-30 09:36
哇哇哇,好认真,和我修BUG的热情差不多
wushiqi 发表于 2017-12-30 18:25
楼主学的什么语言
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-22 21:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表