具体要求:
import keyword, string
print(keyword.kwlist)
print()
print(string.ascii_letters)
print()
print(string.digits)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else',
'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
'return', 'try', 'while', 'with', 'yield']
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
import keyword, string
def Identifier(s):
kw = keyword.kwlist # 内置关键字
# 请用if-else完成检测,打印conflict或者False
# your code here
# 标识符命名规范
# 1.数字,下划线,字母构成
# 2.避开关键字,这里s != kw
# 3.不能用数字开头
# 不能是关键字
if s in kw:
print(s, "标识符不能是关键字")
return False
# 开头必须是字母或者下划线
elif s\[0\] == "\_" or s\[0\] in string.ascii\_letters:
# 除开头以外,必须是数字+下划线+字母
for i in s\[1:\]:
if (i == "\_") or (i in string.digits) or (i in string.ascii\_letters):
pass
else:
print(s, "既不是关键字,开头也合法,但是后面有非法字符")
return False
print(s, "合法的标识符")
return True
else:
print(s, "不是关键字,开头已经不合法(后面不晓得)")
return False
print("01", Identifier("list"))
print("02", Identifier("abc#"))
print("03",Identifier("1a"))
list 合法的标识符
01 True
abc# 既不是关键字,开头也合法,但是后面有非法字符
02 False
1a 不是关键字,开头已经不合法(后面不晓得)
03 False
提示:本题考察对列表的切片和排序操作,注意切片下标。
import random
def sort2part():
# 用random生成20个随机数并完成本题要求
# your code here
# 创建一个列表用于保存随机数
total_list = []
list_asc = []
list_dec = []
# 1、生成20个随机数
for i in range(20):
total_list.append(random.randint(1, 20))
print("生成的随机数列表是这个样子:", total_list)
# 2、对列表进行切片
list_asc = total_list[:10]
list_dec = total_list[10:]
print("切片后前10的列表:", list_asc)
print("切片后后10的列表:", list_dec)
assert len(list\_asc) + len(list\_dec) == len(total\_list), "长度需要满足一致"
# 3、分别进行排序
list\_asc = sorted(list\_asc)
list\_dec = sorted(list\_dec, reverse=True)
print("升序后前10的列表:", list\_asc)
print("降序后后10的列表:", list\_dec)
return
sort2part()
提示:观察分数的分子和分母,每1项都和前2项有关系,也可检索“斐波那契数列”
# 显示分数的包
import fractions
from functools import reduce
def fab(max_num):
# 完成分子分母的生成并计算求和返回结果
# your code here
# 创建列表保存数据
\_list = \[\]
# 1、首先生成斐波那契数列
a = 1 # 注意这里a从1开始
b = 1
for i in range(max\_num):
# a是分母,b是分子
a, b = b, a + b
'''
上式等同于下面3式:
temp = b
b = a + b
a = temp
'''
# print("a = ", a, "b = ", b)
# 2、生成分数
\_list.append(fractions.Fraction(b, a))
# \_list.append(b / a)
print("看一眼生成的列表长啥样:", \_list)
# 分数要遍历才能打印...
for elm in \_list:
print(elm)
assert len(\_list) == max\_num, "长度一致"
# 3、求前30项的和
sum\_ = reduce(lambda x, y: x + y, \_list)
return sum\_
print("该数列的前5项和: ",fab(5))
看一眼生成的列表长啥样: [Fraction(2, 1), Fraction(3, 2), Fraction(5, 3), Fraction(8, 5), Fraction(13, 8)]
2
3/2
5/3
8/5
13/8
该数列的前5项和: 1007/120
身体质量指数(BMI)是根据人的体重和身高计算得出的一个数字,BMI是可靠的身体肥胖指标,其计算公式:BMI = Weight / High2,其中体重单位为公斤,身高单位为米。
计算公式为:BMI=体重(kg)÷ 身高2(m)
提示用户输入体重(kg)和身高的数字(m)(注意单位),然后计算BMI。
根据BMI指数范围,定义当前健康状态。BMI指数在18至25之间定义为健康的标准体重, 小于该范围定义为偏瘦,超过该范围定义为偏重。
将BMI指数和其所代表状态输出
weight = float(input('请输入您的体重:'))
high = float(input('请输入您的身高:'))
high = high / 100
BMI = weight / (high ** 2)
if 18 <= BMI <= 25:
print("您的身体质量指数是:%.2f, 很健康哦" % BMI)
elif BMI < 18:
print("您的身体质量指数是:%.2f, 有些偏瘦哦" % BMI)
else:
print("您的身体质量指数是:%.2f, 你这个胖纸" % BMI)
请输入您的体重:65
请输入您的身高:173
您的身体质量指数是:21.72, 很健康哦
def str_count(s):
# 完成对应要求的统计,并返回对应的数量
# your code here
# 初始化计数变量
count\_s, count\_z, count\_a, count\_o = 0, 0, 0, 0
for i in s:
# 得到对应ASCII码的数值
num\_asc = ord(i)
if num\_asc == 32:
count\_s += 1
elif 48 <= num\_asc <= 57:
count\_z += 1
elif 65 <= num\_asc <= 90 or 97 <= num\_asc <= 122:
count\_a += 1
elif num\_asc > 122:
count\_o += 1
print("空格个数:%d个" % count\_s)
print("数字个数:%d个" % count\_z)
print("英文字母个数:%d个" % count\_a)
print("其他字符个数:%d个" % count\_o)
str_count("我是xiao ming ming, 今年27岁")
空格个数:3个
数字个数:2个
英文字母个数:12个
其他字符个数:5个
说明
def remove_same(ll):
# 完成题目要求的任务,并返回结果
# your code here
# 逆序,这样就不会出现下标溢出的情况
for i in range(len(ll) - 1, 0, -1):
# print("现在到了第%d步" % i)
print(ll)
if ll[i] == ll[i-1]:
# 删除相邻且重复的元素
del ll[i]
return ll
lst = [4,4,5,6,5,6,6,8,7,8,12,12]
print(remove_same(lst))
[4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12, 12]
[4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12]
[4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12]
[4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12]
[4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12]
[4, 4, 5, 6, 5, 6, 6, 8, 7, 8, 12]
[4, 4, 5, 6, 5, 6, 8, 7, 8, 12]
[4, 4, 5, 6, 5, 6, 8, 7, 8, 12]
[4, 4, 5, 6, 5, 6, 8, 7, 8, 12]
[4, 4, 5, 6, 5, 6, 8, 7, 8, 12]
[4, 4, 5, 6, 5, 6, 8, 7, 8, 12]
[4, 5, 6, 5, 6, 8, 7, 8, 12]
def check_data(l):
# 请完成题目要求的任务,并输出对应信息
# your code here
# 得到列表的总长度
count = len(l)
if count < 2:
print("长度不够,短拒")
return None
# 判断数据类型是否位int
for i in range(count):
if not isinstance(l[i], int):
print("数据类型有非int型")
return None
# 判断是否是升序
if sorted(l) == l:
print("ASC")
# 判断是否降序
elif sorted(l, reverse=True) == l:
print("DESC")
# 无序
else:
print("WRONG")
check_data([1])
check_data([1,"2"])
check_data([1,2,3,4])
check_data([4,3,2,1])
check_data([1,3,2,4])
长度不够,短拒
数据类型有非int型
ASC
DESC
WRONG
l1=[1,3,6,8,10,11,17]
请仅使用map,reduce,filter对上方数组依次进行如下三次操作:
剔除掉所有的偶数后打印
对剩下的数字每个数字进行平方后打印
对数组求和后打印
# 剔除掉所有的偶数后打印
l1=[1,3,6,8,10,11,17]
print("原始的l1:", l1)
def f(x):
return x % 2 != 0
l1 = list(filter(f, l1))
print("剔除偶数后的l1:", l1)
原始的l1: [1, 3, 6, 8, 10, 11, 17]
剔除偶数后的l1: [1, 3, 11, 17]
# 对剩下的数字每个数字进行平方后打印
print("现在的l1:", l1)
l1 = list(map(lambda x: x ** 2, l1))
print("求平方后的l1:", l1)
现在的l1: [1, 3, 11, 17]
求平方后的l1: [1, 9, 121, 289]
# 对数组求和后打印
print("现在的l1:", l1)
from functools import reduce
l1_sum = reduce(lambda x, y: x + y, l1)
print("所求数字之和:", l1_sum)
现在的l1: [1, 9, 121, 289]
所求数字之和: 420
设计一个公司类,完成以下要求,并实例化不同对象进行验证
类变量
类方法
实例变量
实例方法:
提示:具体的函数方法与变量定义,请参考下述实例化代码确定。初始化雇员的地方,大家看到调用的时候会包含年龄等信息,这里可能会用到不定长参数输入,详细可以参考python参数说明(https://blog.csdn.net/qinyilang/article/details/5484415)
class Company(object):
# 完成题目对应的要求
# your code here
# 类变量: 类下公司的总个数,类下公司实例的名称列表
companyNum = 0
companyList = \[\]
def \_\_init\_\_(self, companyName, brief, profit=0, sale\_=0, cost=0, name\_list=\[\], \*args):
'''
实例变量
公司名,简介,利润,销售额,总成本,雇员姓名列表,雇员详细信息列表(这里可能会考察到\*号对参数解包)
'''
# 公司名
self.companyName = companyName
# 简介
self.brief = brief
# 利润,销售额,总成本,雇员姓名列表,雇员详细信息列表
self.profit = profit
self.sale\_ = sale\_
self.cost = cost
self.name\_list = name\_list
# self.name\_detail = name\_detail
# 每实例化一个对象,公司数+1
Company.companyNum += 1
# 每实例化一个对象,公司实例的名称列表追加一个公司名
Company.companyList.append(self.companyName)
def recruit(self, name, age, cost=10000):
'''
招聘人才
每招一个人会有成本产生,影响该实例雇员列表、人数、总成本,默认成本cost=10000
'''
self.name\_list.append(name)
self.cost += cost
# self.name\_detail.append(age)
def dismiss(self, name, cost=5000):
'''
解雇人员
每解雇一个人会有成本产生,影响该实例雇员列表、人数 、总成本,默认成本cost=5000
'''
self.name\_list.remove(name)
self.cost -= cost
def adPromotion(self, cost):
'''
公司广告推广
影响该实例总成本,自定义成本cost
'''
self.cost += cost
def payInsurance(self):
'''
交社保
按公司雇员总人数计算,影响该实例总成本,默认单人社保缴纳1000
'''
self.cost -= 1000 \* len(self.name\_list)
def payTax(self):
'''
交税
按公司雇员总人数计算,影响该实例总成本,默认单人税费缴纳500
'''
self.cost -= 500 \* len(self.name\_list)
def sale(self, num, price):
'''
销售
按销售件数\*价格计算销售额,利润按销售额\*利润率进行计算利润。默认利润率50%
'''
# 销售额
self.sale\_ = num \* price
# 利润
self.profit += self.sale\_ \* 0.5
def getEmployeeList(self):
'''
获取公司雇员列表
'''
return self.name\_list
def getProfit(self):
'''
获取公司净利润
'''
# 利润 = 收入 - 支出
# 收入
return self.profit - self.cost
# 类方法
# 返回公司类共有多少个公司实例
# 返回公司类的公司实例有名称列表
@classmethod
def Company\_num(cls):
return len(cls.name\_list)
@classmethod
def Company\_list(cls):
return cls.name\_list
#功能验证
c0 = Company('网易','高科技互联网公司')
c0.recruit('张三',18, cost=20000)
c0.recruit('王五',20, cost=10000)
print('{}公司员工详细信息列表:{}'.format(c0.companyName, c0.getEmployeeList()))
c0.dismiss('王五')
c0.adPromotion(5000)
c0.payInsurance()
c0.payTax()
c0.sale(50,100)
print('{}公司员工详细信息列表:{}'.format(c0.companyName, c0.getEmployeeList()))
print('{}公司当前利润:{}'.format(c0.companyName, c0.getProfit()))
c1 = Company('百度','搜索引擎')
c1.recruit('李四',30, cost=50000)
c1.recruit('赵六',50, cost=40000)
print('{}公司员工详细信息列表:{}'.format(c1.companyName, c1.getEmployeeList()))
print('公司名列表:',Company.companyList)
print('公司总个数:',Company.companyNum)
网易公司员工详细信息列表:['张三', '王五']
网易公司员工详细信息列表:['张三']
网易公司当前利润:-26000.0
百度公司员工详细信息列表:['张三', '李四', '赵六']
公司名列表: ['网易', '百度']
公司总个数: 2
生成5位随机数验证码并存储为verify.png名称的图片。
提示:PIL库的使用方法可以参考python中PIL库的使用和PIL库简易教程与验证码生成
%matplotlib inline
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
from PIL import ImageFilter
import random
def rndChar():
return chr(random.randint(48, 57)) # 0-9的ASCII码是48-57
def rndColor():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
def rndColor2():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
num = 5 # 生成num位的验证码
width = 60 * num # 图宽
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
font = ImageFont.truetype('Arial.ttf', 36)
draw = ImageDraw.Draw(image)
for x in range(width):
for y in range(height):
draw.point((x, y), fill=rndColor())
for t in range(num):
draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
image = image.filter(ImageFilter.BLUR)
image.save("verify.png", "jpeg")
手机扫一扫
移动阅读更方便
你可能感兴趣的文章