Python中21道个程序小练习

【python学习笔记】:经典实用小案例(练习版) 提示:控制键盘和鼠标的移动就不得不推荐pynput这个库了,它还可以用于制作键盘记录器,通过读取被按下的键,然后将它们保存在一个文本文件中。(咳咳,想知道女朋友的账号密码的可以好好学习下)​​​​​​​。今天给大家分享的,是一些实战练习的小案例,如果你还是Python小白,可以再看看我前面几篇文章,如果是有了一点基础,那就尝试完成下面这些案例吧!如果游戏者获胜,则增加1分。用Python编写一个脚本,实现将用户在键盘上按过的按键记录下来,并保存在一个文本文件中。安装:win10toast​​​​​​​。 阅读详情

1.使用格式化输出的三种方式实现以下输出(name换成自己的名字,既得修改身高体重,不要厚颜无耻)

name = 'ABDMLBM'
height = 175
weight = 140

# "My name is 'Nick', my height is 180, my weight is 140"
print('My name is %s,my height is %s,my weight is %s'%(name,height,weight))
print('My name is {},my height is {},my weight is {}'.format(name,height,weight))
print(f'My name is {name},my height is {height},my weight is {weight}')

2.输入姑娘的年龄后,进行以下判断:

  • 如果姑娘小于18岁,打印“不接受未成年”

  • 如果姑娘大于18岁小于25岁,打印“心动表白”

  • 如果姑娘大于25岁小于45岁,打印“阿姨好”

  • 如果姑娘大于45岁,打印“奶奶好”

while True:
    girl_age =int( input('输入美女年龄'))
    if girl_age < 18:
        print('不接受未成年')
    elif girl_age >= 18 and girl_age < 25:
        print('心动表白')
    elif girl_age >= 25 and girl_age < 45:
        print('阿姨好')
    else :
        print('奶奶好')

3.预习while循环,打印1-100之间的偶数:

i = 1
while i < 101:
    oi = i % 2
    if oi == 0:
        print(i)
    i += 1

4.通过预习写一个猜年龄游戏,需求:给定一个标准年龄,用户通过输入年龄判断年龄是否等于标准年龄,如果等于——打印猜对了;如果小于——打印猜小了;如果大于——打印猜大了,增加用户输入年龄功能,并可以参考while循环博客,为应用程序添加循环。

预习while循环,猜年龄游戏升级版,有以下三点要求:

  • 允许用户最多尝试3次

  • 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序

  • 如果猜对了,就直接退出

age = 25
count = 0
while count < 4:
    user_age = int(input('请输入你的年龄:'))
    if user_age == age:
        print('你猜对了')
        break
    elif user_age > age:
        print('你猜大了')
    else:
        print('你猜小了')
    count += 1
    if count != 3 :
        continue
    else:
        print('你已经猜了三次,答"Y"或者"y"还想再玩,答"N"或者"n"退出')
        user_player = input('请输入:')
        if user_player == "Y" or user_player == "y":
            count = 0
        else:
            break

5.统计s = 'hello alex alex say hello sb sb’中每个单词的个数

s = 'hello alex alex say hello sb sb'
l=s.split()
print(l)
dic = {}
for item in l:
    if item in dic:
        dic[item]=dic[item]+1
    else:
        dic[item]=1
print(dic)

6.统计一篇英文文章内每个单词出现频率,并返回出现频率最高的前10个单词及其出现次数

from collections import Counter
import re
with open('a.txt', 'r', encoding='utf-8') as f:
    txt = f.read()
c = Counter(re.split('\W+',txt))  #取出每个单词出现的个数
print(c)
ret = c.most_common(10)   #取出频率最高的前10个
print(ret)

7.冒泡排序

def mao_pao(li):
    for i in range(len(li)):
        for j in range(len(li)):
            if li[i] < li[j]:
                li[i],li[j] = li[j] ,li[i]
import random
li = list(range(10))
random.shuffle(li)
print(li)
mao_pao(li)
print(li) 

8.删除列表中的重复元素

#方式一
li = [1,5,5,4,12,3,1,5]
print(list(set(l)))

#方式二
li = [1,5,5,4,12,3,1,5]
def func(li):
    l = []
    for i in li:
        if i not in l:
            l.append(i)
    return l
print(func(li)) 

9.二分查找

#方式一:递归版
li = [1,2,3,4,5,6,7,8,9,10]
def erfen(li,aim ,start=0 ,end=len(li)-1):
    if start <= end:
        mid = (start+end)//2
        if li[mid] >aim :  #如果中间的值比目标值大,就从左边找
            return erfen(li,aim,start,mid-1)
        elif li[mid]<aim : #从右边找
            return erfen(li,aim,mid+1,end)
        else:
            return mid
ret = erfen(li,10)
print(ret)

#方式二:循环版
li = [1,2,3,4,5,6,7,8,9,10]
def erfen(li,aim,start=0,end=len(li)-1):
    while start <= end:
        mid = (start+end) //2
        if li[mid] < aim:
            start = li[mid] +1
        elif li[mid] >aim:
            end = li[mid] -1
        else:
            return mid

