import time

import os

o1 = "超火"

o2 = "火"

o3 = "温"

o4 = "凉"

o5 = "冰"

while 1:

i=os.system("cls")

input("请投币或刷卡")

while 1:

try:

b=int(input("请选择饮料:\n1.超火\n2.火\n3.温\n4.凉\n5.冰\n0.退出\n\n请输入数字:"))

except:

print("请正确输入")

continue

else:

if b==0:

print("钱已返回,欢迎再来")

for i in range(5,0,-1):

print(i,end="\r")

time.sleep(1)

break

elif b not in range(1,6):

print("请正确输入")

continue

else:

exec("print(\"您的%%s,欢迎再来\"%%o%i)"%b)

for i in range(5,0,-1):

print(i,end="\r")

time.sleep(1)

break

很抱歉我真么什么起名的天赋,所以就这样。

我本来还想做一个无操作几秒钟就回到初始,但需要多进程,于是就放弃了。额,可以改一下,在反馈后,再有个input()模拟取钱和取走饮料。然后倒计时!

这次才用了exec替代了if,效率嘛~

In [4]: %%timeit

...: i=random.randint(1,6)

...: if i==1:""

...: elif i==2:""

...: elif i==3:""

...: elif i==4:""

...: elif i==5:""

...: else:""

...:

...:

861 ns ± 14.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [5]: %%timeit

...: import random

...: i=random.randint(1,6)

...: if i==0:""

...: else:exec("%i"%i)

...:

...:

7.59 µs ± 40.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

这里用随机模拟,但这个差距不是一个数量级的,exec是if的10倍耗时。

if增加到60

1.64 µs ± 13 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

exec增加到60

8.75 µs ± 157 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

那现在固定if就是最后一个数。

1.49 µs ± 34.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

反而比上面的随机1~60还少。

于是看似结构最简单又最重复的,就是最效率的。

import time

import os

按钮=["","超火","火","温","凉","冰"]

while 1:

i=os.system("cls")

input("请投币或刷卡")

while 1:

try:

b=int(input("请选择饮料:\n1.超火\n2.火\n3.温\n4.凉\n5.冰\n0.退出\n\n请输入数字:"))

except:

print("请正确输入")

continue

else:

if b==0:

print("钱已返回,欢迎再来")

for i in range(5,0,-1):

print(i,end="\r")

time.sleep(1)

break

elif b not in range(1,6):

print("请正确输入")

continue

else:

print("您的%s,欢迎再来"%按钮[b])

for i in range(5,0,-1):

print(i,end="\r")

time.sleep(1)

break

这章完了后,下一章就是我目前看的,第一节就是列表,看完后,可以用在这里。

In [4]: %%timeit

...: from random import randint

...: a=randint(0,9)

...: p=["","","","","",""]

...: if a==0:""

...: elif a in range(1,6):p[a]

...: else:""

...:

...:

1.88 µs ± 60.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

a=0:103nsa=5:402ns

这次模拟0~9的数字键盘,当按键是单键输入时,有十个可能,但只取0 ~ 6:

In [5]: %%timeit

...: from random import randint

...: a=randint(0,9)

...: if a==0:""

...: elif a==1:""

...: elif a==2:""

...: elif a==3:""

...: elif a==4:""

...: elif a==5:""

...: else:""

...:

...:

1.54 µs ± 21.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

a=0:36.4nsa=5:141ns

列表法比if法差的不多了。

而当手动给a赋值为0时,他们的判断步骤是一样的,此时差的这65ns就是给列表赋值的时间,但实际操作时,给列表赋值在一开始就能做。

如果把数值增加到60,有效位数50的话。

if:2.23ns 列表法:2.2ns

除去列表,仅仅看

if elif … vs a in range(50)

在50量级时,后者快

10

1.61 1.77

20

1.741.82 话说这个数就是这样,再多再少都比他少

30

1.85 1.78

原文链接:https://blog.csdn.net/jhsxy2005/article/details/106902655

