Python之双色球选购和三级菜单问题
# 1 双色球(假设一共八个球,6个红球,球号1-32、2个蓝球,球号1-16)
# 2 确保用户不能重复选择,不能超出范围
# 3 用户输入有误时有相应的错误提示
# 4 最后展示用户选择的双色球的号码
while True:
n = int(input('请输入你要选择的红色球(1-32):'))
if 0 < n < 33:
if n not in select_red_ball:
select_red_ball.append(n)
else:
print('number %d is already exist in red ball list' % n)
else:
print('only can select n between 1-32')
if len(select_red_ball) == 6:
break
select_red_ball.sort()
select_blue_ball = []
while True:
n = int(input('请输入你要选择的蓝色球(1-32):'))
if 0 < n < 17:
if n not in select_blue_ball:
select_blue_ball.append(n)
else:
print('number %d is already exist in blue ball list' % n)
else:
print('only can select n between 1-16')
if len(select_blue_ball) == 2:
break
select_blue_ball.sort()
print('red ball %d' % select_red_ball)
print('blue ball %d' % select_blue_ball)
2 :三级菜单
数据结构:
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车站':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
} 需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
代码一:
exit_flag = False
while not exit_flag:
for i in menu:
print(i)
choice1 = input("选择进入1>>:")
if choice1 in menu:
while not exit_flag:
for i2 in menu[choice1]:
print("\t", i2)
choice2 = input("选择进入2>>:")
if choice2 in menu[choice1]:
while not exit_flag:
for i3 in menu[choice1][choice2]:
print("\t\t", i3)
choice3 = input("选择进入3>>:")
if choice3 in menu[choice1][choice2]:
for i4 in menu[choice1][choice2][choice3]:
print("\t\t", i4)
choice4 = input("最后一层,按b返回>>:")
if choice4 == "b":
pass
elif choice4 == "q":
exit_flag = True
if choice3 == "b":
break
elif choice3 == "q":
exit_flag = True
if choice2 == "b":
break
elif choice2 == "q":
exit_flag = True
代码二:(优化版本,代码缩减为15行)
current_layer = menu
parent_layer = [] # 将父级key值放入到列表中
flags = False # 设置标志位
while not flags:
for key in current_layer:
print(key)
choose = input("请选择,输入b返回上一级菜单,输入q退出菜单:").strip() # 去除空格
if choose in current_layer:
parent_layer.append(current_layer) # 将当前的状态放入列表中
current_layer = current_layer[choose]
elif choose == 'b':
if parent_layer:
current_layer = parent_layer.pop()
elif choose == 'q':
flags = True
else:
print('输入有误,请重新输入')
Python之双色球选购和三级菜单问题的更多相关文章
- 老男孩python学习之作业二---三级菜单
因为之前花力气完成了购物小程序的作业 现在做这个三级菜单简直是so easy!! 1.显示省级菜单 2.交互,提示用户输入要查看的省份(退出e) 2.1.用户正确输入列表中的省份 3.显示市级菜单 3 ...
- day17 python递归案例(二分查找,三级菜单)
递归函数与三级菜单 menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {} ...
- (Python基础)最Low三级菜单
#-*-coding:utf-8-*- #_author_: Keep #三级菜单 menu = { '中国':{ '广东省':{ '广州市':{ '海珠区':{}, '荔湾区':{}, '越秀区': ...
- Python初学者第十三天 三级菜单程序小作业
13day 作业题目: 三级菜单 作业需求: 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村' ...
- Python学习第二天-编写三级菜单
编写三级菜单:1. 运行程序输出第一级菜单2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单3. 菜单数据保存在文件中4. 让用户选择是否要退出5. 有返回上一级菜单的功能 # Author: z ...
- python小程序--Three(三级菜单)
#!/usr/bin/env python # _*_ coding:utf8 _*_ data = { "山东省":{ "滨州市":{"惠民县&qu ...
- Python小代码_4_省市区三级菜单
menu = { "北京": { "朝阳区": { "三环到四环之间": {}, "四环到五环之间": {}, &quo ...
- python练习1 登录和三级菜单
,: username1 = input("请输入您的用户名:")# password1 = getpass.getpass("请输入您的密码:") passw ...
- python学习笔记(字符串操作、字典操作、三级菜单实例)
字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...
随机推荐
- [bzoj3513][MUTC2013]idiots_FFT
idiots bzoj-3513 MUTC-2013 题目大意:给定$n$根木棍,问随机选择三根能构成三角形的概率. 注释:$1\le n\le 3\cdot 10^5$,$1\le a_i\le 1 ...
- spring boot项目自定义数据源,mybatisplus分页、逻辑删除无效解决方法
Spring Boot项目中数据源的配置可以通过两种方式实现: 1.application.yml或者application.properties配置 2.注入DataSource及SqlSessio ...
- Errors running builder 'JavaScript Validator' on
eclipse编译提示Errors running builder 'JavaScript Validator' on 解决方法见下图 去掉 'JavaScript Validator' 即可
- IOS程序崩溃报告管理解决方案(Crashlytics 在2014-09-24)
预研Crashlytics 在2014-09-241:实现原理在原理上,Crashlytics通过以下2步完成崩溃日志的上传和分析:(1)提供应用SDK,你需要在应用启动时调用其SDK来设置你的应用 ...
- ViewFlipper实现ViewPager的页面切换效果
activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- 12.解决CCScale9Sprite或者CCControlButton无法使用的问题。
问题: 使用CCScale9Sprite或者CCControlButton等控件的时候,会出现无法识别的情况. 解决方式: 1.include对应的头部,即#include "cocos-e ...
- Python爬虫开发【第1篇】【代理】
1.简单的自定义opener() import urllib2 # 构建一个HTTPHandler 处理器对象,支持处理HTTP请求 http_handler = urllib2.HTTPHandle ...
- Binary safe
https://en.wikipedia.org/wiki/Binary-safe A binary-safe function is one that treats its input as a r ...
- java8新特性-方法引用
方法引用:若 Lambda 体中的功能,已经有方法提供了实现,可以使用方法引用 (可以将方法引用理解为 Lambda 表达式的另外一种表现形式) 1. 对象的引用 :: 实例方法名2. 类名 :: 静 ...
- MPEG2、MPEG4、H264的差异
iso(国际标准化组织) MPEG系列 ITU-T(国际电联)h.系列 H.264:iso与ITU联合制定,数据压缩比超牛! MPEG-2简介 MPEG-2制定于1994年,设计目标是高级工业标准的图 ...