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


推荐阅读
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 本文介绍了如何在Python中使用join()方法将列表中的元素连接成一个字符串。join()方法允许用户指定分隔符,从而灵活地生成所需格式的字符串。此外,我们还将探讨一些实际应用中的注意事项和技巧。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
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社区 版权所有