栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python基础编程题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python基础编程题

有一个银行账户类 Account, 包括名字 , 余额等属性,方法有存钱、取钱、查询余额的操作。要求:

      1.在存钱时,注意存款数据必须是整百的格式

      2.取钱时,要判断余额是否充足,余额不够的时候要提示余额不足

注意:余额在外界不能直接调用修改 必须是存钱才可修改
class Account():
    def __init__(self, name, balance):
        self.name = name
        self.balance = balance
    #查询余额
    def show_balance(self):
        print('余额是:{}'.format(self.balance))
    #存钱
    def save_money(self, money):
        if money > 0 and money % 100 == 0:
            self.balance += money
        else:
            print(f'存款金额数不满整百')
    #取钱
    def get_money(self, money):
        if self.balance >= money:
            self.balance -= money
            print(f'取款成功')
        else:
            print('余额不足')
猫类的属性有昵称name,年龄age, 方法有抓老鼠

   鼠类的属性有昵称name

   创建猫对象信息为5岁的tom猫

创建老鼠对象信息为名为jerry  

执行猫抓老鼠的行为
输入如下:一只5岁的tom猫抓到一只名叫jerry的老鼠
class Mouse():
    def __init__(self, name):
        self.name = name
class Cat():
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def catch(self, mouse):
        print("一只{}岁的{}猫抓到一只名叫{}的老鼠".format(self.age, self.name, mouse.name))
Jerry_mouse = Mouse('jerry')
Tom_cat = Cat('tom', 5)
Tom_cat.catch(Jerry_mouse)
设计一个狗类:
    属性: 品种breed  昵称name   性别gender

   行为: 看家lookhome   

创建狗类对象: 对象信息如下

   哈士奇    旺财   雄

   中华田园犬    来福     雌

创建出来对象之后, 调用看家的行为, 输出 xx在看家   [xx是对象的昵称]
class Dog():
    def __init__(self, breed, name, gender):
        self.breed = breed
        self.name = name
        self.gender = gender

    def lookhome(self):
        print("{}在看家".format(self.name))


dog1 = Dog('哈士奇', '旺财', '雄')
dog2 = Dog('中华田园犬', '来福', '雌')

dog1.lookhome()
dog2.lookhome()
为一个州立大学建立账单系统,州内和州外学生的收费标准不同,录取分数线为300分,高于分数线的不收费,低于分数线的话,州内每学分收费$75,州外每学分$200。每个学生账单上都显示学校的名字,学生自己的名字,学分和账单总额。
州内学生类:
      属性:学校名  姓名   学分
      方法: 计算学费           打印账单
州外学生类:
      属性:学校名   姓名    学分
      方法:计算学费           打印账单
分别创建一个州内学生对象 和 州外学生对象  分别打印他们的学费账单
class Student():
    def __init__(self, school, name, credit):
        self.school = school
        self.name = name
        self.credit = credit

    def tuition(self):
        '''
        学费统计
        默认返回不收费
        '''
        return 0

    def bill_printing(self):
        print('{}报的学校为{},学分为{},所以学费为{}'.format(self.name, self.school, self.credit, self.tuition()))

class InsideStateStudent(Student):
    '''
    州内学生,继承自学生类
    '''
    #重构学费函数
    def tuition(self):
        if self.credit < 300:
            return (300 - self.credit) * 75
        else:
            # 300分以上 调用父类 收费为0
            return super().tuition()

class OutsideStateStudent(Student):
    '''
    州外学生,继承自学生类
    '''
    #重构学费函数
    def tuition(self):
        if self.credit < 300:
          return (300 - self.credit) * 200
        else:
          # 300分以上 调用父类 收费为0
          return super().tuition()  #super()用于调用父类的函数

#州内学生
inside_stu = InsideStateStudent("可乐大学", "Lucy", 234) #实例化对象
inside_stu.bill_printing()          #调用输出方法

#州外学生
outside_stu = OutsideStateStudent("可乐大学", "李雷", 123)
outside_stu.bill_printing()
定义一个点类 Pointer 属性是横向坐标 x与 纵向坐标 y定义一个圆类 Circle 属性有圆心点 cp 与 半径 radius 方法有: 1.求圆的面积 2.求圆的周⻓ 3.求指定点与圆的关系提示:关系有三种 【圆内 圆外 圆上】 设计到的数学公式:指定点与圆心点之间的距离 与 圆的半径进行比较
class Pointer():
    def __init__(self, x, y):
        self.x = x
        self.y = y

