Python的一些基础实操练习题

news2024/11/29 4:46:27

书接上文多看一眼多进步,python入门到放弃,是根据python的知识点的一些基础练习题,说了是基础练习题,基础练习题,基础练习题,水平高的就别看了,平高的就别看了,高的就别看了,的就别看了,就别看了,别看了,看了,了,,也是B站python上的内容。

实操案例一

向文件输出“奋斗成就更好的你”

#方式一:使用print方式输出(输出的目的地是文件)
fp=open('d:/demo.txt','w')
print('奋斗成就更好的你',file=fp)
fp.close()
#方式二:使用文件读写操作
with open('d:/demo1.txt','w') as file:
    file.write('奋斗成就更好的你')

实操案例二

1.输出一本书的基本信息

book_name='Java程序设计教程'
publish='西安电子科技大学出版社'
pub_date='2019-02-02'
price=56.8
print('------------------------')
print('《',book_name,'》\t\t')
print('出版社:',publish,'\t')
print('出版时间:',pub_date,'\t')
print('定价:',price,'\t')

运行结果:

------------------------
《 Java程序设计教程 》		
出版社: 西安电子科技大学出版社 	
出版时间: 2019-02-02 	
定价: 56.8 	

2.按顺序:名字输出相应内容

#列表
lst_sng=['1:','2:','3:','4:','5:']
lst_name=['林黛玉','薛宝钗','贾元春','贾探春','史湘云']
for i in range(5):
    print(lst_sng[i],lst_name[i])
print('------------------------------')
#字典
d={'1:':'林黛玉','2:':'薛宝钗','3:':'贾元春','4:':'贾探春','5:':'史湘云'}
for key in d:
    print(key,d[key])
print('-------------zip---------')
for s,name in zip(lst_sng,lst_name):
    print(s,name)

运行结果:

1: 林黛玉
2: 薛宝钗
3: 贾元春
4: 贾探春
5: 史湘云
------------------------------
1: 林黛玉
2: 薛宝钗
3: 贾元春
4: 贾探春
5: 史湘云
-------------zip---------
1: 林黛玉
2: 薛宝钗
3: 贾元春
4: 贾探春
5: 史湘云

3.输出BMI指数

#输出BMI指数
height=170#身高
weight=50.5#体重
bmi=weight/(height+weight)
print('你的身高是:'+str(height))
print('你的体重是:'+str(weight))
print('你的bmi指数是:{:0.2f}'.format(bmi))

运行结果:

你的身高是:170
你的体重是:50.5
你的bmi指数是:0.23

实操案例三

1.输入一个十进制整数,分别将其转换为二进制,八进制,十六进制

def fun():
    num = int(input('请输入一个人十进制的整数'))  # 将str类型转换为int类型
    print(num, '的二进制数为:', bin(num))  # 第一种,使用了个数可变的位置参数
    print(str(num) + '的二进制数为“:' + bin(num))  # 第二种,使用+作为连接符(+的左右为str类型)
    print('%s的二进制数为:%s' % (num, bin(num)))  # 第三种,格式化字符串  %作占位符 %s:字符串
    print('{0}的二进制数为:{1}'.format(num, bin(num)))  #第三种,格式化字符串  {}作占位符
    print(f'{num}的二进制数为:{bin(num)}')  # 第三种,格式化字符串   f-string
    print('-----------------------------')
    print(f'{num}的八进制数为:{oct(num)}')
    print(f'{num}的十六进制数为:{hex(num)}')
'''
if__name__== '__main__'的意思是:
当py文件被直接运行时,if__name__=='__main__'之下的代码将被运行;
当py文件以模块形式被导入时,if __name__=='__main__'之下的代码块不被运行。
'''
if __name__ == '__main__':
    while True:
        try:
            fun()
            break
        except:
            print('只能输入整数!程序出错,请重新输入!')

运行结果:

请输入一个人十进制的整数8
8 的二进制数为: 0b1000
8的二进制数为“:0b1000
8的二进制数为:0b1000
8的二进制数为:0b1000
8的二进制数为:0b1000
-----------------------------
8的八进制数为:0o10
8的十六进制数为:0x8

2.给手机充话费,输出一共多少话费

#\033[0:35m8元\033[m  意思是给“8”设定颜色
print('用户手机账户原有话费余额为:\033[0:35m8元\033[m')
money=int(input('请输入用户充值金额:'))
money+=8
print('当前的余额为:\033[0:35m',money,'元\033[m')

运行结果:

用户手机账户原有话费余额为:8元
请输入用户充值金额:100
当前的余额为: 108

为了更清晰的看到颜色,截图如下:
在这里插入图片描述

3.输入行走步数,计算消耗卡路里

num=int(input('请输入您当天行走的步数'))
calorie=num*28
print(f'今天共消耗了卡路里{calorie},即{calorie/1000}千卡')#{}作占位符

运行结果:

请输入您当天行走的步数20000
今天共消耗了卡路里560000,560.0千卡

4.输入父亲母亲身高,估算孩子身高

father_height=float(input('请输入父亲身高:'))#身高一般有小数,所以转换为float类型
mother_height=float(input('请输入母亲身高'))
child_height=(father_height+mother_height)*0.54
print('预测子女的身高为:{}cm'.format(child_height))#{}占位符
print(f'预测子女的身高为:{child_height}cm')#f-string
print('预测子女的身高为:%.3fcm'%(child_height))#%作占位符

运行结果:

