python定义一个student类、有下面的_python基础练习题1

深深感知python基础是有多么重要,Ljh说一定要多练题,so,我现在开始要每天打卡练习python。加油!

01:求‘1-100’的偶数和

#第一种解法:

sum=0

num=0while num<101:

num+=1

if num%2==0:

sum+=numprint(sum)#第二种解法:

sum=0for i in range(2,101,2):

sum+=iprint(sum)#第三种解法;

sum=0for i in range(1,101):if i%2==0:

sum+=iprint(sum)

02:求1-100的奇数,质数

#奇数

sum=0for i in range(1,101)if i%2!=0

sum+=iprint(sum)#质数

sum=0

for i in range(2,101):

for j in range(2,i):

if i%j==0:

break

else:

sum+=i

print('1-100之间的质数之和:%d'%sum)

03:写出九九乘法表

for i in range(1,10): #把1,2,3,,赋值给i

for j in range(1,i+1):#在i的基础上给j赋值,比如i=1 j=(1,2)取1 i=2 j=(1,2,3) 取1,2

print(‘&s*%s=%s’%(j,i,j*i),end=' ') end 就是计算每个结尾处加空格print()

04:手动输入一个字符串,打散放进一个列表,小写字母反序,大写字母保持不变

思路:

将手动传入的字符串用list函数将其打散成为一个列表1

循环列表1,判断每个元素字母的大小写

小写:将其追加到一个新列表2中

大写:记录下其索引及元素值到一个字典中

循环完成后,将新列表中所有的小写元素反转

循环遍历字典,将键值对应的添加到列表2中

循环完成后,输出列表2

1 string = input('请输入一个字符串:')

2 # 将输入的字符串打散到lists列表中

3 lists = list(string)

4 # 创建一个新列表用来存放变换后的数据

5 new_lists = []

6 # 创建一个字典,用来存放大写字母的索引及其对应的值

7 dictionary = {}

8 i = 0

9 while i < len(lists):

10 if 'a' < lists[i] < 'z':

11 # 小写,按照顺序存放到new_lists列表中

12 new_lists.append(lists[i])

13 else:

14 # 大写,将索引及其对应的值存放在dictionary

15 dictionary[i] = lists[i]

16 i += 1

17

18 # 反转列表(小写字母元素)

19 new_lists.reverse()

20 # 循环遍历字典,将键值对应的添加到new_lists列表中

21 for key in dictionary:

22 new_lists.insert(key, dictionary[key])

23

24 print(new_lists)

05:定义一个函数mysort,参数是一个列表,参数列表中都是整数,mysort函数需要将参数列表元素从小到大排序,最终返回一个新的list

思路:1.创建一个新的列表newlist2.先找出所有元素中最小的,append在newlist里面3.再找出剩余所有元素中最小的,append在newlist中4.依次类推,直到所有元素放到newlist里面

def myshort(inlist):

newlist=[]

while len(inlist)>0:

theMin = inlist[0] #记录当前循环最小的元素

minIdx=0 #记录当前最小元素的下标

idx=0 #指向当前元素的下标

for one in inlist:

if theMin>one:

theMin=one

minIdx=idx

idx+=1

inlist.pop(minIdx)

newlist.append(theMin)

return newlist

print(myshort([1,3,5,45,67,4,7,34]))

06:li=[1,2,3,4,5,6,7,8,8]组成多少个互不相同且不重复的两位数

li=[1,2,3,4,5,6,7,8,8]

li1=[]

li2=[]for i inli:for j inli:if i!=j:

a='%d%d'%(i,j)

li1.append(a)for y inli1:if y not inli2:

li2.append(y)print(li2)

07:一个冒泡排序

分析:

[9, 2, 3, 5, 1, 2, 8] 列表长度为7

假设是9(即索引0),则最多交换 (7-1)-0 = 6次

假设是2(即索引1),则最多交换 (7-1)-1 = 5次

推理:假设索引为index,则最多交换 (列表长度-1-index) 次defsort(alist):for i in range(len(alist)):#循环次数

#跳过后面已经排序好的元素

