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