حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود

صندوق قرعه کشی خانوادگی

تمرین آسان 2021 visibility link download flag

برنامه ای بنویسید که صندوق قرعه کشی خانوادگی را مدیریت کند:

۱. امکان اضافه و حذف کردن عضو وجود داشته باشد

۲. امکان انتخاب تصادفی از بین اعضایی که هنوز در قرعه‌کشی برنده نشدند وجود داشته باشد

۳. اطلاعات در فایل txt یا دیتابیس ذخیره شوند تا با بسته شدن برنامه از دست نروند

این تمرین یه پروژه ست! یعنی پتانسیل اینو داره که خیلی بیشتر روش کار بشه بنابراین ایده اصلی رو از اینجا بردار و خودت بیشتر روش کار کن تا به یه تمرین بزرگتر تبدیل یشه

reply 13

visibility
import random
import json
import os

# نام فایل ذخیره‌سازی اطلاعات اعضا
file_name = 'members.txt'

# بارگذاری اطلاعات از فایل
def load_members():
    if os.path.exists(file_name):
        with open(file_name, 'r') as f:
            return json.load(f)
    else:
        return {"members": [], "winners": []}

# ذخیره اطلاعات در فایل
def save_members(data):
    with open(file_name, 'w') as f:
        json.dump(data, f)

# افزودن عضو جدید
def add_member(data, name):
    if name not in data["members"]:
        data["members"].append(name)
        save_members(data)
        print(f"{name} با موفقیت اضافه شد.")
    else:
        print(f"{name} قبلاً در لیست اعضا وجود دارد.")

# حذف عضو
def remove_member(data, name):
    if name in data["members"]:
        data["members"].remove(name)
        # اگر عضو حذف‌شده در لیست برندگان بود، او را از آن لیست نیز حذف می‌کنیم
        if name in data["winners"]:
            data["winners"].remove(name)
        save_members(data)
        print(f"{name} با موفقیت حذف شد.")
    else:
        print(f"{name} در لیست اعضا یافت نشد.")

# انتخاب تصادفی یک برنده
def draw_winner(data):
    eligible_members = [member for member in data["members"] if member not in data["winners"]]
    if not eligible_members:
        print("همه اعضا قبلاً برنده شده‌اند.")
        return None
    winner = random.choice(eligible_members)
    data["winners"].append(winner)
    save_members(data)
    print(f"برنده این دوره: {winner}")
    return winner

# نمایش اعضا
def show_members(data):
    print("لیست اعضا:")
    for member in data["members"]:
        status = "برنده" if member in data["winners"] else "در انتظار قرعه‌کشی"
        print(f"- {member} ({status})")

# منوی اصلی
def main():
    data = load_members()
    while True:
        print("\n--- صندوق قرعه‌کشی خانوادگی ---")
        print("1. افزودن عضو")
        print("2. حذف عضو")
        print("3. نمایش اعضا")
        print("4. انجام قرعه‌کشی")
        print("5. خروج")
        choice = input("یک گزینه را انتخاب کنید: ")

        if choice == "1":
            name = input("نام عضو جدید را وارد کنید: ")
            add_member(data, name)
        elif choice == "2":
            name = input("نام عضو برای حذف را وارد کنید: ")
            remove_member(data, name)
        elif choice == "3":
            show_members(data)
        elif choice == "4":
            draw_winner(data)
        elif choice == "5":
            print("خروج از برنامه.")
            break
        else:
            print("گزینه نامعتبر است. لطفاً دوباره انتخاب کنید.")

# اجرای برنامه
if __name__ == "__main__":
    main()
from random import choice
aza = []
while True:
    a = str(input('baraye esm jadid adad 1,baraye hazf esm adad 2,baraye entekhab shansi adad 3 ra vared konid,baraye khororj dokmeye enter ro bezanid. : '))
    if a == '':
        break
    elif a == '1':
        c = str(input('esm ra vared konid: '))
        aza.append(c)
    elif a == '2':
        c = str(input('esm ra vared konid: '))
        aza.remove(c)
    elif a == '3':
        print(choice(aza))
    else:
        print('error! faghat mitoni adad 1,2,3 va kilid enter ro baraye khoroj bezani!')
        break