class Circle():
    def __init__(self, cp, radius):
        self.cp = cp
        self.radius = radius

    def area(self):
        print("圆的面积:", 3.14*self.radius**2)

    def perimeter(self):
        print("圆的周长为:", 3.14*2*self.radius)

    def relation(self, pointer):
        if self.radius > ((pointer.x - cp.x)**2 + (pointer.y - cp.y)**2)**0.5:
            print("点在圆内")
        elif self.radius == (pointer.x**2 + pointer.y**2)**0.5:
            print("点在圆上")
        else:
            print("点在圆外")


pointer = Pointer(x=12, y=13)
cp = Pointer(x=40, y=12)
circle = Circle(cp, 12)
circle.area()
circle.perimeter()
circle.relation(pointer)

 定义一个汽车类Vehicle, 要求: 1.属性包括:汽车品牌brand、颜色color和速度speed, 其中速度的起始值是0。 2.为属性提供访问的方法。注意:汽车品牌一旦初始化之后不能修改。 3.方法有加速、减速。

class Vehicle():
    def __init__(self, brand, color, speed = 0):
        self.__brand = brand
        self.color = color
        self.speed = speed

    def get_brand(self):
        return self.__brand

    def add_speed(self, speed):
        self.speed += speed
        print("现在的车速为:{}".format(self.speed))

    def subtract_speed(self, speed):
        if self.speed < speed:
            print("减速失败")
        else:
            self.speed -= speed
            print("当前车速:{}".format(self.speed))


