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

  • GavinMichaelBooth

    GavinMichael

    26 AĞUSTOS 2006
  • Kanál používateľa McsFuego

    Kanál použ

    12 EKİM 2011
  • Titan Lee Hai

    Titan Lee Ha

    14 Temmuz 2008