请输入父亲身高:170
请输入母亲身高170
预测子女的身高为:183.60000000000002cm
预测子女的身高为:183.60000000000002cm
预测子女的身高为:183.600cm

实操案例四

1.判断输入的密码是否正确

pwd=input('支付宝支付密码:')
#法一
if pwd.isdigit():#判断输入的是否全是数字
    print('支付数据合法')
else:
    print('支付密码不合法,密码只能是数字')

print('-----------------------')
#法二
print('支付数据合法' if pwd.isdigit() else '支付密码不合法,密码只能是数字')

运行结果:

支付宝支付密码:123f
支付密码不合法,密码只能是数字
-----------------------
支付密码不合法,密码只能是数字

2.验证qq登录

qq=input('请输入QQ号:')
pwd=input('请输入密码:')
if '123'==qq and '123' == pwd:
    print('登录成功')
else:
    print('对不起,账号或密码不正确')

运行结果:

请输入QQ号:123
请输入密码:123
登录成功

3.竞猜商品价格

import random#导入random包
price=random.randint(1000,1500)#随机生成一个1000-1500的数字
print('今日竞猜的商品为小米扫地机器人,价格范围在1000-1500之间:')
while True:
    guess = int(input('请输入你猜测的价格:'))
    if guess > price:
        print('大了')
    elif guess < price:
        print('小了')
    else:
        print('猜对了')
        break
print('真实的价格为:',price)
今日竞猜的商品为小米扫地机器人,价格范围在1000-1500之间:
请输入你猜测的价格:1250
小了
请输入你猜测的价格:1375
小了
请输入你猜测的价格:1450
大了
请输入你猜测的价格:1410
小了
请输入你猜测的价格:1430
小了
请输入你猜测的价格:1440
大了
请输入你猜测的价格:1435
大了
请输入你猜测的价格:1433
大了
请输入你猜测的价格:1432
大了
请输入你猜测的价格:1431
猜对了
真实的价格为: 1431

实操案例五

1.输出26个英文字母对应的ASCII

x=97#代表的是a的ASCII值
for _ in range(1,27):#for _ 代表只起到迭代作用从1到26
    print(chr(x),'--->',x)#内置函数chr可以得到对应的字符
    x=x+1

print('-----------------')
x=97
while x<123:
    print(chr(x),'-->',x)
    x=x+1

运行结果:

a ---> 97
b ---> 98
c ---> 99
d ---> 100
e ---> 101
f ---> 102
g ---> 103
h ---> 104
i ---> 105
j ---> 106
k ---> 107
l ---> 108
m ---> 109
n ---> 110
o ---> 111
p ---> 112
q ---> 113
r ---> 114
s ---> 115
t ---> 116
u ---> 117
v ---> 118
w ---> 119
x ---> 120
y ---> 121
z ---> 122
-----------------
a --> 97
b --> 98
c --> 99
d --> 100
e --> 101
f --> 102
g --> 103
h --> 104
i --> 105
j --> 106
k --> 107
l --> 108
m --> 109
n --> 110
o --> 111
p --> 112
q --> 113
r --> 114
s --> 115
t --> 116
u --> 117
v --> 118
w --> 119
x --> 120
y --> 121
z --> 122

2.有三次输入账号和密码的机会

for i in range(1,4):
    user_name=input('请输入用户名:')
    user_pwd=input('请输入密码:')
    if user_name=='admin' and user_pwd=='8888':
        print('登录成功')
        break
    else:
        print('用户名或密码不正确')
        if i<3:
            print(f'您还有{3-i}次机会')
else:#说明三次机会用完了
    print('对不起,三次均输入错误,请联系后台管理员')

运行结果:

请输入用户名:admin
请输入密码:88
用户名或密码不正确
您还有2次机会
请输入用户名:admin
请输入密码:8888
登录成功

3.玩游戏猜测随机生成的一个数是多少

import random#导入包
rand=random.randint(1,100)#随机生成一个1-100的数
for i in range(1,11):#最多猜10次
    num=int(input('在我心中想了一个1-100,请您猜一猜:\n'))
    if num<rand:
        print('小了')
    elif num>rand:
        print('大了')
    else:
        print('恭喜您,猜对了')
        break
if i<3:
    print(f'猜了{i}次真聪明')
elif i<7:
    print(f'猜了{i}次还凑合')
else:
    print(f'猜了{i}次得加油学习一下折半查找')

运行结果:

在我心中想了一个1-100,请您猜一猜:
50
小了
在我心中想了一个1-100,请您猜一猜:
75
小了
在我心中想了一个1-100,请您猜一猜:
88
大了
在我心中想了一个1-100,请您猜一猜:
81
大了
在我心中想了一个1-100,请您猜一猜:
78
大了
在我心中想了一个1-100,请您猜一猜:
77
恭喜您,猜对了
猜了6次还凑合

4.找一下100-1000之内的水仙花数

