الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما الخطأ ف هذا البرنامج؟

بدأه Pylover في 17 نوفمبر 2011 · 6 رد · 739 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

شرفت بالانضمام لمنتداكم الغالى بعد متابعة لاكثر من عام

اسأل الله خيره وخير ما يأتى من وراءه

مقدمة:

انا ولله الفضل والمنة بدأت ف وضع قدماى ع أول خطوة ف طريقى لاحتراف البايثون من خلال متابعة ودراسة كتاب ورقى ف البايثون

وطلب المؤلف تطبيق مثال على برنامج ( فزورة ) واممممممممممممم وقد ظهرت لى أخطاء عند التنفيذ

السؤال:

ما سبب الاخطاء التى تظهر لى؟ وما الحل؟

وهل هناك عدد معين للمسافات تراعى بعد امر print و جملة while ?

شاكر لحضراتكم جدا

البرنامج:

import random
secert = random.randint(1,99)
guess = 0
tries = 0
print "ahoy !i'm the dread pirate roberts, and i have a secret !"
print "it is anumber from 1 to 99. i'll give you 6 tries."
while guess != secret and tries < 6:
    guess = input(" what is your guess?")
    if guess < secret :
    print "too low , ye scurvy dog !"
    elif guess > guess
    print "too high ,landlubber !"
    tries = tries + 1
    if guess == secret
    print "avast! ye got it! found my secret, you did"
    else:
        print "no more guesses! better luck next time , matey!"
        print "the secret number was ",secret

تم تعديل هذه المشاركة بواسطة Pylover في 17 نوفمبر 2011 في 22:51

#2

السلام عليكم ...

في الكود مجموعة أخطاء ..

  1. عرفت المتحول secert ثم استخدمته كــ secret .
  2. الكود التالي :
    guess = input(" what is your guess?")

    يجعل المتحول من نوع str و لا يجوز مقارنته مع int لذلك ..كتبنا :

    guess = int(input(" what is your guess?"))

  3. تنسيق الكود غير صحيح و البايثون تتعامل مع الإزاحات Indentation كجزء من الكود .. أي السطر بعد if يجب أن يكون مزاحا كي يكون هو عبارة الــ if ..
  4. أنا استخدم python3 حيث الطباعة print() و ليس كما في python2.X حيث الطباعة print فقط دون أقواس ..
  5. تجنب وضع علامات التنصيص المفردة داخل الجمل التي نريد طباعتها .. (أحيانا تعطي أخطاء).
  6. الكود كاملا :
    import random
    secret = random.randint(1,99);
    guess = 0;
    tries = 0;
    print ("ahoy !I am the dread pirate roberts, and i have a secret !")
    print ("it is anumber from 1 to 99. i will give you 6 tries.");
    while guess != secret and tries < 6:
    	guess = int(input(" what is your guess?"))
    	if guess < secret:
                	print ("too low , ye scurvy dog !")
    	elif guess > secret:
                	print ("too high ,landlubber !")
    	tries = tries + 1
    	if guess == secret:
         		print ("avast! ye got it! found my secret, you did")
    	else:
              	print ("no more guesses! better luck next time , matey!")
              	print ("the secret number was " , secret)

  7. بعد وضع الكود في المشاركة .. تغيير بسبب تنسيق المحرر .. اصلحت الممكن منه ..

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 18 نوفمبر 2011 في 11:08

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

اولا اشكرك اخى الكريم على ردك

امممممممممممممممممممممم

هذا الكود انا نقلته بالحرف من الكتاب كما كتبه المؤلف ولكن هو نبه انه سيحدث اخطاء ويجب تدارجها

وعند التنفيذ يظهر لى الخطأ فى كلمة print فواضح ان المشكلة كما قلت ف التنسيق والازاحات

وبعدين انا اخدت الكود الصحيح اللى كتبته اشتغل معايا تمام بس ف مشكلة بسيطة انه بعد المحاولة الاولى من التخمين يخبرنى انه قد انتهى عدد المحاولات وان الرقم السرى كذا