for j in range(len(alist)-1-i):#遍历所有数 根据列表索引位置判断应该交换几次

if alist[j] > alist[j+1]:

alist[j],alist[j+1]= alist[j+1],alist[j]returnalist

a=[12,35,99,19,1]print(sort(a))

08:

"""

一、定义一个学生Student类。有下面的类属性:

1 姓名 name

2 年龄 age

3 成绩 score(语文,数学,英语) [每课成绩的类型为整数]

类方法:

1 获取学生的姓名:get_name() 返回类型:str

2 获取学生的年龄:get_age() 返回类型:int

3 返回3门科目中最高的分数。get_course() 返回类型:int

写好类以后,可以定义2个同学测试下:

zm = Student('zhangming',20,[69,88,100])

返回结果:

zhangming

20

100

"""

class Student():

#构造函数

#对当前对象的实例的初始化

def __init__(self,name,age,score):

self.name=name

self.age=age

self.score=score

#isinstance函数判断一个对象是否是一个已知的类型,类似type

def get_name(self):

if isinstance(self.name,str):

return self.name

def get_age(self):

if isinstance(self.age,int):

return self.age

def get_course(self):

a=max(self.score)

if isinstance(a,int):

return a

zm = Student('zhangming',20,[34,56,67])

print(zm.get_name())

print(zm.get_age())

print(zm.get_course())

09:1、创建员工类Employee,属性有姓名name、能力值ability、年龄age(能力值为100-年龄),功能有doWork(),该方法执行一次,该员工的能力值-5,创建str方法,打印该员工的信息

2、创建老板类Boss,属性有金钱money,员工列表employeeList(存储员工类对象),工作量work,功能有雇佣员工addEmployee(),雇佣后将员工添加至列表中,雇佣一人money减5000,金额不足时不能雇佣新员工;开始工作startWork(),工作开始后,依次取出员工列表中的员工开始工作,员工能力值减少的同时总的工作量work也减少,当工作量work为0时,工作结束,调用endWork(该方法为Boss类方法,打印员工的能力值信息)方法,如果所有员工使用完后,依然没有完成工作,则提示老板需要雇佣新员工,并打印剩余工作量

3、创建Boss类对象,默认执行雇佣3个员工,年龄分别为30,40,50,然后死循环开始工作,直至工作完成。

10:设计一个函数,在指定的文件夹上创建10个文本,以数字给他们取名字

def work():

path='D:/wor'

for name in range(1,11):

with open(path+str(name)+'.txt','w')astext:

text.write(str(name))

text.close()

print('DOne')

work()

11.摆放家具

需求:

1).房子有户型,总面积和家具名称列表

新房子没有任何的家具

2).家具有名字和占地面积,其中

床:占4平米

衣柜:占2平面

餐桌:占1.5平米

3).将以上三件家具添加到房子中

4).打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表

classHouseItem:

#初始化方法

def __init__(self,name,area):

self.name=name

self.area=area

def __str__(self):return '[%s]占地%.2f'%(self.name,self.area)classHouse:

def __init__(self,house_type,area):

#需求从外界传递进来的参数

self.house_type=house_type

self.area=area

#剩余面积(新房子没有任何家具,剩余面积=总面积)

self.free_area=area

#家具名称列表

self.item_list=[]

def __str__(self):return '户型:%s\n总面积:%.2f[剩余:%.2f]\n家具:%s'%(self.house_type,self.area,

self.free_area,self.item_list)

def add_item(self,item):

print('要添加%s'%item)if item.area>self.free_area:

print('%s的面积太大了,无法添加'%item.name)

#如果不满足,下方的代码就不执行了return#将家具的名称添加到列表中

self.item_list.append(item.name)

#计算剩余面积

self.free_area-=item.area

#1.创建家具

bed= HouseItem('bed',400)

print(bed)

chest= HouseItem('chest',2)

print(chest)

table= HouseItem('table',1.3)

print(table)

#创建房子对象

my_home=House('两室一厅',60)

#添加家具到房子里面去

my_home.add_item(bed)

my_home.add_item(chest)

my_home.add_item(table)

print(my_home)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值