目录
目录
第一周:
题目1:
题目2:
题目3:
题目4:
题目5:
第二周:
题目6:
题目7:
题目8:
题目9:
题目10:
题目11:
题目12:
题目13:
第三周:
题目14:
题目15:
题目16:
题目17:
题目18:
题目19:
题目20:
题目21:
第四周:
题目22:
第一周:
题目1:
题目2:
题目3:
题目4:
题目5:
第二周:
题目6:
题目7:
题目8:
题目9:
题目10:
题目11:
题目12:
题目13:
第三周:
题目14:
题目15:
题目16:
题目17:
题目18:
题目19:
题目20:
题目21:
第四周:
题目22:
第一周:
题目1:
小欧拿一百块钱,一只公鸡5块钱,一只母鸡3块钱,三只小鸡1元钱。买一百只,问公鸡、母鸡、小鸡各多少只,请用列表推导式解决!
思路:买一百只鸡,即公鸡,母鸡,小鸡的总数为100只;一百块钱,即公鸡,母鸡,小鸡花的钱总数为100。
代码实现:
for a in range(0, 101):
for b in range(0, 101):
for c in range(0, 101):
if 5 * a + 3 * b + c == 100:
if a + b + 3*c == 100:
print("公鸡有%d只,母鸡有%d只,小鸡有%d只" % (a, b, 3*c))
else:
pass
else:
pass
运行结果如下图:
题目2:
有如下值集合[11,22,33,44,55,66,77,88,99,90], 将所有大于66的值保存至字典的第一个key中,将小于66值保存至第二个key的值中。
如下图所示:
思路:创建两个空的数组,用if语句将大于66的存入第一个数组内,剩下的放入第二个数组,然后再将他们存入字典中。
代码实现:
a = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
b = []
c = []
for d in a:
if d < 66:
b.append(d)
elif d > 66:
c.append(d)
else:
pass
e = {'k1': b, 'k2': c}
print(e)
运行结果如下图:
题目3:
使用lambda函数对1~1000进行求和
思路:用lambda表达式求1~1000的和,即使用等差数列前n项和的表达式,然后将首项尾项公差写入即可。
代码实现:
c = lambda a1, an, n: n*(a1+an)/2 print(c(1, 1000, 1000))
c中的参数即对应lambda表达式里面的未知数。
运行结果如下图:
题目4:
请你把下图的抽奖过程用程序实现并且封装成一个的函数。
思路:
首先使用time模块实现延迟输出,即在开头输入import time,最后在要延迟输出的语句后输入time.sleep(1),即延迟1秒输出。最后到抽奖环节,抽奖就要用到random模块创建随机函数,即在开头输入import random,random.randrange(0, 10)即随机输出0到9的数,不包括10 。
代码实现:
mport time
import random
a = input("请输入你的简称")
print("开奖倒计时3")
time.sleep(1)
print("开奖倒计时2")
time.sleep(1)
print("开奖倒计时1")
time.sleep(1)
print(" __n >(’ )n )/n /( n / `----/ n ~=- /n ~^~^~^~^~^~^~^")
time.sleep(1)
b = random.randrange(0, 10000000000000000000000000000)
if b == 0:
print("很遗憾,你没中奖。")
else:
print("恭喜%s中奖!" % a)
运行结果如下图:
题目5:
和电脑玩一个剪刀石头布的游戏:电脑随机出拳,我们可选择出什么。(电脑随机出、用户手动输入且要判断输入是否合法)封装为一个函数
思路:随机出拳,可以把0代表石头,1代表剪刀,2代表布,然后机器人在0到2之间随机出一个数。
代码实现:
import random
a = input("请出拳:(石头、剪刀、布)")
b = random.randrange(0, 3)
if a == "剪刀" or a == "石头" or a == "布":
print("----战斗过程----")
if b == 0:
print("电脑出了:石头")
elif b == 1:
print("电脑出了:剪刀")
elif b == 2:
print("电脑出了:布")
print("你出了:", a)
# 0是石头,1是剪刀,2是布。
print("----结果----")
if a == "石头" and b == 0:
print("平局!")
elif a == "石头" and b == 1:
print("你赢了!")
elif a == "石头" and b == 2:
print("你输了!")
elif a == "剪刀" and b == 0:
print("你输了!")
elif a == "剪刀" and b == 1:
print("平局!")
elif a == "剪刀" and b == 2:
print("你赢了!")
elif a == "布" and b == 0:
print("你赢了!")
elif a == "布" and b == 1:
print("你输了!")
elif a == "布" and b == 2:
print("平局!")
else:
print("请输入正确的字")
运行结果如下图:
第二周:
题目6:
小明、小红、小刚是同班同学,且坐在同一排,分别坐在第一位、第二位、第三位。
由于他们的身高都差不多,所以,老师计划让他们三个轮流坐在第一位。
每次换座位的时候,第一位变第三位,后面两位都往前一位
思路:每次换位置的时候将第一位的变成第三位。
代码实现:
a = ["小明", "小红", "小刚"]
i = 1
for i in range(0, 1000000):
i += 1
[a[0], a[1], a[2]] = [a[1], a[2], a[0]]
print(a)
input("按回车键继续:")
运行结果如下图:
题目7:
i.系统里面有多个用户,用户的信息目前保存在列表里面,账号密码一一对应
users = ['root','westos']
passwd = ['123','456']
ii.用户登陆(判断用户登陆是否成功)
1).判断用户是否存在
2).如果存在
1).判断用户密码是否正确
如果正确,登陆成功,推出循环
如果密码不正确,重新登陆,总共有三次机会登陆
3).如果用户不存在
重新登陆,总共有三次机会
思路:
账号密码一一对应,即可用if语句判断输入的账号是否对应所属的密码,每次都会用掉一次机会。
代码实现如下:
users = ['root', 'westos']
passwd = ['123', '456']
i = 1
while i < 4:
a = input("请输入您的账号:")
if a == users[0]:
b = input("请输入您的密码:")
if b == passwd[0]:
print("登录成功!")
break
else:
i += 1
elif a == users[1]:
b = input("请输入您的密码:")
if b == passwd[1]:
print("登录成功!")
break
else:
i += 1
else:
i += 1
运行结果如下图:
题目8:
猜数字游戏
1. 系统随机生成一个1~100的数字;
2. 用户总共有5次猜数字的机会;
3. 如果用户猜测的数字大于系统给出的数字,打印“too big”;
4. 如果用户猜测的数字小于系统给出的数字,打印"too small";
5. 如果用户猜测的数字等于系统给出的数字,打印"恭喜",并且退出循环;
思路:
首先随机生成1到100的数,然后让用户输入一个数,用if语句判断用户猜测的数字与随机生成的数字是否一致,大的就too big,小的就too small,对了就打印恭喜,然后推出循环。
代码实现如下:
import random
a = random.randrange(1, 101)
i = 1
while i < 6:
b = int(input("请输入一个数字"))
if a < b:
print("too big")
i += 1
elif a > b:
print("too small")
i += 1
else:
print("恭喜!!!")
break
运行结果如下图:
题目9:
题目描述:
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前>后没有空格。
比如: (1) “hello xiao mi”-> “mi xiao hello”
输入描述:
输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
输出描述:
对于每个测试示例,要求输出句子中单词反转后形成的句子
示例1:
- 输入
hello xiao mi
- 输出
mi xiao hello
————————————————
思路:
这里运用到split函数,它主要是切割字符串,将输入的字符串中的空格切割,然后就可以切割成三分,然后再再跟前面座位一样重新排序。
代码实现如下:
a = input("请输入一串句子:")
b = a.split(" ")
c = b[::-1]
d = ()
for i in range(len(b)):
print(c[i], end=" ")
运行结果如下图:
题目10:
你好,人们叫我'程序员' 这个世界的人都选择无视我 只有你看到了我并和我打招呼 我感到很孤单,很孤单 你愿意和我成为朋友吗?
请你把这段话按照下面的格式打印出来:
你好,人们叫我'程序员'
这个世界的人都选择无视我
只有你看到了我并和我打招呼
我感到很孤单,很孤单
你愿意和我成为朋友吗?
提示:本题需要运用三个知识点:换行,运用转义字符将单引号打印出来,打印函数
代码实现如下:
print('你好,人们叫我'程序员'n这个世界的人都选择无视我n只有你看到了我并和我打招呼n我感到很孤单,很孤单n你愿意和我成为朋友吗?')
运行结果如下图:
题目11:
定义一个Person类,使用Person类,创建一个mayun对象后,添加company属性,值是"阿里巴巴";创建一个wangjianlin对象,添加company属性,值是"万达集团"
代码实现如下:
class person:
d = 0
def __init__(self, name, company):
self.name = name
self.company = company
person.d += 1
def b(self):
print("名字是:", self.name)
print("公司是:", self.company)
while True:
name = input("请输入名字:")
company = input("请输入公司:")
c = person(name, company)
c.b()
运行结果如下图:
题目12:
企业发放的奖金根据利润(I)的多少来提成:
低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%;
高于100万元时,超过100万元的部分按1%提成。
从键盘输入当月利润I,求应发放奖金总数?
代码实现如下图:
I = float(input("请输入当月利润(万元):"))
if I <= 10:
a = I * 0.1
elif 10 < I <= 20:
a = (10 * 0.1) + (I - 10) * 0.75
elif 20 < I <=40:
a = (10 * 0.1) + (20 - 10) * 0.75 + (I - 20) *0.05
elif 40 < I <=60:
a = (10 * 0.1) + (20 - 10) * 0.75 + (40 - 20) * 0.05 + (I - 40) * 0.03
elif 60 < I <= 100:
a = (10 * 0.1) + (20 - 10) * 0.75 + (40 - 20) * 0.05 + (60 - 40) * 0.03 + (I - 60) * 0.015
elif I > 100:
a = (10 * 0.1) + (20 - 10) * 0.75 + (40 - 20) * 0.05 + (60 - 40) * 0.03 + (100 - 60) * 0.015 + (I - 100) * 0.01
print("应发奖金数为:%0.2f万元" % a)
运行结果如下图:
题目13:
有如下数字:
05 04 03
06 01 02
07 08 09
像这样扩展到最多包含前25个数字:
17 16 15 14 13
18 05 04 03 12
19 06 01 02 11
20 07 08 09 10
21 22 23 24 25
您可能会很容易注意到,第一层(也是最内层01)仅包含一个数字(),第二层-紧邻其周围-包含8个数字(02-09范围内的数字),依此类推。
您的任务是创建一个给定数字的layers(n)函数,该函数返回n在第几层
例子:
layers(1) return 1
layers(5) return 2
layers(25) return 3
layers(30) return 4
layers(50) return 5
思路:
由上图可知,当为1的时候就是第一层,2到9为第二层,10到25为第三层,所以可知设层数i,范围就是在(2*i-3)**2+1 到 (2*i-1)**2 之间。
代码实现如下:
def layers(a):
if a == 1:
print("return 1")
elif a > 1:
for i in range(2, a):
if (2*i-3)**2+1 <= a <= (2*i-1)**2:
print("return %d" % i)
break
else:
print("出错啦!!!")
layers(25)
运行结果如下图:
第三周:
题目14:
创建一个20行5列的二维数组,其值范围为0~9(须为整数),在其所有的值中随机抽取20个位置进行修改,修改后的值为100,如图所示:
思路:
先创建个20行5列的二维数组,里面的数是在0到9之间的,所以需要使用random模块建立随机数,再使用numpy模块建立二维数组,然后再这20行5列的数组里面随机找20个位置进行修改。
代码实现如下:
import random import numpy as np a = np.random.randint(0, 10, (20, 5)) f = [] while len(f) <= 19: c = random.randrange(0, 20) d = random.randrange(0, 5) e = (c, d) if e not in f: a[c, d] = 100 f.append(e) print(a)
其中,if语句的使用是为了确保c,d两个随机数不会相同,相同的则不会进行数据修改。
运行结果如下图:
题目15:
A君目前在一家资产评估公司实习,他的工作日常就是跑遍市区里的住宅小区,调查小区的地址、建筑年份和每栋楼里每个单元里每一户的朝向和面积。比如一户的资料是:富安花园(小区)3栋 2单元 401户;朝向:南北朝向;面积:90平方。他需要把每一户的信息都记录下来。为了节省时间,通常他们会当场把一栋楼里所有单元的数据画在一张平面图里。等回去之后,再把平面图记录的数据,录入到excel表里。
举个例子,上面这张平面图表示的是这一栋有4个单元,每个单元有15层楼,其中1,2单元有两户,面积和朝向是140平方,南北朝向。3单元有四户,有2户面积60平方,南北朝向,2户面积80平方,东西朝向;4单元有四户,面积70平方,东西朝向。A君抱怨原本看房已经很累人了,录入更烦。可能你觉得用excel的自动填充功能不是很方便吗,事情远没有这么简单。确实,有一些重复的单元格只要填一次,自动下拉就可以复制粘贴,对于A君(excel菜鸟)来说,每次只要手动输入户室号就可以。(当然掌握一些excel技巧可以节省一些功夫)
不过,不同单元的户数、朝向和面积不完全是一样的,所以不能以一个单元的数据复制给其他单元,比如说,好不容易输入了1单元的数据,复制给了2单元,但因为3单元有4户,面积和朝向都不一样,所以3单元又得重新处理,户室号、面积、朝向都不一样。
我们的任务是用程序自动录入数据,甚至连excel都不用打开。在终端运行该程序后,打开excel对应的文件,就会发现数据是按一定的规律录入好的。(CSV格式)
思路:
要以csv格式写入表格则要用到csv库,然后创建对象。
代码实现如下:
# 导入CSV安装包
import csv
# 1. 创建文件对象
f = open('富安花园小区楼栋表.csv', 'w', encoding='utf-8', newline='')
# 2. 基于文件对象构建 csv写入对象
csv_writer = csv.writer(f)
# 3. 构建列表头
csv_writer.writerow(["小区名称", "地址", "建筑年份", "楼栋", "单元", "户室", "朝向", "面积"])
# 4. 写入csv文件内容
for i in range(1, 169):
a = input("请输入户室号:")
if 1 <= i <= 28:
csv_writer.writerow(["晨星花园", "双云路88号", "2010", "1栋", "1单元", a, "南北", "140"])
elif 29 <= i <= 56:
csv_writer.writerow(["晨星花园", "双云路88号", "2010", "1栋", "2单元", a, "南北", "140"])
elif 57 <= i <= 114:
if int(a) % 10 <= 2:
csv_writer.writerow(["晨星花园", "双云路88号", "2010", "1栋", "3单元", a, "南北", "60"])
else:
csv_writer.writerow(["晨星花园", "双云路88号", "2010", "1栋", "3单元", a, "东西", "80"])
elif 115 <= i <= 168:
csv_writer.writerow(["晨星花园", "双云路88号", "2010", "1栋", "4单元", a, "东西", "70"])
# 5. 关闭文件
f.close()
运行结果如下图:
题目16:
获取并输出知乎网页的源代码,最后保存为txt文本,链接为:
https://www.zhihu.com/
此作业只需提交输出的部分源代码截图和txt文件内容截图
思路:
利用urllib.request模块,并用urllib.reques.rulopen打开知乎网页,将读取到的东西赋值给html,然后将读取的东西解码,然后将解码的东西录入txt文件。
代码实现如下:
import urllib.request
page = urllib.request.urlopen('https://www.zhihu.com/')
html = page.read()
data = html.decode('utf-8')
file = open('知乎1.txt', 'wb')
file.write(html)
file.close()
运行结果如下图:
题目17:
使用正则表达式从下面内容获取所有jpg结尾的网页图片链接,如(这只是其中一个):
http://kr.shanghai-jiuxin.com/file/2021/1112/small95a18b4db31f407b3cd7c275d2eb7e36.jpg
王者荣耀妲己女仆咖啡带鱼屏壁纸查看:0次11-12