print(erfen(li,10)) 

10、写出下面代码的输出结果

def f(x,l=[]):
    for i in range(x):
        l.append(i*i)
    print(l)
f(2)  #[0,1]
f(3,[3,2,1]) #[3,2,1,0 1 4]
f(3) #[0,1,0,1,4]

11. 实现字符串反转 输入str="string"输出’gnirts’

# 方式一
def str_reverse(str):
    return str[::-1]  #从前到后步长为-1
print(str_reverse('string'))

# 方式二
def str_reverse2(str):
    l = list(str)
    l.reverse()
    new_str = ''.join(l)
    return new_str
print(str_reverse2('string')) 

12.一行代码实现对列表a中的偶数位置的元素进行加3后求和

# 0 1 2 3 4
# 0   5   7
sums=sum(map(lambda x:x+3,list(range(5))[::2]))
print(sums) 

13.List=[-2,1,3,-6] ,如何实现以绝对值大小从小到大将list中内容排序

List=[-2,1,3,-6]
List.sort(key=abs)  #按照绝对值从小到大排序
print(List) 

14. 如果当前日期为20170130,要求写一个函数输出N天后的日期

import datetime
data = '20170130'
def func(n,data):

    date=datetime.datetime.strptime(data,'%Y%m%d')
    da=datetime.timedelta(n)
    return date+da

print(func(2,data)) 

15.实现一段代码,功能是将这段代码打印出来

import os
def print_code():
    with open(os.path.join(os.getcwd(),__file__),'r',encoding='utf-8') as f:
        return f.read()
print(print_code()) 

16.合并两个列表,并去重,组成一个新的列表

# 方式一
list1 = [1,2,3,5,8,4,2,6]
list2 = [11,44,21,2,54,77]
print(list(set(list1+list2)))

#方式二
list1.extend(list2)
print(list(set(list1)))
#方式三
def list_union(list1,list2):
    for i in list2:
        list1.append(i)
    return list1
print(list(set(list_union(list1,list2)))) 

17.什么是lambda表达式?他有什么好处?另外Python在函数编程方面提供了些什么函数和语法?

答:
lambda 表达式也就是匿名函数,一些简单的功能需要实现的时候可以用匿名函数,一行语句体搞定。
它语法简单,简化代码,不会产生命名冲突,污染命名空间。
Python提供了map,filter,reduce等函数方法,提供了装饰器,闭包等语法

18.详细说说tuple,list,dict的用法以及他们的特点

tuple:元组,不可变数据类型,访问效率高,适合存储一些常量数据,可以作为字典的键使用
list:列表,是可变数据类型,可以通过下标索引取值
dict:字典,是可变数据类型,存储方式为键值对的形式,可以通过相对应的键获取相对应的值。key支持多种数据类型

19. list 对象 alist [{‘name’:‘a’,‘age’:20},{‘name’:‘b’,‘age’:30},{‘name’:‘c’,‘age’:25}],按 alist 中元素的age 由大到小排序

alist = [{'name': 'a', 'age': 20}, {'name': 'b', 'age': 30}, {'name': 'c', 'age': 25}]
alist.sort(key=lambda x:x['age'],reverse=True)
print(alist) 

20.将字符串:“k:1|k1:2|k2:3|k3:4”,处理成 python 字典:

s = "k:1|k1:2|k2:3|k3:4"
str_list = s.split('|')
print(str_list)
d = {}
for i in str_list:
    key ,value = i.split(':')
    d[key] = value
print(d) 

21.斐波那契数列

def fib(n):
    if n<=2:
        return 1
    else:
        return fib(n-1) + fib(n-2)
print(fib(10))
【Python程序设计】实验2:Python序列 文章目录实验目的:实验内容: 实验目的: 熟悉列表、元组、字典和集合的创建和删除方法; 熟悉这些序列增、删、改、查的常用方法;掌握序列的切片和索引方法。 实验内容: 删除列表[[1,2,3],‘a’,[2,5],88,99]中的5 list = [[1,2,3],'a',[2,5],88,99] del list[2][1] print(list) 将列表[[1,2,3],‘a’,[2,5],88,99]中的5改成‘a’。 list = [[1,2,3],'a',[2,5],88,99] list 阅读详情

相关推荐

Python基础 4- 操作列表

本章将学习如何遍历列表,从而实现高效处理列表的方法。

m0_56261398的博客 843

精选了20个Python实战项目(附源码),拿走就用!零基础练手不二项目!

Python是目前最好的编程语言之一。由于其可读性和对初学者的友好性,已被广泛使用。

轻松学python的博客 1万+

储能电站 BMS 与车载动力电池 BMS 核心差异:工况、保护策略、控制逻辑对比

