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


推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
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社区 版权所有