python饮料购买_python - 饮料机,if elif与列表法相关推荐

  1. python饮料购买_Python实现的一个自动售饮料程序代码分享

    写这个程序的时候,我已学习Python将近有一百个小时,在CSDN上看到有人求助使用Python如何写一个自动售饮料的程序,我一想,试试写一个实用的售货程序.当然,只是实现基本功能,欢迎高手指点,新手 ...

  2. python饮料购买_Python写的一个自动售饮料小程序!

    写这个程序的时候,我已学习Python将近有一百个小时,在CSDN上看到有人求助使用Python如何写一个自动售饮料的程序,我一想,试试写一个实用的售货程序.当然,只是实现基本功能,欢迎高手指点,新手 ...

  3. python饮料购买_Python自动售货机零食和饮料

    嗨,伙计们,我已经尝试创建一个工作的python自动售货机一个多月了,它看起来没有任何进展.如果有人能帮我,那就太好了:)以下是我目前为止的计划:print ("Welcome to the ...

  4. python - 饮料机,if elif与列表法

    import time import os o1 = "超火" o2 = "火" o3 = "温" o4 = "凉" o ...

  5. python饮料购买_python3 自动饮料机练习代码

    # coding = utf-8 i = 1 while i < 10: j = 1 while j <= i: print('{0}X{1}={2} '.format(j,i,i*j), ...

  6. python京东购买_python大规模爬取京东

    python大规模爬取京东 主要工具 scrapy BeautifulSoup requests 分析步骤 打开京东首页,输入裤子将会看到页面跳转到了这里,这就是我们要分析的起点 我们可以看到这个页面 ...

  7. python 鱼骨图_python面向对象编程,鱼骨图分析法

    一.面向对象编程 ​ 面向过程编程,核心是编程二字,过程指的是解决问题的步骤,即先干什么.后干什么.再干什么.然后干什么-- 与工厂的工艺流程差不多,前后都有影响 优点:复杂的问题流程化,进而简单化, ...

  8. python 只取数值_Python:你会生成列表吗?-- 列表生成式

    当有人问你:"你会用 Python 生成列表吗?" 我想你一定会说:"当然会啊,这有什么难的." 那人再问:"那你会列表生成式吗?" 你:& ...

  9. python 定义数字_Python:已定义数字列表的差异

    我正在尝试创建一个打印已定义数字列表的方差的函数: grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5] 到目前为止,我 ...

最新文章

  1. VMware workstation 7.1 安装错误提示1021解决方法
  2. CSP认证201609-2 火车购票[C++题解]:模拟、vector、排序
  3. python 拼音姓名排序_Python一秒将全部中文姓名转为拼音!
  4. java sql string_JAVA String转化成java.sql.date和java.sql.time方法示例
  5. 微信公众号Java开发-笔记02【开发接入准备、开发接入】
  6. SAP UI5 oFileUpload.getUploadEnabled()
  7. Haproxy 实现Apache的负载均衡
  8. tar 解压_关于Ubuntu下解压tar.xz方法记录
  9. php数据库缓存实现原理,PHP那些事:数据库缓存原理
  10. 如何对建模型数据进行预处理
  11. 计算机用固态硬盘无法启动不了,新固态硬盘装完系统无法进入解决教程
  12. 动态设置html字号,html动态字体
  13. 解释程序和编译程序的区别
  14. windows控制台命令合集
  15. 计算机培训word,最新计算机培训word.pptx
  16. 智能LED电子钟的制作
  17. NOAA(美国海洋和大气管理局)气象数据获取与POI点数据获取
  18. python+selenium爬虫,使用selenium爬取热门微博数据
  19. 空字符串和null有什么区别
  20. 8051单片机基础3:C51内存模型(small, compact和large)

热门文章

  1. 从零开始使用深度学习训练一个新闻分类器(干货)
  2. configure: error: C compiler cannot create executables错误解析
  3. python的drop duplicates_python – Pandas drop_duplicates方法不起作用
  4. 诺基亚手机怎样初始化恢复出厂设置的方法
  5. mybatis 的 if、test 表达式中单引号与双引号的区别
  6. Warning: validateDOMNesting(...): <p> cannot appear as a child of <tfoot>.
  7. 信息系统项目咨询和实施方法
  8. java swing课程表设计_阶段2:手把手快速做一个Java swing mysql学生选课系统附带完整源码及视频开发教程【猿来入此自营】...
  9. js打印去除页眉页脚url地址
  10. 鲍比肯迪尼是谁绿皮书_我的奶奶和小鲍比表