[PYTHON] Studiere in Zundoko

Ich war durcheinander

zun.py


import random
def r(a, b):
    r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
try:
    r(4, 0)
except:
    print('Ki yo shi!')

Dies gibt Ihnen das gewünschte Ergebnis, aber was ist, wenn Sie außer endgültig einstellen?

zun_2.py


import random
def r(a, b):
    r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
try:
    r(4, 0)
finally:
    print('Ki yo shi!')

Nachricht wenn endlich


Dung
Doco
Dung
Dung
Dung
Dung
Doco
Ki yo shi!
Traceback (most recent call last):
  File "zun_2.py", line 5, in <module>
    r(4, 0)
  File "zun_2.py", line 3, in r
    r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 3, in r
    r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 3, in r
    r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 3, in r
    r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 3, in r
    r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 3, in r
    r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 3, in r
    r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
ZeroDivisionError: division by zero

Das ist ein bisschen albern. .. .. Es ändert sich nicht, auch wenn ich es mit Lambda mache.

zun_2.py


import random
r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
try:
    r(4, 0)
finally:
    print('Ki yo shi!')

Ein Teil des Ergebnisses


Traceback (most recent call last):
  File "zun_2.py", line 4, in <module>
    r(4, 0)
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
  File "zun_2.py", line 2, in <lambda>
    r = lambda a,b: r(a-1, print('Dung')) if random.random() < 0.5 else r(4, print('Doco') or 1/max(a,0))
ZeroDivisionError: division by zero

Hmmm. .. .. Wenn ich darüber nachdenke http://fj.hatenablog.jp/entry/2014/06/15/032135 Ich habe eine Geschichte wie diese gesehen, aber es scheint, dass die Leistung nicht gut ist.

Verschiedene saubere Versionen:

zun_3.py


import random
r=lambda a: print('Dung') or r(a-1) if random.random() < 0.5 else print('Doco') or a <= 0 or r(4)
r(4) or print('Ki yo shi!')

Dies ist eine hervorragende Sache, die, wenn <= in == geändert wird, durchlaufen wird, außer wenn es nur vier Dünen gibt. Es sollte eine Debatte darüber geben, ob es in Ordnung ist, fünf oder mehr Dünen zuzulassen.

Recommended Posts

Studiere in Zundoko
Bei Coder (2020/09/08)
Fragen, die auf der Studiensitzung im August 2017 geprüft wurden
Fragen, die während der Studiensitzung im Februar geprüft wurden
Fragen, die während der Studiensitzung im Mai geprüft wurden