热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python教学016

Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春

Python 教学 练习二

Python 1-12 练习二


一、判断季节

用户输入月份,判断这个月是哪个季节?
3,4,5月----春季 6,7,8----夏季 9,10,11—秋季 12,1,2----冬季

# 接收用户输入的月份
month = input('month:')
# 定义列表
spring = ['3','4','5']
summer = ['6','7','8']
autom = ['9','10','11']
winter = ['12','1','2']# 判断输入的月份属于哪个季节 列表的特性:成员操作符
if month in spring:print('%s 月是春天' %(month))
elif month in summer:print('{} 月是夏天'.format(month))
elif month in autom:print('{month} 月是秋天'.format(month=month))
elif month in winter:print('f{month} 月是冬天')
else:print('请输入正确的月份')

二、按要求重组列表元素

假定有下面的列表

names = ['fentiao', 'fendai', 'fensi', 'apple']

输出结果为:‘I have fentiao, fendai, fensi and apple.’

# 定义列表
names = ['fentiao','fendai','fensi','apple']# + 和 join 都表示连接,(join可以指定分隔符连接);
# 列表的 索引 和 切片 都相当于 分离print('I have ' + ','.join(names[:3]) + ' and ' + (names[3])+'.')
# print(f"I have {','.join(names[:3])} and {names[3]}.")

三、编写小学生算术能力测试系统

设计一个程序,用来实现帮助小学生进行百以内的算术练习,它具有以下功能:

提供10道加、减、乘或除四种基本算术运算的题目;
练习者输入自己的答案,程序自动判断输入的答案是否正确并显示出相应的信息。

import random# 定义用来记录总的答题数目和回答正确的数目
count = 1
right = 0
# 因为题目要求:提供10道题目
# for count in range(10):
while count <&#61; 10: op &#61; [&#39;&#43;&#39;, &#39;-&#39;, &#39;*&#39;, &#39;/&#39;] # 创建列表&#xff0c;加、减、乘和除运算符 s &#61; random.choice(op) # 随机生成 op 列表中的运算符 a &#61; random. randrange(100) # 随机生成0-99以内的数字 b &#61; random. randint(1,99) # 除数不能为0print(&#39;第 %d 题 %d %s %d &#61; &#39; %(count, a, s, b)) question &#61; input(&#39;请输入您的答案:( q 退出)&#39;) # 默认输入的为字符串类型# 判断随机生成的运算符&#xff0c;并计算正确结果if s &#61;&#61; &#39;&#43;&#39;:result &#61; a &#43; belif s &#61;&#61; &#39;-&#39;:result &#61; a - belif s &#61;&#61; &#39;*&#39;:result &#61; a * belse:result &#61; a / b# eval() 内置函数 剥去字符串最外面的一层的引号&#xff0c;剩下什么就是什么。# result &#61; eval(&#39;a&#39;&#43;s&#43;&#39;b&#39;) # 判断用户输入的结果是否正确&#xff0c;str 表示强制转换为字符串类型if question &#61;&#61; str(result):print(&#39;回答正确&#39;)right &#43;&#61; 1 elif question &#61;&#61; &#39;q&#39;:count -&#61; 1breakelse:print(&#39;回答错误&#39;)count &#43;&#61; 1 # 计算正确率
if count &#61;&#61; 0:percent &#61; 0
else:percent &#61; right / countx &#61; &#39;测试结束&#xff0c;共回答 {} 道题&#xff0c;回答正确个数为 {} &#xff0c;正确率为 {:.2f}%&#39;
print(x.format(count,right,percent*100))

复习随机函数

seed([x]) 改变随机数生成器的种子seed。
choice(seq) 从序列 seq 的元素中随机挑选一个元素
sample(list, k) 返回一个长度为 k 新列表&#xff0c;新列表存放 list 所产生 k 个随机唯一的元素
randrange ([start,] stop [,step]) 从指定范围内&#xff0c;按指定基数递增的集合中获取一个随机数&#xff0c;基数默认值为 1
random() 随机生成下一个实数&#xff0c;它在[0,1)范围内。
shuffle(lst) 将列表 lst 的所有元素原地随机排序
uniform(x, y) 随机生成下一个实数&#xff0c;它在 [x,y] 范围内。