import random
k = []
k.append(input('baraye afzoodan yek nafar esme fard ra benevisid :'))
y = input('baraye afzoodan yek nafar digar esme fard ra benevisid va baraye shorooe ghore rooye [0] klic konid: ').lower().strip()
while True:
    if y == '0':
        break
    else:
        k.append(y)
        y = input('baraye afzoodan yek nafar digar esme fard ra benevisid vagarna rooye [0] klic konid: ').lower().strip()
print('ghore baraye {} nafar ast'.format(len(k)))
x = input('hala vaghte ghore baraye nafar avale lotfan rooye [n] klick konid: ').lower().strip()
a = 1
while True:
    if x == 'n':
        n = random.randint(0, len(k) - 1)
        print('{} omin barandeye maaaaa kasi nist jozzz  :'.format(a),k[n])
        del k[n]
        a = a + 1
        x = input('hala vaghte ghoreye nafar shomareye {} lotfan rooye [n] klick konid va baraye payan ghore rooye [0] klic konid: '.format(a)).lower().strip()
    else:
        break
import random
import os

class Lottery:
    def __init__(self, filename='members.txt'):
        self.filename = filename
        self.members = self.load_members()

    def load_members(self):
        """بارگذاری اعضا از فایل."""
        if os.path.exists(self.filename):
            with open(self.filename, 'r', encoding='utf-8') as file:
                return [line.strip() for line in file.readlines()]
        return []

    def save_members(self):
        """ذخیره اعضا در فایل."""
        with open(self.filename, 'w', encoding='utf-8') as file:
            for member in self.members:
                file.write(member + '\n')

    def add_member(self, member):
        """اضافه کردن عضو جدید."""
        if member not in self.members:
            self.members.append(member)
            self.save_members()
            print(f"{member} به لیست اعضا اضافه شد.")
        else:
            print(f"{member} قبلاً در لیست اعضا وجود دارد.")

    def remove_member(self, member):
        """حذف کردن عضو."""
        if member in self.members:
            self.members.remove(member)
            self.save_members()
            print(f"{member} از لیست اعضا حذف شد.")
        else:
            print(f"{member} در لیست اعضا وجود ندارد.")

    def draw_winner(self):
        """انتخاب برنده تصادفی."""
        if self.members:
            winner = random.choice(self.members)
            print(f"برنده تصادفی: {winner}")
        else:
            print("هیچ عضوی برای انتخاب وجود ندارد.")

def main():
    lottery = Lottery()
    while True:
        print("\n1. اضافه کردن عضو")
        print("2. حذف کردن عضو")
        print("3. انتخاب برنده تصادفی")
        print("4. خروج")
        choice = input("لطفاً گزینه مورد نظر را وارد کنید: ")

        if choice == '1':
            member_name = input("نام عضو را وارد کنید: ")
            lottery.add_member(member_name)
        elif choice == '2':
            member_name = input("نام عضوی که می‌خواهید حذف کنید را وارد کنید: ")
            lottery.remove_member(member_name)
        elif choice == '3':
            lottery.draw_winner()
        elif choice == '4':
            print("خروج از برنامه.")
            break
        else:
            print("گزینه نامعتبر است. لطفاً دوباره تلاش کنید.")

if __name__ == "__main__":
    main()
import random
filename="members.txt"
def load_members():
    try:
        with open(filename,"r")as file:
            members=[line.strip() for line in file]
    except FileNotFoundError:
        members=[]
    return members
def save_members(members):
        with open(filename,"w")as file:
            for member in members:
                file.write(member+"\n")
def add_member(members):
    name=input('add new name:')
    if name in members:
        print(f'{name}this name is in the list ')
    else:
        members.append(name)
        save_members(members)
        print(f" {name} add in list")

def remove_member(members):
    name=input('enter which name you want to remove: ')
    if name in members:
        members.remove(name)
        save_members(members)
    else:
         print(f"{name}is not in list")

def pich_random_member(members):
     if members:
      selected_member=random.choice(members)
      members.remove(selected_member)
      save_members(members)
      print(f"selected:{selected_member}")
     else:
         print("any one is not in list for selected:")
def main():
    members=load_members()
    while 1:
        print("\n ---lottery fund management---")
        print('1.add new member')
        print('2.remove member')
        print('3.random selection')
        print('4.show members')
        print('5.exited')

        choice=input('')
        if choice=='1':
          add_member(members)
        elif choice=='2':
            remove_member(members)
        elif choice=='3':
            pich_random_member(members)
        elif choice=='4':
            print(members)
        elif choice=='5':
                break
        else:
            print('try again')
