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)范围内。
users &#61; [&#39;root&#39;,&#39;admin&#39;]
passwd &#61; [&#39;123&#39;,&#39;456&#39;]
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;添加会员信息 删除会员信息 查看会员信息 退出
添加用户:
删除用户
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;[‘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(枚举) 对象。