import math#导包
for i in range(100,1000):
    if math.pow((i%10),3)+math.pow((i//10%10),3)+math.pow((i//100),3)==i:
        print(i,'i的百位:',(i//100),'i的十位:',(i//10%10),'i的个位:',(i%10))

运行结果:

153 i的百位: 1 i的十位: 5 i的个位: 3
370 i的百位: 3 i的十位: 7 i的个位: 0
371 i的百位: 3 i的十位: 7 i的个位: 1
407 i的百位: 4 i的十位: 0 i的个位: 7

实操案例六

1.千年虫

year=[82,89,88,86,85,00,99]
print('原列表:',year)
for index,value in enumerate(year):
    # print(index,value)
    if str(value)!='0':
        year[index]=int('19'+str(value))
    else:
        year[index]=int('200'+str(value))

print('修改之后的列表:',year)
#对列表进行排序
year.sort()
print('排序之后的列表为:',year)

运行结果:

原列表: [82, 89, 88, 86, 85, 0, 99]
修改之后的列表: [1982, 1989, 1988, 1986, 1985, 2000, 1999]
排序之后的列表为: [1982, 1985, 1986, 1988, 1989, 1999, 2000]

2.为购物车加商品

#一个空列表
lst=[]
for i in range(0,3):
    goods=input('请输入商品编号和商品名称,一次输入一个:\n')
    lst.append(goods)#在列表的末尾添加一个元素
for item in lst:#遍历一下你所添加的商品
    print(item)

#购物车
cart=[]
while True:
    num = input('请输入你所选的商品编号:\n')
    for item in lst:
        if item.find(num) != -1:
            cart.append(item)
            break  # 说明该商品编号存在,此时已加入购物车,退出for循环
    else:#把商品列表遍历完发现没有你要加入购物车的内容
        print('你所输入的商品编号不存在,请重新输入吧!')
    if num=='q':
        break#退出while循环
print('你所选购的商品为:')
# for item in cart:
#     print(item)
for i in range(len(cart)-1,-1,-1):
    print(cart[i])#保证最后加入购物车的在最上面

运行结果:

请输入商品编号和商品名称,一次输入一个:
1001 手机
请输入商品编号和商品名称,一次输入一个:
1002 电脑
请输入商品编号和商品名称,一次输入一个:
1003 书包
1001 手机
1002 电脑
1003 书包
请输入你所选的商品编号:
1001
请输入你所选的商品编号:
1002
请输入你所选的商品编号:
1003
请输入你所选的商品编号:
1000
你所输入的商品编号不存在,请重新输入吧!
请输入你所选的商品编号:
q
你所输入的商品编号不存在,请重新输入吧!
你所选购的商品为:
1003 书包
1002 电脑
1001 手机

实操案例七

部分几个星座的性格,没写全

con=['白羊座','金牛座','双子座','巨蟹座','狮子座','处女座']
nature=['积极乐观','固执内向','圆滑世故','多愁善感','蜜汁自信','精明计较']
a=zip(con,nature)
for item in a:
    print(item)
print('-------------------')
#将两个列表转成字典
d=dict(zip(con,nature))
for item in d:
    print(item,d[item])
print(d)
print('-----------------------')
a=1
while a:
    flag = False  # 一个标志
    key = input('请输入您的星座名称:')
    for item in d:
        if item == key:
            print(key, '您的性格特点为:', d.get(key))
            flag = True
            a=0
            break

    else:
        flag = False

    if not flag:
        print('您输入的星座有误,请重新输入')

运行结果:

('白羊座', '积极乐观')
('金牛座', '固执内向')
('双子座', '圆滑世故')
('巨蟹座', '多愁善感')
('狮子座', '蜜汁自信')
('处女座', '精明计较')
-------------------
白羊座 积极乐观
金牛座 固执内向
双子座 圆滑世故
巨蟹座 多愁善感
狮子座 蜜汁自信
处女座 精明计较
{'白羊座': '积极乐观', '金牛座': '固执内向', '双子座': '圆滑世故', '巨蟹座': '多愁善感', '狮子座': '蜜汁自信', '处女座': '精明计较'}
-----------------------
请输入您的星座名称:b
您输入的星座有误,请重新输入
请输入您的星座名称:白羊座
白羊座 您的性格特点为: 积极乐观

2.购票进站

dict_ticket={#key:value。其中key为车次,value为列表
    'G1569':['北京南-天津南','18:05','18:39','00:34'],
    'G1967':['北京南-天津南','18:15','18:49','00:34'],
    'G1917':['北京南-天津南','18:20','19:39','00:38'],
    'G2023':['北京南-天津南','18:35','18:37','00:54']
}#此内容为胡编乱造,如有雷同,纯属巧合,可改
print('车次\t\t出发站-到达站\t\t出发时间\t\t到达时间\t\t历时时长')
for item in dict_ticket:
    print(item,end='   ')
    for i in dict_ticket[item]:
        print(i,end='\t\t')
    print()#换行
flag=True
while flag:
    # 输入要购买的车次
    train_no = input('请输入本次要购买的车次:')
    for item in dict_ticket:
        if train_no == item:
            flag=False
            break
    else:
        flag=True
        print('您输入的车次有误,请检查是否输入正确')
persons=input('请输入乘车人,如果是多人请您以逗号分割')
s=f'您已购买了{train_no}次列车'
s_info=dict_ticket[train_no]#获取车次详细信息
s+=s_info[0]+'  '+s_info[1]+'  开,'
print(f'{s}{persons}尽快取纸质车票')
车次		出发站-到达站		出发时间		到达时间		历时时长
G1569   北京南-天津南		18:05		18:39		00:34		
G1967   北京南-天津南		18:15		18:49		00:34		
G1917   北京南-天津南		18:20		19:39		00:38		
G2023   北京南-天津南		18:35		18:37		00:54		
请输入本次要购买的车次:acs
您输入的车次有误,请检查是否输入正确
请输入本次要购买的车次:G2023
请输入乘车人,如果是多人请您以逗号分割呜哈哈,嘻哈哈
您已购买了G2023次列车北京南-天津南  18:35  开,请呜哈哈,嘻哈哈尽快取纸质车票

实操案例八

1.咖啡馆喝咖啡

#喝咖啡 本案例使用元组实现
coffee_name=('蓝山','卡布奇诺','拿铁','皇家咖啡')
print('您好!欢迎光临')
print('本店经营的咖啡有:')
for index,item in enumerate(coffee_name):
    print(index+1,'.',item,end='   ')
print()
index=int(input('请输入你选购的咖啡编号:'))
if 0<=index<=len(coffee_name):
    print(f'您的咖啡【{coffee_name[index-1]}】好了,请您慢用!')

运行结果:

您好!欢迎光临
本店经营的咖啡有:
1 . 蓝山   2 . 卡布奇诺   3 . 拿铁   4 . 皇家咖啡   
请输入你选购的咖啡编号:3
您的咖啡【拿铁】好了,请您慢用!

2.显示五名的排行

#输出前五名 此案例为元组里套元组
scores=(('广州恒大',72),('北京国安',7),('上海上港',66),('江苏苏宁',53),('山东鲁能',51))
for index,item in enumerate(scores):
    print(index+1,'.',end=' ')
    for score in item:
        print(score,end='  ')
    print()

运行结果:

1 . 广州恒大  72  
2 . 北京国安  7  
3 . 上海上港  66  
4 . 江苏苏宁  53  
5 . 山东鲁能  51  

3.模拟手机通讯录

#模拟手机通讯录
phones=set()
for i in range(5):
    info=input(f'请输入第{i+1}个联系人的姓名与电话:\n')
    phones.add(info)
print('------------------')
for item in phones:
    print(item)

运行结果:

请输入第1个联系人的姓名与电话:
张三111
请输入第2个联系人的姓名与电话:
李四222
请输入第3个联系人的姓名与电话:
王五333
请输入第4个联系人的姓名与电话:
赵六444
请输入第5个联系人的姓名与电话:
马奇555
------------------
赵六444
王五333
李四222
张三111
马奇555

实操案例九

1.统计字符串中出现指定字符的次数

#统计字符串中出现指定字符的次数
def getCount(ch,s):
    count=0
    for item in s:
        if ch.upper()==item or ch.lower()==item:
            count=count+1
    return count

if __name__ == '__main__':
    str=input('请输入字符串')
    ch=input('请输入你要查找的字符')
    count=getCount(ch,str)
    print(f'你查找的{ch}字符在{str}字符串中出现的次数为{count}')

运行结果:

请输入字符串123sss
请输入你要查找的字符1
你查找的1字符在123sss字符串中出现的次数为1

2.格式化输出商品的名称和单价

def show(lst):
    for item in lst:
        for i in item:
            print(i,end='\t\t')
        print()

lst=[['01','电风扇','美的',500],
     ['02','洗衣机','TCL',1000],
     ['03','空 调','格力',2500]]
print('编号\t\t名称\t\t\t品牌\t\t单价')
show(lst)#调用show方法
print('-------------格式化-----------------')
print('编号\t\t\t名称\t\t\t品牌\t\t单价')
for item in lst:
    item[0]='0000'+item[0]
    item[3]='${:.2f}'.format(item[3])
show(lst)

运行结果:

编号		名称			品牌		单价
01		电风扇		美的		500		
02		洗衣机		TCL		1000		
03		空 调		格力		2500		
-------------格式化-----------------
编号			名称			品牌		单价
000001		电风扇		美的		$500.00		
000002		洗衣机		TCL		$1000.00		
000003		空 调		格力		$2500.00	

实操案例十

1.mini计算器

def calc(a,b,op):
    if op=='+':
        return add(a,b)
    elif op=='-':
        return sub(a,b)
    elif op=='*':
        return mul(a,b)
    elif op=='/':
        if b==0:
            return '分母不能为0'
        return div(a,b)
def add(a,b):
    return a+b
def sub(a,b):
    return a-b
def mul(a,b):
    return a*b
def div(a,b):
    return a/b
if __name__ == '__main__':
    a=int(input('请输入第一个整数:\n'))
    b=int(input('请输入第二个整数:\n'))
    op=input('请输入运算符:\n')
    print(calc(a,b,op))

运行结果:

请输入第一个整数:
1
请输入第二个整数:
2
请输入运算符:
*
2

2.猜数小游戏

import random
def guessNum(randNum,guess_num):
    if randNum==guess_num:
        return 0
    elif randNum<guess_num:
        return 1
    else:
        return -1
randomNum=random.randint(1,100)
for i in range(10):
    guess_Num=int(input('我心里想了一个1-100的随机数,请您猜一猜:\n'))
    result=guessNum(randomNum,guess_Num)
    if result==0:
        print(f'猜对了这个数是{randomNum}')
        break
    elif result==1:
        print('猜大了')
    else:
        print('猜小了')
else:
    print('真笨,猜了十次都猜不对,加油啊')

运行结果:

我心里想了一个1-100的随机数,请您猜一猜:
50
猜大了
我心里想了一个1-100的随机数,请您猜一猜:
15
猜小了
我心里想了一个1-100的随机数,请您猜一猜:
25
猜小了
我心里想了一个1-100的随机数,请您猜一猜:
40
猜小了
我心里想了一个1-100的随机数,请您猜一猜:
45
猜大了
我心里想了一个1-100的随机数,请您猜一猜:
42
猜小了
我心里想了一个1-100的随机数,请您猜一猜:
43
猜对了这个数是43

实操案例十一

当出异常时捕获异常,会手动抛异常

1.输入成绩

#1.手动报异常
'''
score=int(input('请输入分数'))
if 0<=score<=100:
    print(f'分数为{score}')
else:
    raise Exception('分数不正确')
'''
#2.try...except捕获异常
try:
    score = int(input('请输入分数'))
    if 0 <= score <= 100:
        print(f'分数为{score}')
    else:
        raise Exception('分数不正确')
except Exception as e:
    print(e)

运行结果:

请输入分数102
分数不正确

2.判断能否构成三角形

def is_triangle(a,b,c):
    if a<=0 or b<=0 or c<=0:
        raise Exception('三条边的值不能含有负数与0')
    #判断能否构成三角形
    if a+b>c and a+c>b and b+c>a:
        print(f'三角形的边长分别是a={a},b={b},c={c}')
    else:#raise Exception()手动抛异常
        raise Exception(f'a={a},b={b},c={c}不能构成三角形')

if __name__ == '__main__':
    try:
        a = int(input('请输入第一条边长:\n'))
        b = int(input('请输入第二条边长:\n'))
        c = int(input('请输入第三条边长:\n'))
        is_triangle(a, b, c)
    except Exception as e:
        print(e)

运行结果:

请输入第一条边长:
1
请输入第二条边长:
1
请输入第三条边长:
1
三角形的边长分别是a=1,b=1,c=1

实操案例十二

类和对象的知识点,主要是面向对象

1.定义一个圆的类,计算面积和周长

import math
class Circle():
    def __init__(self,r):#初始化函数
        self.r=r
    def getArea(self):#计算圆的面积
        return math.pi*math.pow(self.r,2)
    def getZhouchang(self):#计算圆的周长
        return math.pi*self.r*2
if __name__ == '__main__':
    r=int(input('请输入圆的半径:\n'))
    cir=Circle(r)
    print(f'半径为{r}的圆的面积为{cir.getArea()}')
    print(f'半径为{r}的圆的周长为{cir.getZhouchang()}')
    #可以定义保留多少小数
    print('半径为{}的圆的面积为{:.2f}'.format(r,cir.getArea()))
    print('半径为{}的圆的周长为{:.2f}'.format(r,cir.getZhouchang()))

运行结果:

请输入圆的半径:
4
半径为4的圆的面积为50.26548245743669
半径为4的圆的周长为25.132741228718345
半径为4的圆的面积为50.27
半径为4的圆的周长为25.13

2.定义学生类录入5个学生信息存储到列表中

#定义学生类录入5个学生信息存储到列表中
class Student():
    def __init__(self,name,age,gender,grade):
        self.name=name
        self.age=age
        self.gender=gender
        self.grade=grade
    def show(self):
        print(self.name,self.age,self.gender,self.grade)


if __name__ == '__main__':
    print('请输入5位学生的信息:(姓名#年龄#性别#成绩)')
    lst=[]
    i=0
    # for j in range(0,5):
    while i!=5:#如果输错,不计算循环次数,自己加着玩的,可以直接用for
        s=input(f'请输入第{i+1}位学生的信息和成绩')
        s_lst=s.split('#')
        if len(s_lst)!=4:
            print('请检查格式')#简易版筛选可能出错的地方
            i=i
            continue
        #创建学生对象
        stu=Student(s_lst[0],int(s_lst[1]),s_lst[2],float(s_lst[3]))
        lst.append(stu)
        i=i+1
for i in lst:
    i.show()

运行结果:

请输入5位学生的信息:(姓名#年龄#性别#成绩)
请输入第1位学生的信息和成绩张三#23#男#99
请输入第2位学生的信息和成绩张三#23#男#100
请输入第3位学生的信息和成绩李四#24#男#98
请输入第4位学生的信息和成绩111
请检查格式
请输入第4位学生的信息和成绩王五#25#男#99
请输入第5位学生的信息和成绩花朵#18#女100
请检查格式
请输入第5位学生的信息和成绩花朵#18#女#100
张三 2399.0
张三 23100.0
李四 2498.0
王五 2599.0
花朵 18100.0

实操案例十三

python中关于多态的问题

1.编写程序实现弹奏乐器。不同乐器发出不同声音。

class Instrument():
    def make_sound(self):
        pass

class ErHu(Instrument):
    def make_sound(self):
        print('二胡在演奏')

class Piano(Instrument):
    def make_sound(self):
        print('钢琴在演奏')

class Violin(Instrument):
    def make_sound(self):
        print('小提琴在演奏')
#演奏的函数
def play(instrument):
    instrument.make_sound()

class Bird():
    def make_sound(self):
        print('小鸟在唱歌')
        
if __name__ == '__main__':
    play(ErHu())
    play(Piano())
    play(Violin())
    play(Bird())

运行结果:

二胡在演奏
钢琴在演奏
小提琴在演奏
小鸟在唱歌

2.使用面向对象思想,输出出租车和私家车的信息

class Car():
    def __init__(self,type,no):
        self.type=type
        self.no=no
    def start(self):
        pass
    def stop(self):
        pass

class Taxi(Car):
    def __init__(self,type,no,company):
        super().__init__(type,no)#别忘了传参
        self.company=company
    def start(self):
        print('乘客您好!')
        print(f'我是{self.company}出租车公司的,我的车牌是:{self.no},请问您要去哪里?')
    def stop(self):
        print('目的地到了,请您付款下车,欢迎下次乘坐')


class FamilyCar(Car):
    def __init__(self,type,no,name):
        super().__init__(type,no)
        self.name=name
    def start(self):
        print(f'我是{self.name},我的汽车我做主')
    def stop(self):
        print('目的地到了,我们去玩吧!')
#main
if __name__ == '__main__':
    taxi=Taxi('上海大众','京AXXXX','长城')
    taxi.start()
    taxi.stop()
    print('-'*30)
    familyCar=FamilyCar('五菱宏光','京AYYYY','武大郎')
    familyCar.start()
    familyCar.stop()

运行结果:

乘客您好!
我是长城出租车公司的,我的车牌是:京AXXXX,请问您要去哪里?
目的地到了,请您付款下车,欢迎下次乘坐
------------------------------
我是武大郎,我的汽车我做主
目的地到了,我们去玩吧!

实操案例十四

模块

1.模拟高铁售票系统

在这里插入图片描述

import prettytable as pt

#显示坐席
def show_ticket(row_num):
    tb=pt.PrettyTable()#创建对象
    #表头
    tb.field_names=['行号','座位1','座位2','座位3','座位4','座位5']
    for i in range(row_num):
        lst=[f'第{i+1}行','有票','有票','有票','有票','有票']
        tb.add_row(lst)
    print(tb)

#订票
def order_ticket(row_num,row,colum):
    tb=pt.PrettyTable()
    tb.field_names=['行号','座位1','座位2','座位3','座位4','座位5']
    for i in range(row_num):
        if int(row)==i+1:
            lst=[f'第{i+1}行','有票','有票','有票','有票','有票']
            lst[int(colum)]='已售'
            tb.add_row(lst)
        else:
            lst = [f'第{i + 1}行', '有票', '有票', '有票', '有票', '有票']
            tb.add_row(lst)
    print(tb)

if __name__ == '__main__':
    row_num=13
    show_ticket(row_num)
    choose_num=input('请输入选择的座位,如13,5表示13排5号座位')
    try:
        row,column=choose_num.split(',')
    except:
        print('输入格式有误,如13排5号座位,应该输入13,5')
    order_ticket(row_num,row,column)

运行结果:

+--------+-------+-------+-------+-------+-------+
|  行号  | 座位1 | 座位2 | 座位3 | 座位4 | 座位5 |
+--------+-------+-------+-------+-------+-------+
|1|  有票 |  有票 |  有票 |  有票 |  有票 |
|2|  有票 |  有票 |  有票 |  有票 |  有票 |
|3|  有票 |  有票 |  有票 |  有票 |  有票 |
|4|  有票 |  有票 |  有票 |  有票 |  有票 |
|5|  有票 |  有票 |  有票 |  有票 |  有票 |
|6|  有票 |  有票 |  有票 |  有票 |  有票 |
|7|  有票 |  有票 |  有票 |  有票 |  有票 |
|8|  有票 |  有票 |  有票 |  有票 |  有票 |
|9|  有票 |  有票 |  有票 |  有票 |  有票 |
|10|  有票 |  有票 |  有票 |  有票 |  有票 |
|11|  有票 |  有票 |  有票 |  有票 |  有票 |
|12|  有票 |  有票 |  有票 |  有票 |  有票 |
|13|  有票 |  有票 |  有票 |  有票 |  有票 |
+--------+-------+-------+-------+-------+-------+
请输入选择的座位,如13,5表示135号座位13,5
+--------+-------+-------+-------+-------+-------+
|  行号  | 座位1 | 座位2 | 座位3 | 座位4 | 座位5 |
+--------+-------+-------+-------+-------+-------+
|1|  有票 |  有票 |  有票 |  有票 |  有票 |
|2|  有票 |  有票 |  有票 |  有票 |  有票 |
|3|  有票 |  有票 |  有票 |  有票 |  有票 |
|4|  有票 |  有票 |  有票 |  有票 |  有票 |
|5|  有票 |  有票 |  有票 |  有票 |  有票 |
|6|  有票 |  有票 |  有票 |  有票 |  有票 |
|7|  有票 |  有票 |  有票 |  有票 |  有票 |
|8|  有票 |  有票 |  有票 |  有票 |  有票 |
|9|  有票 |  有票 |  有票 |  有票 |  有票 |
|10|  有票 |  有票 |  有票 |  有票 |  有票 |
|11|  有票 |  有票 |  有票 |  有票 |  有票 |
|12|  有票 |  有票 |  有票 |  有票 |  有票 |
|13|  有票 |  有票 |  有票 |  有票 |  已售 |
+--------+-------+-------+-------+-------+-------+

扩展版:

2.推算几天后的日期

import datetime
def inputdate():
    indate=input('请输入开始日期:(20200808)后按回车键')
    indate=indate.strip()#去除空格
    dateStr=indate[0:4]+'-'+indate[4:6]+'-'+indate[6:]
    #datetime.strptime 时间日期格式化
    return datetime.datetime.strptime(dateStr,'%Y-%m-%d')

if __name__ == '__main__':
    print('-----------推算几天后的日期-------------')
    sdate=inputdate()
    in_num=int(input('请输入间隔天数:'))
    #表示两个 date 对象或者 time 对象,或者 datetime 对象之间的时间间隔,精确到微秒。
    fdate=sdate+datetime.timedelta(days=in_num)
    print('您推算的日期是:'+str(fdate).split(' ')[0])

运行结果:

-----------推算几天后的日期-------------
请输入开始日期:(20200808)后按回车键20201010
请输入间隔天数:-100
您推算的日期是:2020-07-02

实操案例十五

文件的读写

1.记录用户登录日志

import time
def show_info():
    print('输入提示数字,执行相应操作:0.退出  1.查看登录日志')

#记录日志
def write_logininfo(username):
    #上下文管理器
    with open('log.txt','a') as file:
        s=f'用户名{username},登录时间:{time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))}'
        file.write(s)
        file.write('\n')

#读取日志
def read_logininfo():
    #上下文管理器
    with open('log.txt','r') as file:
        while True:
            line=file.readline()
            if line=='':
                break
            else:
                print(line,end='')
if __name__ == '__main__':
    '''print(time.time())#秒
    print(time.localtime(time.time()))
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))'''
    username=input('请输入用户名:')
    pwd=input('请输入密码:')
    if 'admin'==username and 'admin'==pwd:
        print('登录成功')
        write_logininfo(username)#记录日志
        show_info()#提示用户要执行什么操作
        num=int(input('输入操作数字:'))
        while True:
            if num==0:
                print('退出成功')
                break
            elif num==1:
                print('查看登录日志')
                read_logininfo()#读取日志
                num=int(input('输入操作数字:'))
            else:
                print('你输入的数字有误')
                show_info()
                num=int(input('输入操作数字:'))
    else:
        print('对不起,用户名或密码不正确')

运行结果:

请输入用户名:admin
请输入密码:admin
登录成功
输入提示数字,执行相应操作:0.退出  1.查看登录日志
输入操作数字:1
查看登录日志
用户名admin,登录时间:2023-05-26 13:37:28
输入操作数字:1
查看登录日志
用户名admin,登录时间:2023-05-26 13:37:28
输入操作数字:0
退出成功

2.模拟淘宝客服

def find_answer(question):
    with open('reply.txt','r',encoding='utf-8') as file:
       while True:
           line=file.readline()
           if not line:#if line==''到文件末尾退出
               break
            #字符串的分割
           keyword=line.split('|')[0]
           reply=line.split('|')[1]
           if keyword in question:
               return reply
    return False

if __name__ == '__main__':
    question=input('Hi,您好,小秘在此等候您很久了,有什么烦恼和小秘说吧')
    while True:
        if question=='bye':
            break
        reply=find_answer(question)
        if not reply:#如果回复的是False,not False-->True
            question=input('小秘还在努力中,不太理解您的意思,您可以问:订单、物流、账户、支付等问题,退出请输入bye')
        else:
            print(reply)
            question=input('小主,您还有关于订单、物流、账户、支付等问题吗?退出请输入bye')
    print('小主,期待您的下次光临!再见')

运行结果:

Hi,您好,小秘在此等候您很久了,有什么烦恼和小秘说吧物流
如果您有任何物流问题,可以登录淘宝账号,点击我的订单,查看商品物流

小主,您还有关于订单、物流、账户、支付等问题吗?退出请输入bye支付
如果您有任何支付问题,可以联系支付宝客户,QQ:XXX

小主,您还有关于订单、物流、账户、支付等问题吗?退出请输入bye就是就是
小秘还在努力中,不太理解您的意思,您可以问:订单、物流、账户、支付等问题,退出请输入byebye
小主,期待您的下次光临!再见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IP协议-服务类型字段

服务类型&#xff08;Type of Service&#xff09;字段是比较复杂的一个字段&#xff0c;该字段经过多次标准变更。 IPv4报文 一、最初标准&#xff08;RFC 791&#xff09; RFC 791定义TOS字段总共占用8bit&#xff0c;分为IP Precedence优先级&#xff08;3bit&#xff09;、…

Ansys Zemax | 如何将高斯光整形为平顶光

概要 本文展示了如何设计光束整形器将激光器产生的高斯分布的光转换为平顶分布的光输出。&#xff08;联系我们获取文章附件&#xff09; 介绍 光束整形光学元件可以将入射光的光强分布转换为其他特定的分布输出。最常见的例子就是将激光器产生的高斯分布的光转换为平顶&#x…

GMesh的Mesh操作面板介绍

GMesh操作面板介绍 Define 用于控制网格生成过程中各个单元的尺寸大小 “Size at points”选项允许您指定空间中某些点的尺寸大小。这些点可以是模型的几何结构中的点&#xff0c;也可以是在Gmsh中手动定义的点&#xff08;使用“Point”命令&#xff09;。在这种情况下&…

pycharm在终端运行时ps 不显示环境

如果下面显示的是ps ----- 而不是 则需要把这儿修改一下

2023年Java教学大纲!好程序员教你如何快速学会Java!

今天好程序员给大家分享一篇2023年的Java教学大纲&#xff0c;跟着这篇大纲学习&#xff0c;并且熟练掌握该技能&#xff0c;实习轻松月入过万不是梦&#xff01; 一、Java初级程序员必须要掌握的技能&#xff1a; Java基础知识控制声明面向对象的概念数组字符串异常处理输入/输…

Ubuntu22.04安装最新Eigen库

按道理&#xff1a;该方法适用所有Linux&#xff0c;适合安装多版本 本文采用源码 cmake的方法安装&#xff0c;故前置条件&#xff1a; 源码下载&#xff0c;官网下载或GitLab下载安装cmake&#xff08;没有安装cmake&#xff0c;也可以采用其他办法安装&#xff09; 官网下…

解决win无法删除多层嵌套文件夹

起因&#xff1a;昨天研究jpackage工具&#xff0c;不小心搞得一个文件夹里嵌套了好几百个文件夹&#xff0c;用win自己的删除删不掉&#xff0c;shiftdel直接删除也不行&#xff0c;直接弹窗删除错误&#xff1b; 后来用电脑管家下载了个“文件粉碎”&#xff0c;添加目录&am…

硬核机器学习知识点教学--(代码讲解)

用代码和实战讲解机器学习&#xff0c;零基础一样看得懂&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb; 复习、学习、备战考试皆可用&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb; 本系列持续更新中&a…

举个栗子~Tableau 技巧(254):学做圆形维诺图(Voronoi diagram)

关于维诺图 维诺图用于分析不同集合之间的交集和差集关系。在数据科学和统计学中&#xff0c;它常用于可视化不同数据集之间的重叠和交集&#xff0c;以便更好地理解它们之间的关系和差异。 例如&#xff0c;我们可以使用维诺图来展示不同客户群之间的交集&#xff0c;以便更…

编辑与校对的艺术:如何提高公文写作质量

在写作过程中&#xff0c;编辑与校对是提高作品质量的关键环节。它们不仅涉及语法、拼写和标点等基本问题&#xff0c;还包括文本的组织、表达和内容。通过掌握编辑与校对的艺术&#xff0c;你可以使你的文字更具说服力、更清晰易懂&#xff0c;从而更有效地传达你的观点。 1.认…

分布式系统监控zabbix安装部署及自定义监控

目录 一、zabbix的基本概述1.1 zabbix 监控原理1.2 Zabbix 6.0 新特性1.3 Zabbix 6.0 功能组件1.4 zabbix的监控对象1.5 zabbix的常用术语 二、zabbix进程详解三、zabbix的监控框架四、zabbix源码安装及部署4.1 部署 zabbix 服务端4.2 安装 zabbix 客户端&#xff0c;实现 zabb…

00后学什么技术有前途?2023年Java和前端发展前景分析!

00后的你还在想着进厂吗&#xff1f;每天在流水线上打螺丝&#xff0c;过着一成不变的日子&#xff0c;而且每个月就休息那么几天。如果你不想进厂&#xff0c;特别是对那些20岁刚出头或者学历不是那么有优势的年轻人&#xff0c;好程序员建议还是应该去学习一门技术&#xff0…

从 OceanBase 迁移数据到 DolphinDB

OceanBase 是一款金融级分布式关系数据库&#xff0c;具有数据强一致、高可用、高性能、在线扩展、高度兼容 SQL标准和主流关系数据库、低成本等特点&#xff0c;但是其学习成本较高&#xff0c;且缺乏金融计算函数以及流式增量计算的功能。 DolphinDB 是一款国产的高性能分布…

Micro-python Socket 支持 ROS2 topic 框架 (一)

消息Topic ROS2官方文档 Topic官方介绍 是各节点之间的信息交流媒介&#xff0c;可以实现一对一&#xff0c;一对多&#xff0c;多对一&#xff0c;多对多的信息交流&#xff0c;如图所示 &#xff08;一&#xff09;使用工具打开消息流图 打开rqt_graph&#xff08;注意其…

如何利用IDEA将Git分支代码回退到指定历史版本

一、背景 作为一名后端开发&#xff0c;相信大家一定遇到过这样的情景&#xff0c;代码开发人员过多&#xff0c;并且开发分支过多&#xff0c;导致代码版本管理困难&#xff0c;这样就难免遇到一些代码合并出错&#xff0c;比如&#xff0c;当我提交了本次修改到本地和远程分…

Spring Boot注解@Async与线程池的配置

目录 使用异步注解创建异步任务 Async注解 使用Demo 线程池配置 Spring Boot默认用于异步任务线程池配置 线程池配置 线程池隔离 为什么需要线程池隔离&#xff1f; 线程池隔离实现Demo 线程池配置&#xff1a; 异步任务&#xff1a; 测试demo 参考内容&#xff1a; 使…

动态优化会议地点

前言 在现在快节奏的工作节奏下&#xff0c;大家的活动范围越来越广&#xff0c;但是出行成本也相应提高。在集体会面的时候&#xff0c;如何选择合适的地点成为了一个棘手的问题。本文将介绍如何通过动态优化选择会议地点&#xff0c;以达到平均交通成本最低的目标。 动态优化…

【操作系统真象还原】第4章:保护模式入门(4.4~4.5节)

目录 4.4 处理器微架构简介 4.4.1 流水线 4.4.2 乱序执行 4.4.3 缓存 4.4.4 分支预测 4.5 使用远跳转指令清空流水线&#xff0c;更新段描述符缓冲寄存器 4.6 保护模式之内存段的保护 4.6.1 向段寄存器加载选择子时的保护 4.6.2 代码段和数据段的保护 4.6.3 栈段的保…

CentOS7 网络配置

在Linux系统下 查询CentOS7的ip地址 输入ip查询命名 ip addr 也可以输入 ifconfig查看ip&#xff0c;但此命令会出现3个条目&#xff0c; centos的ip地址是ens33条目中的inet值。 输入命令: ip addr 结果如下: 使用: ifconfig 命令查询结果如下: 发现 ens33 没有 inet 这个属性…

国内半导体分立器件逐步向高端应用市场推进,未来可期

分立器件行业概况 半导体分立器件是半导体产业的基础及核心领域之一&#xff0c;其具有应用领域广阔、高成品率、特殊器件不可替代等特性。 从市场需求看&#xff0c;分立器件受益于物联网、可穿戴设备、智能家居、健康护理、安防电子、新能源汽车、智能电网、5G通信射频等市…