Bir şekilde bu eğerler daha güzel yazan mı var?
Python ifBu dört s yazmam gerekiyor. Ne haber, dört olası durumlar arasında değişiyor döngü: ilk 1,0 -> 0,1 -> -1,0 -> 0,-1 ve geri.
if [dx, dy] == [1,0]:
dx, dy = 0, 1
if [dx, dy] == 0, 1:
dx, dy = -1, 0
if [dx, dy] == [-1, 0]
dx, dy = 0, -1
if [dx, dy] == [0, -1]:
dx, dy = 1, 0
Kimse bana bu yazmak için daha iyi/daha iyi bir yol önerebilirsiniz?
CEVAP
Magnus'un önerisi inkar edilemez bir şekilde poz verdi, ama sorunuza doğru cevapgenel olarak konuşursak,bu gibi sorunlar için bir sözlük kullanmak isterseniz:
statemap = {(1, 0): (0, 1), (0, 1): (-1, 0), (-1, 0): (0, -1), (0, -1): (1, 0)}
dx, dy = statemap[dx, dy]
Bu durumda ben bileolabilirbir sözlük kullanarak tam olarak dört devlet vardır ve onlar tekrar açık olduğu için daha iyi olur, ama zor güzelliğinin karşı olduğunu savunuyorlartüm teh matematik.
Bu arada, sorunuza kodda bir hata var, ve, Testi değerleri sadece olası değerleri olduğunu varsayarsak, eşittir:
dx, dy = 1, 0
Hata ikinci ve sonraki durumlar için elif ihtiyaç vardır, aksi halde onları değiştirdikten sonra dx dy test devam ediyoruz. Eğer 1 eğer ** 12tüm koşullar geçerli olacaktırve sonunda aynı son! Eğer dışarı 0 1 olarak başlarlarsa o zaman ikinci ve sonraki tüm koşullar geçerli olacak ve sen yine 1, 0 ile bitirmek. .

Güzel bir şekilde işlevini imza Haskel...
İşlevsel bir şekilde özel durumları iç...
Düzeltme yazı tipi metin tutarsız bir ...
Daha iyi bir ÅŸekilde Javascript iÅŸlevi...
Numaralama.() Ayrıştırmak, kesinlikle ...