car = Vehicle('玛莎拉蒂', '蓝色')
print(f'车的品牌是{car.get_brand()}')
# 加速
car.add_speed(120)
# 减速
car.subtract_speed(40)
(1)编写一个矩形类Rect,包含:矩形的宽width;矩形的高height。要求创建对象的时候必须给width和height传值 两个方法:求矩形面积的方法area(),求矩形周长的方法perimeter()(2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用矩形的左上角坐标来标识,包含:    添加两个属性:矩形左上角坐标start_x和start_y。要求创建PlainRect对象的时候width和height必须赋值,start_x和start_y可以赋值可以不赋值。 添加一个方法:判断某个点是否在矩形内部的方法is_inside()。如在矩形内,返回True, 否则,返回False。
class Rect():
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        print("矩形面积:", self.width * self.height)

    def perimeter(self):
        print("矩形周长:", (self.width+self.height)*2)

class PlainRect(Rect):
    def __init__(self, width, height, start_x = 0, start_y = 0):
        super().__init__(width, height)
        self.start_x = start_x
        self.start_y = start_y

    def is_inside(self, x, y):
        if (self.start_x <= x <= self.start_x + self.width) and (self.start_y <= y <= self.start_y + self.height):
            return True
        return False

# 创建起始点为0,0 宽高都是100的矩形
pr = PlainRect(100, 100)
print(f'矩形的面积是{pr.area()}')
print(f'矩形的周长是{pr.perimeter()}')
print(f'其他点和矩形的关系{pr.is_inside(100, 17)}')
nums = [17, 29, 31, 28, 44, 51, 24]
使用高阶函数filter将nums中的能被3整除的数据保留,其他的过滤掉,结果使用列表展示
nums = [17, 29, 31, 28, 44, 51, 24]
def num(i):
    return i % 3 == 0
num_r = list(filter(num, nums))
print(num_r)
封装一个函数:获取指定数据的阶乘
5的阶乘等于5*4*3*2*1
def count(num):
    result = 1
    for i in range(1, num + 1):
        result *= i
    return result
print(count(10))
 定义一个函数,比较两个数的大小如果前者大于后者,返回1如果前者小于后者,返回-1两者相等,返回0
def num(num1, num2):
    if num1 > num2:
        return 1
    elif num1 < num2:
        return -1
    else:
        return 0
print(num(1,2))
定义一个函数,判断一个3位数是不是水仙花数
水仙花数:是一个三位数,并且每位上的立方和结果等于本身
例如 153 = 1 ** 3 + 5 ** 3 + 3 ** 3
def sxh(num):
    g = num % 10
    s = num // 10 % 10
    b = num // 100
    if g**3 + s**3 + b**3 == num:
        print(f"{num}是水仙花数")
    else:
        print(f"{num}不是水仙花数")
sxh(153)
录入一个字符,获取其在编码规则中对应的十进制数据
 ch = input('录入一个字符:')
 num = ord(ch)
 print(f'{ch}在编码规则中对应的十进制数据是{num}')
封装一个函数:判断指定数据是不是素数
素数:只能被1和本身整除的大于1的整数
def sushu(num):
    count = 0
    if num <= 1:
        print(f"{num}不是素数")
    else:
        for i in range(1, num+1):
            if num % i == 0:
                count += 1
        if count == 2:
            print(f"{num}是素数")
        else:
           print(f"{num}不是素数")
sushu(10)
声明一个列表,在列表中使用字典保存6个学生的信息
students = [
  {'name': '小花', 'age': 19, 'score': 90, 'gender': '女', 'tel': '15300022839'},
  {'name': '明明', 'age': 20, 'score': 40, 'gender': '男', 'tel': '15300022838'},
  {'name': '华仔', 'age': 18, 'score': 90, 'gender': '女', 'tel': '15300022839'},
  {'name': '静静', 'age': 16, 'score': 90, 'gender': '不明', 'tel': '15300022428'},
  {'name': 'Tom', 'age': 17, 'score': 59, 'gender': '不明', 'tel': '15300022839'},
  {'name': 'Bob', 'age': 18, 'score': 90, 'gender': '男', 'tel': '15300022839'}
]
要求:
统计不及格学生的个数
统计未成年学生的个数
打印手机尾号是8的学生的名字
students = [
  {'name': '小花', 'age': 19, 'score': 90, 'gender': '女', 'tel': '15300022839'},
  {'name': '明明', 'age': 20, 'score': 40, 'gender': '男', 'tel': '15300022838'},
  {'name': '华仔', 'age': 18, 'score': 90, 'gender': '女', 'tel': '15300022839'},
  {'name': '静静', 'age': 16, 'score': 90, 'gender': '不明', 'tel': '15300022428'},
  {'name': 'Tom', 'age': 17, 'score': 59, 'gender': '不明', 'tel': '15300022839'},
  {'name': 'Bob', 'age': 18, 'score': 90, 'gender': '男', 'tel': '15300022839'}
]
count1 = 0 #不及格人数
count2 = 0 #未成年人数
for i in students:
    if i['score'] < 60:
        count1 += 1
    if i['age'] <18:
        count2 += 1
    if i['tel'][-1] == '8':
        print(i['name'])
print(f'不及格人数{count1}n未成年人数{count2}')
已知有一段英文语句
sentence = 'Hi Nice to meet you Are you glad to meet me too'
统计每个单词出现的次数
sentence = 'Hi Nice to meet you Are you glad to meet me too'
worlds = sentence.split(' ')
w_count_dict = {}
for w in worlds:
    if w in w_count_dict:
        w_count_dict[w] += 1
    else:
        w_count_dict[w] = 1
print(w_count_dict)
已知信息学院的学生共有15人,其中选择Python、Java、C语言的人分别有 【没有重名的人 一个名字代表一个人】
python = {'王萌', '李晓丽', '张慧慧', '王晓梅'}
java = {'乔榛', '王萌', '齐辉', '赵真真'}
c = {'王晓梅', '齐辉', '李慧萌', '王萌'}
求:
没有参加选课的学生有多少名
三门课程都选的学生有哪些
选择了两门课程的学生有哪些
python = {'王萌', '李晓丽', '张慧慧', '王晓梅'}
java = {'乔榛', '王萌', '齐辉', '赵真真'}
c = {'王晓梅', '齐辉', '李慧萌', '王萌'}
# 参加选课的 就对以上的集合求并集 把重复选课的保留1个 就是所有选课的
all_select = python | java | c
print(f"还有{15 - len(all_select)}个学生没有选课")
# 三门课程都选的 那就是在3个集合中都有的 求交集
three_select = python & java & c
print(f'三门课程全选的学生有{three_select}')
# 选择的两门的 那就得两两交集了 把结果合并 并完之后还会存在一种人就是3门课全选了的  需要把它减掉
two_select = ((python & java) | (python & c) | (java & c)) - three_select
print(f'选择了两门课程的学生有{two_select}')
在1到10之间随机选择5个数添加在列表中,要求这5个数不允许重复
随机数需要导入模块random,语句是
import random
ele = random.randint(1, 10)  # 就是在1到10之间随机选择一个数
import random
num_list = []
while len(num_list) < 5:
    ele = random.randint(1, 10)
    if ele not in num_list:
        num_list.append(ele)
print(num_list)
已知班级中人员姓名如下:
names = ['张美', '李欢欣', '赵乐乐', '张佳', '王继辉', '李美玲']
需求:
1. 利用列表生成式 获取姓李的同学
2. 获取名字长度是2的同学
names = ['张美', '李欢欣', '赵乐乐', '张佳', '王继辉', '李美玲']
names_li = [n for n in names if n[0] == '李']
print(names_li)
names_2 = [n for n in names if len(n) == 2]
print(names_2)
已知字符串 s = 'Hello_520_爱你_1314_一生一世_World',要求提取字符串中的数字符号 【期待结果是'5201314'】
s = 'Hello_520_爱你_1314_一生一世_World'
digit_str = ''
for ch in s:
  if '0' <= ch <= '9':
     digit_str += ch
print(digit_str)
使用inupt录入一个圆的半径,求圆的面积和周长
注:圆周率使用3.14就可以,乘法的运算符是*
r = int(input("请输入圆的半径:"))
s = 3.14 * r ** 2
c = 3.14 * 2 * r
print(f"圆的面积为{s},圆的周长为{c}")
假设今天的上课时间为15678秒,编程计算今天上课时间是多少小时,多少分钟,多少秒;以‘多少时多少分多少秒’的方式表示出来
time = 15678
sec = time % 60
min = time % 3600 // 60
h = time // 3600
print(f"{h}小时{min}分钟{sec}秒")
水仙花数校验器:输入一个三位数,判断其是不是水仙花数
水仙花数是一个三位数,特点是每位上数的立方和结果是其本身
例如 153 = 1**3 + 5 ** 3 + 3**3
num = int(input("请输入一个三位数:"))
ge = num % 10
shi = num // 10 % 10
bai = num // 100
if ge ** 3 + shi ** 3 + bai ** 3 == num:
    print(f"{num}是水仙花数")
else:
    print(f"{num}不是水仙花数")
键盘输入年,验证输入的年是否是闰年,如果是输出闰年的2月份有29天 否则输出平年的2月份有28天
闰年概念:
闰年分为两类
普通闰年:是4的倍数但是不是100的倍数
世纪闰年:是400的倍数
year = int(input("请输入年份:"))
if year % 4 == 0 and num % 100 != 0 and num % 400 == 0:
    print("闰年的2月份有29天")
else:
    print("平年的2月份有28天")
定义两个变量保存一个人的身高和体重,编程实现判断这个人的身材是否正常!公式: 体重(kg)/身高(m)的平方值 在18.5 ~ 24.9之间属于正常,小于18.5是偏瘦,大于24.9是偏胖。
height = float(input("请输入您的身高(m):"))
weight = float(input("请输入您的体重(kg):"))
if 18.5 <= weight / (height) ** 2 <= 24.5:
    print("正常")
else:
    print("不正常")
录入一个百分制的学生成绩,根据成绩进行分级
90-100 A
80-90 B
70-80 C
60-70 D
0-60 E
score = float(input("请输入一个百分制成绩:"))
if 90 <= score <= 100:
    print("A")
elif 80 <= score < 90:
    print("B")
elif 70 <= score < 80:
    print("C")
elif 60 <= score < 70:
    print("D")
else:
    print("E")
三角形校验器:录入三角形的三个边长,判断三个数据能否构成三角形
构成三角形的条件是任意两边之和大于第三边
a = int(input("请输入a的值:"))
b = int(input("请输入b的值:"))
c = int(input("请输入c的值:"))
if (a + b > c) and (a + c > b) and (c + b > a):
    print("可以构成三角形")
else:
    print("不能构成三角形")
一根绳子长1000米, 每天截取剩余绳子的四分之一,问多少天后绳子长度还剩下不足3米
long = 1000
count = 0
while long >= 3:
    long = long - long / 4
    count += 1
print(count)
一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度8848.13米
注意单位换算 1m = 1000mm
height = 0.00008
count = 0
while height < 8848.13:
    height = height * 2
    count += 1
print(f"{height}米,{count}天")
公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
peach = 1
day = 0
while day < 7:
    peach = (peach + 1) * 2
    day += 1
print(peach)
求1到100以内能被7或者3整除,但是不能同时被3和7整除的数
for i in range(1, 101):
    if (i % 3 == 0 or i % 7 == 0) and i % 21 != 0:
        print(i)
统计101~200中素数的个数,并且输出所有的素数。(素数又叫质数,就是只能被1和它本身整除的数)
nums = []
sum = 0
for i in range(101, 201):
    count = 0
    for j in range(1, i):
        if i % j == 0:
            count += 1
    if count == 1:
        nums.append(i)
        sum += 1
print(nums,sum,"个")
求斐波那契数列中第n个数的值,n是正整数。n值由控制台输入
> **说明**:斐波那契数列是这样的一个数列:1、1、2、3、5、8、13、21、34、.... ,第一个数和第二个数是1,从第三个数开始每个元素是前两个元素相加的和。
a = int(input('请输入想求斐波那契数列第几位的值:'))
b = 0
c = 1
d = 1
for i in range(2, a + 1):
    d = b + c
    b = c
    c = d
print(f'第{a}位数的值是{d}')
百马百担"问题:一匹大马能驮3担货,一匹中马能驮2担货,两匹小马能驮1担货,如果用一百匹马驮一百担货,问有大、中、小马各几匹?
#所有的货物全部用大马去运输:34
#所有货物全部用中马去运输:50
#所有的货物全部用小马运输:200
for i in range(34):  #表示大马
    for j in range(50):  #表示中马
        k = 100 - i - j  #表示小马
        if i*3 + j*2 + k*0.5 == 100:  #表示货物的数量刚好是100担
            print(f"大马{i},中马{j},小马{k}")
输出20~80之间能被3整除的整数, 每行5个
count = 0
for i in range(20, 81):
    if i % 3 == 0:
        print(i, end=' ')
        count += 1
    if count == 5:
        print()
        count = 0
声明一个列表,在列表中保存6个学生的信息(
list = [
    {'name': '张三', 'age': 18, 'score': 50, 'tel': 18866669988, 'sex': '男'},
    {'name': '李四', 'age': 16, 'score': 88, 'tel': 18866669932, 'sex': '女'},
    {'name': '张三', 'age': 17, 'score': 48, 'tel': 18866669998, 'sex': '不明'},
    {'name': '陈一军', 'age': 61, 'score': 59, 'tel': 18866669912, 'sex': '男'},
    {'name': '陈二军', 'age': 49, 'score': 49, 'tel': 18866669949, 'sex': '不明'},
    {'name': '陈三军', 'age': 49, 'score': 61, 'tel': 18866669959, 'sex': '女'}
])
(1) 统计不及格学生的个数  (score < 60)
(2) 打印不及格学生的名字和对应的成绩
(3) 统计未成年学生的个数  (age < 18)
(4) 打印手机尾号是8的学生的名字
(5) 打印最高分和对应的学生的名字
提示:
方式一: 排序算法
方式二: sort(key=)
list = [
	{'name': '张三', 'age': 18, 'score': 50, 'tel': 18866669988, 'sex': '男'},
	{'name': '李四', 'age': 16, 'score': 88, 'tel': 18866669932, 'sex': '女'},
	{'name': '张三', 'age': 17, 'score': 48, 'tel': 18866669998, 'sex': '不明'},
	{'name': '陈一军', 'age': 61, 'score': 59, 'tel': 18866669912, 'sex': '男'},
	{'name': '陈二军', 'age': 49, 'score': 49, 'tel': 18866669949, 'sex': '不明'},
	{'name': '陈三军', 'age': 49, 'score': 61, 'tel': 18866669959, 'sex': '女'}
]
count_score = 0
count_age = 0
tic_score = {}
for i in list:
    #不及格人数及打印其姓名和成绩
    if i['score'] < 60 :
        count_score += 1
        print(f"不及格学生姓名和成绩{i['name']}:{i['score']}")
    #未成年人数
    if i['age'] < 18:
        count_age += 1
    #手机尾号是8的
    if i['tel'] % 10 == 8:
        print(f'手机尾号为8{i["name"]}')
    tic_score[i["name"]] = i["score"]


print(f"不及格的人数是{count_score}")
print(f"未成年的人数是{count_age}")

#获取最高分的姓名和成绩
max_score = 0
for stu in list:
    if stu['score'] > max_score:
        max_score = stu['score']
        name = stu['name']
print(f"成绩最高的是{name}分数为{max_score}")



'''(6) 删除性别不明的所有学生(选做)'''
i = 0
while i < len(list):
    if list[i]['sex'] == '不明':
        list.pop(i)
        i -= 1
    i += 1
print(list)


'''(7) 将列表按学生成绩从大到小排序(难,选做)'''
'''
# 第一种方式:
# ele 表示列表中的每个字典
def pai(ele):
    return ele['score']  # 将每个字典中的score成绩字段返回
list.sort(reverse=True,key=pai)  # key=pai  表示将字典中的数据分别传入pai处理
for stu in list:
    print(stu)
'''

# 第二种方式:
list.sort(reverse=True,key=lambda stu:stu['score'])  # lambda是匿名函数表达式
for stu in list:
    print(stu)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025744.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号