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

  • ☆ SUB4SUB CENTER! ☆ spam here

    ☆ SUB4SUB

    22 ŞUBAT 2010
  • engineerguy

    engineerguy

    10 Ocak 2010
  • Joshua Bane

    Joshua Bane

    24 Temmuz 2007