导入 random 模块&#xff0c;然后通过 random 静态对象调用方法。

import random

1、random.seed ( [x] )
我们调用 random.random() 生成随机数时&#xff0c;每一次生成的数都是随机的。但是&#xff0c;当我们预先使用 random.seed(x) 设定好种子之后&#xff0c;其中的 x 可以是任意数字&#xff0c;如10&#xff0c;这个时候&#xff0c;先调用它的情况下&#xff0c;使用 random() 生成的随机数将会是同一个。

x – 改变随机数生成器的种子seed。

2、random.choice( seq )

seq -- 可以是一个列表&#xff0c;元组或字符串。
choice() 方法返回一个列表&#xff0c;元组或字符串的随机项。

3、random.randrange ([start,] stop [,step])

start -- 指定范围内的开始值&#xff0c;包含在范围内。
stop -- 指定范围内的结束值&#xff0c;不包含在范围内。
step -- 指定递增基数。
randrange() 方法返回指定递增基数集合中的一个随机数&#xff0c;基数默认值为1。

# 从 1-99 中选取一个奇数
print ("randrange(1,100, 2) : ", random.randrange(1, 100, 2))
# 从 0-99 选取一个随机数
print ("randrange(100) : ", random.randrange(100))

4、random()
random() 方法返回随机生成的一个实数&#xff0c;它在[0,1)范围内。


四、编写用户登陆系统


1、系统里面有多个用户&#xff0c;用户的信息目前保存在列表里面

users &#61; [&#39;root&#39;,&#39;admin&#39;]
passwd &#61; [&#39;123&#39;,&#39;456&#39;]

2.用户登陆(判断用户登陆是否成功&#xff09;

1) 判断用户是否存在
2) 如果存在判断用户密码是否正确&#xff0c;如果正确&#xff0c;登陆成功&#xff0c;退出循环&#xff1b;如果密码不正确&#xff0c;重新登陆&#xff0c;总共有三次机会登陆。
3) 如果用户不存在重新登陆&#xff0c;总共有三次机会

# 定义列表&#xff0c;用来记录用户名和密码
users &#61; [&#39;root&#39;,&#39;admin&#39;]
passwds &#61; [&#39;123&#39;,&#39;456&#39;]
# 定义尝试登陆的次数
trycount &#61; 0# 判断尝试登陆次数是否超过3次
while trycount < 3:# 接收用户输入的用户名和密码inuser &#61; input("用户名:")trycount &#43;&#61; 1# 判断用户是否存在if inuser in users:# 先找出用户对应的索引值index &#61; users.index(inuser)# 找出密码列表中对应的索引值的密码passwd &#61; passwds[index]# 判断输入的密码是否正确inpasswd &#61; input("密码:")if inpasswd &#61;&#61; passwd:print("{} 登陆成功".format(inuser))breakelse:print("{} 登陆失败: 密码错误!".format(inuser))else:print("用户 {} 不存在".format(inuser))
else:print("已经超过三次机会")

五、模拟栈的工作原理

栈的工作原理

入栈
出栈
查看栈顶元素
栈的长度
栈是否为空

注意&#xff1a;空栈不能出栈&#xff0c;且此时无栈顶元素