والمفروض ده يحصل بعد 6 محاولات ؟؟

.................................................

اعذرنى سأزيد على عاتقك الكثير

تفضلت وقلت

عرفت المتحول secert ثم استخدمته كــ secret .

تعلم انى مبتدىء... ما معنى هذا؟؟

شاكر لك جدا استاذى الفاضل

#4

السلام عليكم ورحمة الله

عدل هذا السطر:

if guess == secret:

إلى :

elif guess == secret:

كما ستحتاج إلى اضافة break لحلقة التكرار عند ايجاد القيمة الصحيحة

يبدو انني تسرعت قليلاً :)

بهذا الشكل ستحل مشكلتك :

import random
secret = random.randint(1,99);
guess = 0;
tries = 0;
print ("ahoy !I am the dread pirate roberts, and i have a secret !")
print ("it is anumber from 1 to 99. i will give you 6 tries.");
while guess != secret and tries < 6:
    	guess = int(input(" what is your guess?"))
    	if guess < secret:
            	print ("too low , ye scurvy dog !")
    	elif guess > secret:
            	print ("too high ,landlubber !")
    	if tries == 5:
            	if guess == secret:
                    	print ("avast! ye got it! found my secret, you did")
            	else:
                    	print ("no more guesses! better luck next time , matey!")
                    	print ("the secret number was " , secret)
    	tries = tries + 1

جرب واخبرني إن لم يكون هذا ما تريده من السكريبت

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 18 نوفمبر 2011 في 20:08

Everything will be fine when we TALK LESS, DO MORE


#5

السلام عليكم ..

اقتباس
وبعدين انا اخدت الكود الصحيح اللى كتبته اشتغل معايا تمام بس ف مشكلة بسيطة انه بعد المحاولة الاولى من التخمين يخبرنى انه قد انتهى عدد المحاولات وان الرقم السرى كذا

والمفروض ده يحصل بعد 6 محاولات ؟؟

الأخ MoHaMMaD Pro مشكورا .. قام بحل هذه المشكلة .. انا جربته ...

اقتباس
عذرنى سأزيد على عاتقك الكثير

تفضلت وقلت

عرفت المتحول secert ثم استخدمته كــ secret .

تعلم انى مبتدىء... ما معنى هذا؟؟

شاكر لك جدا استاذى الفاضل

في لغة البايثون نقوم باسناد قيمة لمتحول , فيتم تعريفه ..أو يسمى التصريح عن المتحول .. و بالتالي هو يحجز مكان من الذاكرة ..

و في مشاركتك كتبت :

secert = random.randint(1,99)

أي تم تعريف متحول اسمه secert (لاحظ الحرف الرابع هو e و الخامس هو r)ثم داخل الكود استخدمت الأسم secret (الحرف الرابع هو r و الخامس هو e)في الكود :

while guess != secret and tries < 6:

أي خطأ لغوي في اسم المتحول و هذا سيعطي رسالة من الشكل :

NameError: name 'secret' is not defined

و أخيرا لا شكر على واجب ... يسر الله لك طريق العلم ...

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#6

اولا جزاكم الله جميعا

انا فعلا جربت الاسكريبت بتاعك اخى محمد واشتغل تمام من غير ولا غلطة

ياريت لو مش يكون منى ثقل عليك تفهمنى ماذا عدلت؟

وشاكر لك جدا اخى حسام على تفاعلك وردك على بسرعة

#7

ياشباب

ماشاء الله قمتم بالواجب وأكثر

هل الاخطاء تلك تعبر ان مؤلف الكتاب مثلا لا يفهم شىء و اغير الكتاب

ولا هذه أخطاء مطبعية اتجاوزها ولا شىء؟؟؟؟؟؟؟؟؟

تم تعديل هذه المشاركة بواسطة Pylover في 19 نوفمبر 2011 في 00:02

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…