MPGH
2 سال پیش توسط MPGH مطرح شد
4 پاسخ

اشکال کد

سلام من کد زیر را نوشتم :

'''حامد پین کد 5 رقمی گاو صندوق خود را فراموش کرده است .
با این حال ، درباره اعداد پین کد خود اطلاعات زیر را دارد :
جمع رقم های پنجم و سوم پین کد برابر 14 است .
رقم اول ، یک واحد از دو برابر رقم دوم کمتر است.
رقم چهارم ، یک واحد از رقم دوم بیشتر است.
جمع رقم های دوم و سوم برابر 10 است .
حاصل جمع رقم های پین کد برابر 30 است.
برنامه ای بنویسید که این رمز گاوصندوق را با استفاده از اطلاعات بالا پیدا کند .'''
'''note
 RD=adad voroody 
R =ramz -> tamam adad mojood
TR=this ramz -> string tamam adad 
------------------------------------------'''
#جمع ارقام
def jam_Argham(RD):
 sum_digits=0
 for i in RD:
      sum_digits += RD[i]
 return sum_digits
#sharayet RAMZ
def ramz_is_ok(RD):
 if RD["e5"]+RD["c3"]==14 and\
    RD["a1"]==RD["b2"]*2 -1 and\
    RD["d4"] ==RD["b2"]+1 and\
    RD["b2"]+RD["c3"]==10 :#do noghte dar inja be mani in ast ke agar tamam shoroot ghabl az do noghte  dorost bood sepas ...
           if jam_Argham(RD) == 30:
                return  True 
for R in range(0,100000):
 TR=str(R).zfill(5)
 #print(str(TR))
RD={}
RD["a1"]=int(TR[0])
RD["b2"]=int(TR[1])
RD["c3"]=int(TR[2])
RD["d4"]=int(TR[3])
RD["e5"]=int(TR[4])
if ramz_is_ok(RD):
 print(R)

اما برام خروجی هیچ چیزی نمیده .

میشه بگید اشکالش چیه؟؟؟؟
@mehdi0121
@endworld


ثبت پرسش جدید
رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 2 سال پیش مطرح شد
0

درود خوبی ..
پایتون بلد نیستم. 🙌


مهدی اردشیر
تخصص : یه برنامه نویس
@mehdi0121 2 سال پیش مطرح شد
0

سلام من زیاد پایتون کار نکردم
ولی بیا برای ramz_is_ok یه false هم بذار
و بعدش برای if خط 37 یه else بذار
و چک کن اینارو یه پرینت هم از rd بگیر ببین داده هارو برمیگردنه


CyrusKabir
تخصص : توسعه دهنده فرانت اند
@CyrusKabir 2 سال پیش مطرح شد
0

سلام رفیق ، امیدوارم حالت خوب باشه. دلیل خروجی نگرفتنت به این خاطر که کدی که نوشتی ورودی یکسانی رو به تابع is_ramz_ok(rd) میده و هیچ وقت مقدار True برنمیگردونه و تنها جایی هم که تو کدت میشه خروجی دید قسمتی از کده که هیچ وقت اجرا نمیشه چون همونطور که گفتم تابع ات همیشه مقدار ثابت میگیره که پین مورد نظر نیست و True برنمیگردونه. چند راه هست برای حل این مسئله (پیدا کردن پین) میتونیم از همین روش که کدت رو نوشتی استفاده کنیم که احتمالا قصد داشتی تمامی اعداد پنج رقمی رو جدا کنی و شرایط مسئله رو تست کنی. (ولی درست پیاده سازی نشده) من خودم با پایتون زیاد کار نکردم و فقط سعی کردم مسئله رو بفهمم و حل اش کنم به این روش. قطعا این روش تست همه اعداد روش بهینه ای نیست و راه بهتر احتمالا درست کردن پین نه تست کردن تمامی اعدا د ولی به قول معروف کار میکنه دیگه :) (اشتباه بزرگ)

'''حامد پین کد 5 رقمی گاو صندوق خود را فراموش کرده است .
با این حال ، درباره اعداد پین کد خود اطلاعات زیر را دارد :
جمع رقم های پنجم و سوم پین کد برابر 14 است .
رقم اول ، یک واحد از دو برابر رقم دوم کمتر است.
رقم چهارم ، یک واحد از رقم دوم بیشتر است.
جمع رقم های دوم و سوم برابر 10 است .
حاصل جمع رقم های پین کد برابر 30 است.
برنامه ای بنویسید که این رمز گاوصندوق را با استفاده از اطلاعات بالا پیدا کند .'''
'''note
 RD=adad voroody 
R =ramz -> tamam adad mojood
TR=this ramz -> string tamam adad 
------------------------------------------'''
def jam_Argham(RD):
 sum_digits=0
 for i in RD:
      sum_digits += RD[i]
 return sum_digits
#sharayet RAMZ
def ramz_is_ok(RD):
    if RD["digit5"]+RD["digit3"]==14 and\
    RD["digit1"]==RD["digit2"]*2 -1 and\
    RD["digit4"] ==RD["digit2"]+1 and\
    RD["digit2"]+RD["digit3"]==10 :#do noghte dar inja be mani in ast ke agar tamam shoroot ghabl az do noghte  dorost bood sepas ...
           if jam_Argham(RD) == 30:
                return  True 
for i in range (10000, 99999):
    RD={}
    possiblePin = i;
    for i in range(0,5):
        RD[f"digit{i+1}"] = int(str(possiblePin)[i]) # joda ****** argham va zakhire ****** to RD

    if ramz_is_ok(RD):
        pin = "" 
        for digit in RD:
            pin += str(RD[digit])
        print(f"pin hast: {pin}")
        break
    else:
        print("ok nabood dobare !")

Seyed Mohammad Mahdi Mirjalili
تخصص : Python:PHP:Html:Css:Photoshop:...
@ultraidev 9 ماه پیش مطرح شد
0

کد اپدیت شده شما بدون مشکل:

def jam_Argham(RD):
sum_digits=0
for i in RD:
    sum_digits += RD[i]
return sum_digits

def ramz_is_ok(RD):
if RD["e5"]+RD["c3"]==14 and\
    RD["a1"]==RD["b2"]*2 -1 and\
    RD["d4"] ==RD["b2"]+1 and\
        RD["b2"]+RD["c3"]==10 :
            if jam_Argham(RD) == 30:
                return  True 

for R in range(0,100000):
TR=str(R).zfill(5)
RD={
    "a1": int(TR[0]),
    "b2": int(TR[1]),
    "c3": int(TR[2]),
    "d4": int(TR[3]),
    "e5": int(TR[4])
}

if ramz_is_ok(RD):
    print(f'{RD["a1"]}{RD["b2"]}{RD["c3"]}{RD["d4"]}{RD["e5"]}')

ولی بهتون پیشنهاد میکنم از کد زیر استفاده کنید:

# ABCDE
# E + C = 14
# A = 2.B - 1
# D = B + 1
# B + C = 10
# A + B + C + D + E = 30

def key():
    for B in range(1, 10):
        for C in range(1, 10):
            if B + C == 10:
                D = B + 1
                A = (2 * B) - 1
                E = 14 - C
                if A + B + C + D + E == 30:
                    num = f"{A}{B}{C}{D}{E}"
                    return num

    return 'THE KEY DIDN\'T FIND.'

print(key())

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام