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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: AmirZare در 16 شهریور 1397، 12:40 ق‌ظ

عنوان: حل سوال پایتون جادی [حل شد]
ارسال شده توسط: AmirZare در 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()
ویرایش:
ببخشید من سوال رو اشتباه خوندم، در اصل سوالی که حل کردم اینه:
۵۰ نفر تو اتاقن و هر نفر یک دلار داره و به صورت رندوم هر دفعه یک نفر خاص به یک نفر دیگه یک دلار میده(دقت کنید که همه به هم دیگه پول نمیدن فقظ یک نفر!) تا اینکه یک نفر ۵۰ دلار رو بتونه بگیره.
عنوان: پاسخ : حل سوال پایتون جادی
ارسال شده توسط: AmirZare در 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()