انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


 خبرها، اتفاقات و تصاویر مربوط به مربوط به جشن انتشار را با هشتگ ufest1804 در شبکه‌های اجتماعی دنبال کنید

نویسنده موضوع: حل سوال پایتون جادی [حل شد]  (دفعات بازدید: 319 بار)

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

آفلاین AmirZare

  • Full Member
  • *
  • ارسال: 147
  • جنسیت : پسر
حل سوال پایتون جادی [حل شد]
« : 16 شهریور 1397، 12:40 ق‌ظ »
سلام،
من میخواستم سوال جادی رو با پایتون حل کنم اما مشکلی که دارم اینه که برنامه هیچوقت تموم نمیشه و جواب رو نمیگیرم!
سوال جادی (https://jadi.net/2017/07/understanding-programming-14-15-16/)
این هم کد برنامه:
from random import randint
import os

class Dict:
    Members_Dict = {}
    for i in range(1, 51):
        Members_Dict[i] = "1"

counter = 0

def main():
    global counter

    while True:
        RandomPerson = randint(1, 50)

        if int(Dict.Members_Dict[RandomPerson]) == 0:
            while int(Dict.Members_Dict[RandomPerson]) == 0:
                RandomPerson = randint(1, 50)
            val = str(int(Dict.Members_Dict[RandomPerson]) - 1)
            Dict.Members_Dict.update(RandomPerson = val)
        else:
            val = str(int(Dict.Members_Dict[RandomPerson]) - 1)
            Dict.Members_Dict.update(RandomPerson = val)

        NewRandomPerson = randint(1, 50)

        while RandomPerson == NewRandomPerson:
            NewRandomPerson = randint(1, 50)

        val = str(int(Dict.Members_Dict[NewRandomPerson]) + 1)
        Dict.Members_Dict.update(NewRandomPerson = val)

        counter += 1
        print("Num is: {0}".format(str(counter)))

        if int(Dict.Members_Dict[NewRandomPerson]) == 50:
            print("Action completed! :D for {0} person".format(str(NewRandomPerson)))
            os.system("exit")

if __name__ == "__main__":
    main()
ویرایش:
ببخشید من سوال رو اشتباه خوندم، در اصل سوالی که حل کردم اینه:
۵۰ نفر تو اتاقن و هر نفر یک دلار داره و به صورت رندوم هر دفعه یک نفر خاص به یک نفر دیگه یک دلار میده(دقت کنید که همه به هم دیگه پول نمیدن فقظ یک نفر!) تا اینکه یک نفر ۵۰ دلار رو بتونه بگیره.
« آخرین ویرایش: 23 شهریور 1397، 10:37 ب‌ظ توسط AmirZare »

آفلاین AmirZare

  • Full Member
  • *
  • ارسال: 147
  • جنسیت : پسر
پاسخ : حل سوال پایتون جادی
« پاسخ #1 : 23 شهریور 1397، 10:37 ب‌ظ »
سلام،
مشکل داخل آپدیت کردن دیکشنری بود.
from random import randint         
import os

class Dict:
    Members_Dict = {}
    for i in range(1, 51):
        Members_Dict[i] = 1

counter = 0

def main():
    global counter

    while True:
       
        RandomPerson = randint(1, 50)
             
        if Dict.Members_Dict[RandomPerson] == 0:
            while Dict.Members_Dict[RandomPerson] == 0:
                RandomPerson = randint(1, 50)
            Dict.Members_Dict[RandomPerson] -= 1
        else:   
            Dict.Members_Dict[RandomPerson] -= 1
       
        NewRandomPerson = randint(1, 50)

        while RandomPerson == NewRandomPerson:
            NewRandomPerson = randint(1, 50)
       
        Dict.Members_Dict[NewRandomPerson] += 1
       
        counter += 1
       
        print("Num is: {0}".format(str(counter)))
       
        if Dict.Members_Dict[NewRandomPerson] == 50:
            print("Action completed! :D for {0} person".format(NewRandomPerson))
            os.system("exit")

if __name__ == "__main__":
    main()