لطفا وارد شوید یا ثبت‌نام کنید تا به انجمن‌ها دسترسی کامل داشته باشید.



 
امتياز موضوع :
  • 0 رأي - معدل امتيازات : 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل این برنامه چیه؟
2007-02-24, 11:03 PM,
ارسال : #1
مشکل این برنامه چیه؟
سلام

کد :
#!/usr/bin/python

class Card :

  suitList = ["Clubs","Diamonds","Hearts","Spades"]
  rankList =["narf","Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]
  
  def __init__ (self,rankList=0,suitList=0):
    self.rankList = rankList
    self.suitList = suitList

  def __str__ (self):
    return self.rankList[self.rank] + " of " +(self.suitList[self.suit]


card = Card(1,11)
print card1
این ارور رو میده:
کد :
File "./11111.py", line 16
    card = Card(1,11)
       ^
SyntaxError: invalid syntax
نقل قول این ارسال در یک پاسخ
2007-02-25, 11:51 AM,
ارسال : #2
 
شاید اشکالش این باشد که چون پایتون مفسری است توی تابع __init__ نوع(type)rankList و suitList عوض شده است به نوع مثلا int. پس دیگر شما مجاز نیستید فرض کنید که هنوز یک لیست دارید، فکر کنم با عوض کردن اسم متغییر هایتان مشکل حل شود.
نقل قول این ارسال در یک پاسخ
2007-02-25, 03:53 PM,
ارسال : #3
 
راستش اشکالاتش کمی زیاده. البته نه خیلی.
من برات دوباره نوشته امش. یک نگاه بنداز و اگر مشگلی داشتی بگو:

[ltr]
کد :
#!/usr/bin/python

class Card :

  suitList = ["Clubs","Diamonds","Hearts","Spades"]
  rankList =["narf","Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]

  def __init__ (self,newRank=0, newSuit=0):
    self.rank = newRank
    self.suit = newSuit

  def __str__ (self):
    return self.rankList[self.rank]+' of '+self.suitList[self.suit]


card = Card(10,1)
print card
[/ltr]

آزادی عقیده و کیبرد حق هر انسان است.
<!-- w --><a class="postlink" href="http://www.FreeKeyboard.net">www.FreeKeyboard.net</a><!-- w -->
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-02-26, 05:22 PM,
ارسال : #4
 
داخل تابع __str__ و در تناها دستورت 2 تا مشكل هست . self.rank قبلا تعريف نشده . و آخرش يه پارانتز رو نبستي .

كمي دقت كن تو كد هات . باز مشكلي بود بگو

سایت تخصصی زبان برنامه نویسی پایتون - <!-- m --><a class="postlink" href="http://www.pythoni.ca">http://www.pythoni.ca</a><!-- m -->
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-03-02, 08:24 PM,
ارسال : #5
 
سلام
جناب بیاضی (درست نوشتم؟)میشه یه نگاه هم به این کد بندازید خروجی درست نیست :
[ltr]
کد :
#!/usr/bin/python

class Card:

   suitList = ["narf","Clubs","Diamonds","Hearts","Spades"]
   rankList = ["narf","Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]

   def __init__ (self,newSuit=0,newRank=0):
     self.rank = newRank
     self.suit = newSuit

class Deck :
  def __init__(self):
    self.cards = []
    for suit in range(4):
      for rank in range(1,14):
        self.cards.append(Card(suit,rank))
    
  def __str__(self):
    s = ""
    for i in range(len(self.cards)):
      s = s + " "*i + str(self.cards[i]) + "\n"
    return s



deck = Deck()
print deck
[/ltr]
راستی فروم سایت pylearn هنوز بالا نیومده؟کی میاد؟
نقل قول این ارسال در یک پاسخ
2007-03-03, 01:44 PM,
ارسال : #6
 
سلام
این خط رو به کلاس Card اضافه کن :


کد :
def __str__(self):
      return self.suitList[self.suit] + ' ' + self.rankList[self.rank]

دقیقا نگرفتم می خوای چیرو چاپ کنی . در مورد برنامت هم یه توزیح مختصر بده که می خوای چی کار بکنه ...
راستی فروم سایت <!-- w --><a class="postlink" href="http://www.pylearn.com">www.pylearn.com</a><!-- w --> هم راه افتاد .

سایت تخصصی زبان برنامه نویسی پایتون - <!-- m --><a class="postlink" href="http://www.pythoni.ca">http://www.pythoni.ca</a><!-- m -->
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-03-03, 03:45 PM,
ارسال : #7
 
سلام
ممنون از جوابتون
به این صورت باشه وکارت هارو به صورت ابشاری چاپ کنه:
[ltr]
کد :
>>> deck = Deck()
>>> print deck
Ace of Clubs
2 of Clubs
  3 of Clubs
   4 of Clubs
     5 of Clubs
       6 of Clubs
        7 of Clubs
         8 of Clubs
          9 of Clubs
           10 of Clubs
            Jack of Clubs
             Queen of Clubs
              King of Clubs
               Ace of Diamonds
[/ltr]
یکی از مثالهای کتاب How to think computer scientist در فصل ۱۵ است
نقل قول این ارسال در یک پاسخ
2007-03-03, 04:29 PM,
ارسال : #8
 
[ltr]

#!/usr/bin/python

class Card:

suitList = ["narf","Clubs","Diamonds","Hearts","Spades"]
rankList = ["narf","Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]

def __init__ (self,newSuit=0,newRank=0):
self.rank = newRank
self.suit = newSuit
def __str__(self):
return self.rankList[self.rank] + ' of ' + self.suitList[self.suit]

class Deck :
def __init__(self):
self.cards = []
for suit in range(4):
for rank in range(1,14):
self.cards.append(Card(suit,rank))

def __str__(self):
s = ""
for i in range(len(self.cards)):
s = s + " "*i + str(self.cards[i]) + "\n"
return s



deck = Deck()
print deck

[/ltr]
نقل قول این ارسال در یک پاسخ
2007-03-03, 04:32 PM,
ارسال : #9
 
سلام
بالايي من بودم ! انگاري تگ ها قاطي شد !
[ltr]

کد :
#!/usr/bin/python

class Card:

   suitList = ["narf","Clubs","Diamonds","Hearts","Spades"]
   rankList = ["narf","Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]

   def __init__ (self,newSuit=0,newRank=0):
      self.rank = newRank
      self.suit = newSuit
   def __str__(self):
      return  self.rankList[self.rank] + ' of ' + self.suitList[self.suit]

class Deck :
  def __init__(self):
    self.cards = []
    for suit in range(4):
      for rank in range(1,14):
        self.cards.append(Card(suit,rank))
  
  def __str__(self):
    s = ""
    for i in range(len(self.cards)):
      s = s + " "*i + str(self.cards[i]) + "\n"
    return s



deck = Deck()
print deck

[/ltr]

ببين منظورت همينه ؟

سایت تخصصی زبان برنامه نویسی پایتون - <!-- m --><a class="postlink" href="http://www.pythoni.ca">http://www.pythoni.ca</a><!-- m -->
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-03-03, 07:38 PM,
ارسال : #10
 
ممنون بابت جوابتون
نقل قول این ارسال در یک پاسخ
2007-03-19, 04:49 PM,
ارسال : #11
 
سلام بر همگی
تو این کد که برای بازی OldMaid هست از فصل ۱۶ کتاب how to think CS من میخوام با متد removeMatches کارتهایی که خال یک رنگ دارند و عدد مشابه دارند رو حذف کنم اما این متد درست کار نمیکونه و حتی اگر کارتهایی برای حذف تو دسته باشه هم چیزی رو حذف نمیکه.
[ltr]
کد :
#!/usr/bin/python

class Card:

   suitList = ["Clubs","Diamonds","Hearts","Spades"]
   rankList = ["narf","Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]

   def __init__ (self,newSuit=0,newRank=0):
     self.rank = newRank
     self.suit = newSuit

   def __str__(self):
     return  self.rankList[self.rank] + ' of ' + self.suitList[self.suit]

class Deck :
  
  def popCard(self):
    return self.cards.pop()
  
  def isEmpty(self):
    return (len(self.cards) == 0)
  
  def __init__(self):
    self.cards = []
    for suit in range(4):
      for rank in range(1,14):
        self.cards.append(Card(suit,rank))
  def __str__(self):
    s = ""
    for i in range(len(self.cards)):
      s = s + " "*i + str(self.cards[i]) + "\n"
    return s

  def shuffle(self):
    import random
    nCards = len(self.cards)
    for i in range(nCards):
      j = random.randrange(i,nCards)
      self.cards[i] , self.cards[j] = self.cards[j] , self.cards[i]
    return self

  def removeCard(self,card):
    if card in self.cards:
      self.cards.remove(card)
      return 1
    else:
      return 0

  def deal (self,hands,nCards=999):
    nHands = len(hands)
    for i in range(nCards):
      if self.isEmpty():  
        break
      card = self.popCard()
      hand = hands[i % nHands]
      hand.addCard(card)


class Hand(Deck):
  def __init__(self,name=""):
    self.cards = []
    self.name = name
  def __str__(self):
    s = "Hand " + self.name
    if self.isEmpty():
      s = s + " is empty\n"
    else:
      s = s + " contains\n"
    return s + Deck.__str__(self)

  def addCard(self,card):
    self.cards.append(card)

class CardGame:
  def __init__(self):
    self.deck = Deck()
    self.deck.shuffle()

class OldMaidHand(Hand):
  def removeMatches(self):
    count = 0
    originalCards = self.cards[:]
    for card in originalCards:
      match = Card(3 - card.suit,card.rank)
      if match in self.cards:
        self.cards.remove(card)
        self.cards.remove(match)
        count = count + 1
    print "Hand %s: %s matches %s" %(self.name,card,match)
      return count


game = CardGame()
hand = OldMaidHand("frank")
game.deck.deal([hand], 13)
print hand
[/ltr]
[ltr]
کد :
python -i 16-6D.py
[/ltr]
[ltr]
کد :
>>> hand.removeMatches()
0
[/ltr]
نقل قول این ارسال در یک پاسخ


رفتن به انجمن :


کاربران در حال مشاهده موضوع : 1 مهمان