储能电站BMS与车载动力电池BMS虽同名,实为针对不同赛道量身定制的产品。简单地将车载BMS方案套用于储能,或将储能BMS思路用于车载,都可能带来性能、安全或成本上的严重问题。在选择和设计BMS时,必须回归其应用场景的本质需求储能BMS是**“资产管理者”**,精打细算,追求在长达十余年的服役期内稳定、高效地创造收益。车载BMS是**“性能与安全卫士”**,反应敏捷,确保在车辆全生命周期内动力澎湃且万无一失。

小帽子的博客 423

【Python】超实用的10个适合新手小白练习Python项目,每个项目都不到500行代码,还不快来!!!

手机中有加速记,很容易获得你某一时刻在 x,y,z 三个方向的加速度,用这些参数,如何计算你走了多少步?大牛用不到500行代码告诉你,是如何实现的。如何用 Python 实现一个数据库,支持 query,index, transaction, 两三百行代码和对每个函数的讲解。Python 是面向对象语言,对象,继承,多态,怎么用代码实现的,不到500行代码,实际不到400行!Web 中的 view 层不只是 html 代码,还有支持其他的代码。不多说,几百行代码实现高效的网络爬虫, 高效!

2301_78096149的博客 1609

山东大学机器学习(实验一内容)——线性回归

1. 描述 第一个练习将为你提供线性回归练习。这些练习已经用Matlab进行了广泛的测试,但它们也应该在Octave中工作,它被称为“免费版的Matlab”。如果你使用的是Octave,那就是 一定要安装Image包(可在Windows中作为选项使用)安装程序,可从Octave-Forge获得Linux。 2.线性回归 回想一下,线性回归模型是 hθ(x)=θTx=∑j=0nθjxj h_{\th...

HachiLin的博客 4108

AutoGenTestCase - AI大模型生成测试用例

AI技术助力高效软件测试:AutoGenTestCase工具介绍 传统手工测试存在效率低、覆盖不全等痛点。AutoGenTestCase工具集成DeepSeek、通义千问等AI大模型,能快速解析需求并自动生成标准化测试用例,将数小时工作缩短至分钟级。该工具部署简单,仅需配置APIKey即可运行,支持多种测试用例类型比例设置,并输出Markdown和Excel格式的测试用例。通过GitHub或网盘下载后,用户可按照教程完成APIKey配置、需求文档上传和用例生成等操作,显著提升测试效率与覆盖完整性。

YIqifeibaQI的博客 348

【Python学习】拿来练手的21个程序小练习题

答:lambda 表达式也就是匿名函数,一些简单的功能需要实现的时候可以用匿名函数,一行语句体搞定。它语法简单,简化代码,不会产生命名冲突,污染命名空间。Python提供了map,filter,reduce等函数方法,提供了装饰器,闭包等语法。

aliYz的博客 1135

【同花顺公式编辑教程】第4章 功能函数

本章节主要给出大部分能够运行且常用的同花顺指标编辑器提供的函数。其中,计算类函数不作演示,绘图类函数提供示例及示例运行结果。

LiaoYi2016218的博客 2万+

python语言程序设计2019版第二章课后答案-python语言程序设计基础(嵩天)第二章课后习题...

**第二学期第一周学习总结 一. 本周学习内容总结 一维数组,了解了一维数组的定义(定义一个数组,需要明确数组变量名,数组元素的类型和数组大小,即数组中元素的数量) 一维数组定义的一般形式为:类型名,数组名[数组长度] 类型名指定数组中每个元素的类型:数组名是数组变量的名称,是一个合法的标识符: 数组长度是一个整型常量表达式,设定数组的大小.数组是一些具有相同类型的数据的集合,数组中的数据按照一定...

weixin_37988176的博客 1052

CentOS 7 离线升级 OpenSSH 9.9p2 保姆级教程(含依赖包下载与常见报错解决)

本文提供了一份详尽的CentOS 7系统离线升级OpenSSH至9.9p2版本的完整教程。针对无外网环境,重点讲解了依赖包(尤其是OpenSSL 3.x)的离线下载与编译部署,并深入解决了编译过程中常见的“libcrypto.so缺失”等动态库链接错误。教程涵盖从环境准备、源码编译、服务配置到系统集成的全流程,最后还提供了关键的回滚方案与应急预案,是运维人员在内网环境中进行安全加固的实用指南。

weixin_29248313的博客 324

扫码器USB键盘报告描述符数据格式解析

Byte0用于判断Shift是否按下,当按下时Byte0的Bit1会置1,即0x02,若未按下,Bit为0,即0x00。0x00 0x00 0x00 0x00 0x00 0x00 0x00--->>未按下Shift。0x00 0x00 0x00 0x00 0x00 0x00 0x00--->>按下Shift。0x00 0x04 0x00 0x00 0x00 0x00 0x00--->>输出A。0x00 0x04 0x00 0x00 0x00 0x00 0x00--->>输出a。

m0_65548585的博客 1142
上一篇: python中index()、find()方法
下一篇: python常用模块大全
Python热爱者
博客等级 码龄7年 3053粉丝 1330原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值