热门标签 | 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(枚举) 对象。


推荐阅读
  • 本文介绍了使用Python编写购物程序的实现步骤和代码示例。程序启动后,用户需要输入工资,并打印商品列表。用户可以根据商品编号选择购买商品,程序会检测余额是否充足,如果充足则直接扣款,否则提醒用户。用户可以随时退出程序,在退出时打印已购买商品的数量和余额。附带了完整的代码示例。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • Python基础知识:注释、输出和input交互
    本文介绍了Python基础知识,包括注释的使用、输出函数print的用法以及input函数的交互功能。其中涉及到字符串和整数的类型转换等内容。 ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
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社区 版权所有