main()
import random
# فایل ذخیره‌سازی اطلاعات
FILE_NAME = "lottery_box.txt"

def load_members():
    """بارگذاری اعضا و وضعیت برنده شدن آنها از فایل"""
    members = {}
    try:
        with open(FILE_NAME, "r") as file:
            for line in file:
                name, status = line.strip().split(',')
                members[name] = status == "won"
    except FileNotFoundError:
        pass  # اگر فایل وجود نداشت، هیچ چیزی بارگذاری نمی‌شود
    return members

def save_members(members):
    """ذخیره اعضا و وضعیت برنده شدن آنها در فایل"""
    with open(FILE_NAME, "w") as file:
        for name, won in members.items():
            status = "won" if won else "not_won"
            file.write(f"{name},{status}\n")

def add_member(name):
    """اضافه کردن عضو جدید به لیست قرعه‌کشی"""
    members = load_members()
    if name in members:
        print("این عضو قبلاً اضافه شده است.")
    else:
        members[name] = False  # وضعیت برنده نشده است
        save_members(members)
        print(f"عضو '{name}' با موفقیت اضافه شد.")

def remove_member(name):
    """حذف عضو از لیست قرعه‌کشی"""
    members = load_members()
    if name in members:
        del members[name]
        save_members(members)
        print(f"عضو '{name}' با موفقیت حذف شد.")
    else:
        print("این عضو در لیست وجود ندارد.")

def pick_winner():
    """انتخاب تصادفی برنده از اعضایی که برنده نشده‌اند"""
    members = load_members()
    non_winners = [name for name, won in members.items() if not won]

    if non_winners:
        winner = random.choice(non_winners)
        members[winner] = True  # تنظیم وضعیت برنده شدن
        save_members(members)
        print(f"برنده این قرعه‌کشی: {winner}")
    else:
        print("همه اعضا قبلاً برنده شده‌اند یا هیچ عضوی در لیست نیست.")

def list_members():
    """نمایش اعضا و وضعیت برنده شدن آنها"""
    members = load_members()
    if members:
        print("لیست اعضا و وضعیت آنها:")
        for name, won in members.items():
            status = "برنده شده" if won else "برنده نشده"
            print(f"{name} - {status}")
    else:
        print("لیست اعضا خالی است.")

import random
import pickle
family = []
names = []

f = open("Family.txt" , 'w')
f.write("----Family Members---- \n ")

def Print() :
    if len(names) == 0 :
        print("List is empty .")
    else :
        print("----Names----")
        for i,name in enumerate(names,start=1) :
            print(f'{i} : {name}')

def add() :
    name = input("name : ")
    names.append(name)
    family.append(name)
    print(f"✅{name.upper()} added")

def remove() :
    if len(names) != 0 :
        index = int(input('Enter number of members = ')) 
        if 0 < index <= len(names) :
            print(f"❌{names[index - 1].upper()} removed")
            names.pop(index - 1)
        else :
            print("Invalid input .")
    else : pass

