一、分析以下需求,并用代码实现:
1.根据工龄(整数)给员工涨工资(整数),工龄和基本工资通过键盘录入
2.涨工资的条件如下:
[10-15) +5000
[5-10) +2500
[3~5) +1000
[1~3) +500
[0~1) +200
3.如果用户输入的工龄为10,基本工资为3000,程序运行后打印格式"您目前工作了10年,基本工资为 3000元, 应涨工资 5000元,涨后工资 8000元"
def raisewage(workyear):
if workyear>=10:
return 5000
elif workyear>=5:
return 2500
elif workyear>=3:
return 1000
elif workyear>1:
return 500
else:
return 100
wy = int(input("请输入您的工龄:"))
wa = int(input("请输入您的基本工资:"))
print("您目前工作了{}年,基本工资为{}元, 应涨工资{}元,涨后工资{}元".format(wy,wa,raisewage(wy),raisewage(wy)+wa))
二、分析以下需求,并用代码实现:
1.珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.0001米。
2.请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
import numpy as np
h =8848
print((int)(np.log(h/0.0001)/np.log(2)+1))
三、已知列表L = [5,10,15,20,25],要求创建一个新列表
1.新列表的长度和已知列表相同
2.新列表每个元素的值 是已知列表对应位置元素的2倍
3.在控制台中打印新列表的所有元素
l = [5, 10, 15, 20, 25]
l2 = [x*2 for x in l]
print(l2)
四、一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?
例如输入:11 返回结果是7
class monkey:
def __init__(self, index, next_mk):
self.index = index
self.next_mk = next_mk
first_monkey = None
current_monkey = None
n = int(input('请输入猴子个数:'))
for i in range(n):
monkey_tmp = monkey(i + 1, None)
if not first_monkey:
first_monkey = monkey_tmp
current_monkey = monkey_tmp
else:
current_monkey.next_mk = monkey_tmp
current_monkey = monkey_tmp
current_monkey.next_mk = first_monkey
js = 0
while True:
js += 1
current_monkey = current_monkey.next_mk
if js == 2:
tmp = current_monkey.next_mk
current_monkey.next_mk = tmp.next_mk
del tmp
js = 0
if current_monkey.next_mk == current_monkey:
break
print(current_monkey.index)
五、定义一个方法,去打印指定两个年份之间所有的闰年年份
如:将2000和2005传入方法,方法执行完毕会打印出这段之间的所有闰年年份
2000和2004
提示:
计算公历年闰年的算法: 四年一闰,百年不闰,四百年再闰
翻译:
满足如下任意一条即是闰年
1)年份是整百数的必须是400的倍数才是闰年
2)其他年份能被4的是闰年
实例: 2000 是整百数,并且是400的倍数所以是闰年; 2004年是4的倍数是闰年
2100 是整百的倍数但不是400的倍数,所以不是闰年
year = int(input("输入一个年份: "))
if (year % 100) == 0:
if (year % 400) == 0:
print("{0} 是闰年".format(year)) # 整百年能被400整除的是闰年
else:
print("{0} 不是闰年".format(year))
elif (year % 4) == 0:
print("{0} 是闰年".format(year)) # 非整百年能被4整除的为闰年
else:
print("{0} 不是闰年".format(year))
六、计算出5位数的回文数和7位数的回文数相差了多少个?
(设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。)
操作步骤描述:
1.创建一个函数,
2.定义两个函数分别统计出5位数的回文数个数和7位数的回文数个数
3.在主方法中分别调用者两个函数计算出相差的个数
num5 = filter(lambda x: str(x)[::-1] == str(x), range(10000, 100000)) # 900
num7 = filter(lambda x: str(x)[::-1] == str(x), range(1000000, 10000000)) # 9000
print(len(list(num7)) - len(list(num5)))
七、分析以下需求,并用代码实现
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13… 定义一个方法求出这个数列的前20 项之和。
from functools import reduce
current_fz = 2
current_fm = 1
li = [2/1]
for i in range(1, 20):
fm = current_fz
fz = current_fz + current_fm
li.append(fz/fm)
current_fz = fz
current_fm = fm
print(li)
# reduce函数合并一个完整的序列,压缩,得到最终结果。
# reduce(function, sequence, initial=None)}
print(reduce(lambda x, y: x + y, li))
八、训练描述:【类和对象】
一、有以下数据:
1.三个老师信息:
教师编号 姓名 性别 年龄 科目
t001 薛之谦 男 26 Java
t002 张碧晨 女 24 IOS
t003 张杰 男 28 Java
2.存储两个科目信息:
课程编号 名称 创建时间 课程描述
s001 Java 2007-02-08 Java学科,包含JavaSE和JavaEE
s002 IOS 2007-02-09 IOS系统开发
二、请分别定义两个类;
三、创建相应对象,通过构造方法给成员变量赋值。
四、打印每个对象的所有属性。
要求:每个类要按照封装的原则进行定义。并提供有参数的构造方法。
class Person:
def __init__(self,no,name,sex,age,science):
self.no=no
self.name=name
self.sex=sex
self.age=age
self.science=science
def print1(self):
print('教师编号:{};姓名:{};性别:{};年龄:{};科目:{}'\
.format(self.no,self.name,self.sex,self.age,self.science))
class Course:
def __init__(self,sno,sname,stime,sment):
self.sno=sno
self.sname=sname
self.stime=stime
self.sment=sment
def print2(self):
print('课程编号:{};名称:{};创建时间:{};课程描述:{}'\
.format(self.sno,self.sname,self.stime,self.sment))
person1 = Person('t001', '薛之谦', '男', 26, 'Java')
person2 = Person('t002', '张碧晨', '女', 24, 'IOS')
person3 = Person('t003', '张杰', '男', 28, 'Java')
person1.print1()
person2.print1()
person3.print1()
course1 = Course('s001', 'java', '2007-02-08', 'Java学科,包含JavaSE和JavaEE')
course2 = Course('s002', 'IOS', '2007-02-09', 'IOS系统开发')
course1.print2()
course2.print2()
九、分析以下需求,并用代码实现
1.定义一个列表,存入多个字符串
如:“ab1” “123ad” “bca” “dadfadf” “dddaaa” “你好啊” “我来啦” “别跑啊”
2.遍历列表,删除长度大于5的字符串,打印删除后的列表
3.基于上一步,删除列表中元素包含0-9数字的字符串(只要字符串中包含0-9中的任意一个数字就需要删除此整个字符串)
import re
li = ['ab1', '123ad', 'bca', 'dadfadf', 'dddaaa', '你好啊', '我来啦', '别跑啊']
li2 = filter(lambda x: len(x) <= 5, li)
li2 = list(li2)
print(li2)
li3 = filter(lambda x: not bool(re.search(r'\d', x)), li2)
print(list(li3))
十、分析以下需求,并用代码实现
1.项目根目录下建立文件: user.txt,文件中存放用户名和登录密码,格式:用户名,密码,如:aaa,123;
2. user.txt文件中初始存放的用户信息有如下:
jack,123
rose,123
tom,123
3.要求完成如下功能:
程序运行时:控制台提示用户输入注册的用户名和密码;
验证键盘录入的用户名跟user.txt中已注册的用户名是否重复:
是:控制台提示:用户名已存在
否:将键盘录入的用户名及密码写入user.txt文件,并在控制台提示:注册成功;
f = open('user.txt')
username = input("Username:")
password = input("Password:")
flag = False # username在文件中不存在
for line in f.readlines():
strs = line.split(",")
if (strs[0] == username):
flag = True
if(flag):
print("用户名已存在!")
else:
f=open("user.txt","a")
f.writelines(username+","+password)
print("注册成功!")