埃博拉 发表于 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 68 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 =
# li1 = []
# #还思路偶数位置添加到新列表
# for a,b in enumerate(li):
#   print(a,b)
#   if a%2 == 0:
#         li1.append(b)
# print(li1)
###切片思想
# li = li
# print(li)
#倒删除
# for i in range(len(li)-1,-1,-1):
#   if i%2==1:
#         del li
# 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 =
# n2 = n1
# n3 = n1.copy()
# n1 = 666
# print(n1)
# print(n2)
# print(n3)
#
# 输出结果分别为:
# # 13. 打印 9*9 乘法表(8分)即:
#   1 * 1 = 1
#   1 * 2 = 2 2 * 2 = 4
#   1 * 3 = 32 * 3 = 6 …
#   …
#   1 * 9 = 92 * 9 = 18 …
# for i in range(1,10):
#   for j in range(1,i+1):
#         print('%d*%d=%d'%(j,i,i*j),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
# 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.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['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分)
# 有如下值集合 ,将所有 大于 66 的值保存 至字典的第 一个key中,将小于 66 的值保存至第二个key的值中。即: {'k1':大于66的所有值列表, 'k2':小于66的所有值列表}

# li =
# 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 =
# dic={}
# for i in li:
#   if i > 66:
#         if 'k1' in dic:
#             dic['k1'].append(i)
#         else:
#             dic['k1'] =
#   elif i < 66:
#         if 'k2' in dic:
#             dic['k2'].append(i)
#         else:
#             dic['k2'] =
#   else:
#         pass
# print(dic)

# 20.写代码,将列表 li = 的第一个值和最后一个值相加并插入索引为3的位置(3分)
# li =
# a = int(li)+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 =
# #   结果为: [(0,1),(4,5)...]
# li1 = []
# for i in range(len(nums)):
#   for j in range(i+1,len(nums)):
#         if nums + nums == 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': ,'k2': True: , (11, 22): }

# 24.基于文件实现用户登录程序,提示用户输入用户名和密码,检查用户名是否正确。保存用户名密码的文件user.txt
# username = input('请输入用户名')
# with open('user.txt','r',encoding='gbk') as f:
#   a = f.readline()
#   l1 = a.strip().split('|')
#   if l1 == username:
#         passwd = input('请输入密码')
#         if passwd == l1:
#             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 = ]
#   x += 1
# print(dic)
# li = ["alex", "seven"]
# dic = {}
# x = 10
# for i in li:
#   dic = i
#   x += 1
# print(dic)
# # 1.li = 在列表中元素5的前边进行添加一个‘3’
#
# li.insert(-2,'3')
#
# # 2. dic={‘key’:’v1’}   dic2={‘key2’:’v2’}将俩个字典进行合并
# dic.upadte(dic2)
#排序
# lis =
# 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[(1,2,3)] = 66

lilihuakai 发表于 2018-8-5 23:15

感谢分享!
楼主的习题很有用,受益良多。可是我发现点小问题还请指正,谢谢。测试环境为python 3.7,win7 64位
1.在习题20的答案中,计算a的值出错,应该是:a = int(li)+int(li[-1])
2.在习题23的问题中,dic的赋值应该为:dic = dict.fromkeys(['k1','k2',True,(11,22)],[])。不然程序出错
3.最后一题的答案应该为:d['k1']['k3'][(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 = user_list+'_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

楼主学的什么语言
页: [1] 2 3 4 5 6
查看完整版本: 吐血整理的初学者习题,今天敲了一晚上,一边做一边回顾