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

  • Chriselle Lim

    Chriselle Li

    26 Ocak 2008
  • kev5124

    kev5124

    9 Kasım 2008
  • thenewboston

    thenewboston

    4 ŞUBAT 2008