# 定义一个空列表,用来表示栈
stack &#61; []
# 定义操作选项的变量
info &#61; """栈操作1.入栈2.出栈3.栈顶元素4.栈的长度5.栈是否为空q.退出
"""
# 无限循环
while True:# 输出操作选项信息print(info)choice &#61; input(&#39;请输入选择:&#39;)if choice &#61;&#61; &#39;1&#39;:print(&#39;入栈&#39;.center(50,&#39;*&#39;))# 接收入栈元素item &#61; input(&#39;入栈元素:&#39;)# append:添加元素到列表中stack.append(item)print(&#39;元素 {} 入栈成功&#39;.format(item))elif choice &#61;&#61; &#39;2&#39;:if len(stack) &#61;&#61; 0: # if not stack:print(&#39;栈为空,无法出栈&#39;)else:print(&#39;出栈&#39;.center(50, &#39;*&#39;))# pop:删除列表中的最后一个元素item &#61; stack.pop()print(&#39;{} 元素出栈成功&#39;.format(item))elif choice &#61;&#61; &#39;3&#39;:if not stack:print(&#39;栈为空,无栈顶元素&#39;)else:print(&#39;栈顶元素为 {}&#39;.format(stack[-1]))elif choice &#61;&#61; &#39;4&#39;:print(&#39;栈的长度为 {}&#39;.format(len(stack)))elif choice &#61;&#61; &#39;5&#39;:print(&#39;不空&#39;) if stack else print(&#39;空&#39;)elif choice &#61;&#61; &#39;q&#39;:breakelse:print(&#39;请输入正确的选择&#39;)

六、后台管理员管理前台会员信息系统

1、后台管理员只有一个用户&#xff1a;admin&#xff0c; 密码&#xff1a; 123456
2、当管理员登陆成功后&#xff0c;可以管理前台会员信息
3、会员信息管理包含&#xff1a;添加会员信息 删除会员信息 查看会员信息 退出

  • 添加用户:

    1. 判断用户是否存在?
    2. 如果存在&#xff0c; 报错&#xff1b;
    3. 如果不存在&#xff0c;添加用户名和密码分别到列表中。
  • 删除用户

    1. 判断用户名是否存在
    2. 如果存在&#xff0c;删除&#xff1b;
    3. 如果不存在&#xff0c; 报错。

print(&#39;管理员登陆界面&#39;.center(50,&#39;*&#39;))
# 初始会员信息
users &#61; [&#39;c&#39;,&#39;python&#39;]
passwds &#61; [&#39;123&#39;,&#39;456&#39;]# 接收用户输入的用户名和密码
inuser &#61; input("用户名:")
inpasswd &#61; input("密码:")# 管理员登录
if inuser &#61;&#61; &#39;admin&#39;:if inpasswd &#61;&#61; &#39;123456&#39;:print(f"管理员 {inuser} 登陆成功")while True:print("""**********操作目录**********1.添加会员信息2.删除会员信息3.查看会员信息4.退出""")option &#61; input(&#39;请输入你想执行的操作:&#39;)if option &#61;&#61; &#39;1&#39;:print(&#39;添加会员信息&#39;.center(50,&#39;*&#39;))adduser &#61; input(&#39;用户名:&#39;)addpasswd &#61; input(&#39;密码:&#39;)if adduser in users:print(&#39;添加失败&#xff0c;该会员信息已经存在!&#39;)else:users.append(adduser)passwds.append(addpasswd)print(&#39;添加信息成功!&#39;)elif option &#61;&#61; &#39;2&#39;:print(&#39;删除会员信息&#39;.center(50,&#39;*&#39;))deluser &#61; input(&#39;用户名:&#39;)if deluser in users:# 找出想删除的用户对应的索引值delindex &#61; users.index(deluser)# 删除用户,remove表示删除列表中的元素users.remove(deluser)# 按照索引值删除密码,pop 也表示删除列表中的元素,区别在于,它可以按索引值来删除passwds.pop(delindex)print(&#39;删除信息成功!&#39;)else:print(&#39;删除失败&#xff0c;该会员信息不存在!&#39;)elif option &#61;&#61; &#39;3&#39;:print(&#39;查看会员信息&#39;.center(50,&#39;*&#39;))# 记录users列表的长度&#xff08;即列表中元素的个数&#xff09;count &#61; len(users)for i in range(0,count):print(f&#39;用户名: {users[i]} 密码: {passwds[i]}&#39;)elif option &#61;&#61; &#39;4&#39;:exit()else:print(&#39;请输入正确的操作指令&#39;)else:print(f"{inuser} 登陆失败: 密码错误!")else:print(f"用户 {inuser} 不存在")

七、实现功能&#xff1a;实现一个类似购物车的语句

列表为&#xff1a;[‘Iphone8’,6888],[‘MacPro’,14800],[‘小米6’,2499],[‘Coffee’,31],[‘Book’,80],[‘Nike Shoes’,799]
实现一个类似购物车的语句&#xff0c;用户循环输入编号可以将列表内的商品储存到一个新的列表里面&#xff0c;当用户输入 ‘q’ 时退出循环

实现代码如下&#xff1a;

products &#61; [[&#39;Iphone8&#39;,6888],[&#39;MacPro&#39;,14800],[&#39;小米6&#39;,2499],[&#39;Coffee&#39;,31],[&#39;Book&#39;,80],[&#39;Nike Shoes&#39;,799]]
shopping_cart &#61; []while True:print (&#39;-------------商品列表--------------&#39;)for index,i in enumerate(products):print (&#39;%s.%s %s&#39;%(index,i[0],i[1]))choice &#61; input(&#39;please input your numbers:&#39;)if choice.isdigit():choice &#61; int(choice)shopping_cart.append(products[choice])elif choice &#61;&#61; &#39;q&#39;:print (&#39;-----------------您以购买如下商品------------&#39;)for index,i in enumerate(shopping_cart):print (&#39;%s.%s %s&#39;%(index,i[0],i[1]))break

同时可以添加一个标志位&#xff0c;当用户输入 ‘q’ 的时候标志位改变 while 的判断条件&#xff0c;使循环退出

具体代码如下&#xff1a;

products &#61; [[&#39;Iphone8&#39;,6888],[&#39;MacPro&#39;,14800],[&#39;小米6&#39;,2499],[&#39;Coffee&#39;,31],[&#39;Book&#39;,80],[&#39;Nike Shoes&#39;,799]]shopping_cart &#61; []
run_flag &#61; Truewhile run_flag:print (&#39;-------------商品列表--------------&#39;)for index,i in enumerate(products):print (&#39;{:2}.{:20}{:<20}&#39;.format(index,i[0],i[1]))choice &#61; input(&#39;please input your numbers:&#39;)if choice.isdigit():choice &#61; int(choice)shopping_cart.append(products[choice])elif choice &#61;&#61; &#39;q&#39;:print (&#39;-----------------您以购买如下商品------------&#39;)for index,i in enumerate(shopping_cart): print (&#39;{:2}.{:20}{:<20}&#39;.format(index,i[0],i[1]))run_flag &#61; False

Python enumerate() 内置函数函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列&#xff0c;同时列出数据和数据下标&#xff0c;一般用在 for 循环当中。

enumerate(sequence, [start&#61;0])

sequence – 一个序列、迭代器或其他支持迭代对象。
start – 下标起始位置。
返回 enumerate(枚举) 对象。


推荐阅读
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 本文介绍如何使用 Python 的 xlrd 库读取 Excel 文件,并将其数据处理后存储到数据库中。通过实际案例,详细讲解了文件路径、合并单元格处理等常见问题。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 开发笔记:2020 BJDCTF Re encode
    开发笔记:2020 BJDCTF Re encode ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本教程详细介绍了如何使用 TensorFlow 2.0 构建和训练多层感知机(MLP)网络,涵盖回归和分类任务。通过具体示例和代码实现,帮助初学者快速掌握 TensorFlow 的核心概念和操作。 ... [详细]
  • 本文介绍了如何利用Python进行批量图片尺寸调整,包括放大和等比例缩放。文中提供了详细的代码示例,并解释了每个步骤的具体实现方法。 ... [详细]
  • 社交网络中的级联行为 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 使用Python计算文件的CRC32校验值
    本文记录了一次对路由器固件分析时,如何利用Python计算文件的CRC32校验值。文中提供了完整的代码示例,并详细解释了实现过程。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
author-avatar
袁韦伦世彦琬育
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有