def giveaway() :
    if len(names) != 0 :
        lucky = random.choice(names)
        print(f'

import random
import sqlite3

# اتصال به دیتابیس
conn = sqlite3.connect('family_raffle.db')
c = conn.cursor()

# ایجاد جدول اعضا اگر هنوز وجود ندارد
c.execute('''CREATE TABLE IF NOT EXISTS members
             (id INTEGER PRIMARY KEY, name TEXT)''')

def add_member():
    name = input("Enter member's name: ")
    c.execute("INSERT INTO members (name) VALUES (?)", (name,))
    conn.commit()
    print(f"{name} added to the raffle.")

def remove_member():
    name = input("Enter member's name: ")
    c.execute("DELETE FROM members WHERE name = ?", (name,))
    conn.commit()
    print(f"{name} removed from the raffle.")

def draw_winner():
    c.execute("SELECT name FROM members WHERE id NOT IN (SELECT id FROM winners)")
    eligible_members = [row[0] for row in c.fetchall()]
    if not eligible_members:
        print("All members have already won. No more winners can be drawn.")
        return
    winner = random.choice(eligible_members)
    c.execute("INSERT INTO winners (name) VALUES (?)", (winner,))
    conn.commit()
    print(f"The winner is: {winner}!")

def main():
    while True:
        print("\nFamiliy Raffle Management")
        print("1. Add member")
        print("2. Remove member")
        print("3. Draw winner")
        print("4. Exit")
        choice = input("Enter your choice (1-4): ")

        if choice == "1":
            add_member()
        elif choice == "2":
            remove_member()
        elif choice == "3":
            draw_winner()
        elif choice == "4":
            print("Goodbye!")
            conn.close()
            break
        else:
            print("Invalid choice. Please try again.")

if __name__ == "__main__":
    main()

import random
import os
MEMBERS_FILE = "members.txt"
def load_members():
if not os.path.exists(MEMBERS_FILE):
return {"members": [], "winners": set()}

members_data = {"members": [], "winners": set()}
with open(MEMBERS_FILE, "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines:
        parts = line.strip().split(":")
        if len(parts) == 2:
            name = parts[0]
            is_winner = parts[1] == "True"
            members_data["members"].append(name)
            if is_winner:
                members_data["winners"].add(name)
return members_data

def save_members(data):
with open(MEMBERS_FILE, "w", encoding="utf-8") as f:
for member in data["members"]:
is_winner = member in data["winners"]
f.write(f"{member}:{is_winner}\n")
def add_member(data):
name = input("نام عضوی که می‌خواهید اضافه کنید: ")
if name not in data["members"]:
data["members"].append(name)
save_members(data)
print(f"'{name}' با موفقیت اضافه شد.")
else:
print(f"'{name}' قبلاً در لیست اعضا وجود دارد.")
def remove_member(data):
name = input("نام عضوی که می‌خواهید حذف کنید: ")
if name in data["members"]:
data["members"].remove(name)
if name in data["winners"]:
data["winners"].remove(name)
save_members(data)
print(f"'{name}' با موفقیت حذف شد.")
else:
print(f"'{name}' در لیست اعضا یافت نشد.")
def select_winner(data):
available_members = [m for m in data["members"] if m not in data["winners"]]
if not available_members:
print("هیچ عضوی برای قرعه‌کشی باقی نمانده است!")
return
winner = random.choice(available_members)
data["winners"].add(winner)
save_members(data)
print(f"برنده این دوره: {winner}")
def display_menu():
print("\n--- منوی صندوق قرعه‌کشی ---")
print("1. اضافه کردن عضو")
print("2. حذف عضو")
print("3. انتخاب برنده")
print("4. نمایش اعضا و برندگان")
print("5. خروج")
def display_members_and_winners(data):
print("\n--- لیست اعضا و وضعیت برنده شدن ---")
if not data["members"]:
print("هیچ عضوی در سیستم ثبت نشده است.")
return

for member in data["members"]:
    status = "برنده شده" if member in data["winners"] else "برنده نشده"
    print(f"- {member} ({status})")

def main():
member_data = load_members()
while True:
display_menu()
choice = input("لطفاً گزینه مورد نظر را انتخاب کنید: ")
if choice == '1':
add_member(member_data)
elif choice == '2':
remove_member(member_data)
elif choice == '3':
select_winner(member_data)
elif choice == '4':
display_members_and_winners(member_data)
elif choice == '5':
print("برنامه در حال بسته شدن است. اطلاعات ذخیره شد.")
break
else:
print("گزینه نامعتبر است. لطفاً دوباره امتحان کنید.")
if name == "main":
main()

import random
import pickle

def save(data,filename):
    with open(filename, 'wb')as file:
        pickle.dump(data,file)
def load(filename):
    try:
        with open(filename, 'rb') as file:
            return pickle.load(file)
    except:
        return []
def show(data):
    for i, name in enumerate(data,1):
        print(f'{i}-{name}')

filename = 'family.txt'
family = []
family = load(filename)
filename = 'winners.txt'
winners = []
winners = load(filename)

while True:
    menu = input('1)add member\n2)show members \n3)Lottery \n4)winners \n5)remove a member\n')
    if menu == '1':
        name = input('name: ')
        family.append(name)
        save(family,'family.txt')
    elif menu == '2':
        show(family)
    elif menu == '3':
        random_name = random.choice(family)
        print(f'the winner is: {random_name}')
        winners.append(random_name)
        save(winners,'winners.txt')
    elif menu == '4':
        show(winners)
    elif menu == '5':
        show(family)
        name = input('who you want too remove')
        family.pop(name-1)
        save(family,'family.txt')
    else:
        break
<< صفحه قبل 1 2 صفحه بعد >>

ارسال جواب

جوابت را با Markdown بنویس و ثبت کن

×
بستن