python 飲料機,if elif與列表法

2021-10-07 10:05:30 字數 4361 閱讀 9859

"超火"

o2 =

"火"o3 =

"溫"o4 =

"涼"o5 =

"冰"while1:

i=os.system(

"cls"

)input

("請投幣或刷卡"

)while1:

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

inrange(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

按鈕=["",

"超火"

,"火"

,"溫"

,"涼"

,"冰"

]while1:

i=os.system(

"cls"

)input

("請投幣或刷卡"

)while1:

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

inrange(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:103ns a=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.4ns a=5:141ns

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

而當手動給a賦值為0時,他們的判斷步驟是一樣的,此時差的這65ns就是給列表賦值的時間,但實際操作時,給列表賦值在一開始就能做。

如果把數值增加到60,有效位數50的話。

if:2.23ns 列表法:2.2ns

除去列表,僅僅看

if elif … vs a in range(50)

在50量級時,後者快

101.61 1.77

201.74 1.82 話說這個數就是這樣,再多再少都比他少

301.85 1.78

飲料機售賣系統(記錄一下)

include include 清屏函式 include 等待5秒,sleep 以毫秒為單位 void main name 名稱 coke 可樂 fanta 芬達 milk 牛奶 mineral water 礦泉水 coffee 咖啡 int price 5 price int quantity 5...

Python 關於if elif 的實用例子

設計乙個計算器 print 歡迎使用大大牛計算器 print 請輸入第乙個數字 num1 eval input 請輸入第乙個數字 print 請輸入運算子 operator input 請輸入運算子 num2 eval input 請輸入第二個數字 if operator result num1 n...

藍橋杯每日一題(13) 啤酒和飲料(python)

topic 啤酒每罐2.3元,飲料每罐1.9元。小明買了若干啤酒和飲料,一共花了82.3元。我們還知道他買的啤酒比飲料的數量少,請你計算他買了幾罐啤酒。注意 答案是乙個整數。solution 1 直接進行兩次遍歷 滿足 相加等於所求 且啤酒比飲料的數量少 即輸出啤酒的數量為結果 code 1 for...