SORU
1 ŞUBAT 2012, ÇARŞAMBA


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
1 ŞUBAT 2012, ÇARŞAMBA


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. .

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AutoklubZAPRESIC

    AutoklubZAPR

    17 Mayıs 2011
  • Feel The Electricity!

    Feel The Ele

    20 ŞUBAT 2010
  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009