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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: چرا کد پایتونم درست کار نمیکنه ؟؟؟  (دفعات بازدید: 1419 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین faraaz

  • Newbie
  • *
  • ارسال: 2
  • جنسیت : پسر
سلام

من یه کد مثل زیر نوشتم که فاکتوریل عدد زیر ۱۰ رو حساب کنه اما هر عددی وارد می‌کنم if اولی را اجرا می‌کند چجوری باید حلش کنم ؟؟ (در کد نویسی کم تجربه هستم !! )
B = 1
n = 1
a = raw_input ("adade kam tar az 10")
if a > 10 :
print "nemishe "
if a < 10 :
while a == n :
B = B * n
n = n + 1


آفلاین Armin000001

  • Newbie
  • *
  • ارسال: 11
  • جنسیت : پسر
    • linuxcenter
پاسخ : چرا کد پایتونم درست کار نمیکنه ؟؟؟
« پاسخ #1 : 03 دی 1394، 11:43 ب‌ظ »
به جای if دوم از elif استفاده کنین

آفلاین Ma3X

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 877
  • جنسیت : پسر
  • It is Matrix
    • ماتریکس. آی آر
پاسخ : چرا کد پایتونم درست کار نمیکنه ؟؟؟
« پاسخ #2 : 03 دی 1394، 11:43 ب‌ظ »
raw_input یک استرینگ برمی‌گردونه و باید Castش کنی به int:
a = int(raw_input("Enter an integer: "))

آفلاین koosha

  • Hero Member
  • *
  • ارسال: 734
  • جنسیت : پسر
پاسخ : چرا کد پایتونم درست کار نمیکنه ؟؟؟
« پاسخ #3 : 03 دی 1394، 11:52 ب‌ظ »
سلام
وقتی با raw_input متغیری رو دریافت میکنید ، اون متغیر به شکل رشته ذخیره میشه . بنابراین هر دفعه طول متعیر رو بیشتر از ۱۰ تشخیص میده .
برای حل این مشکل یا باید نوع متغیر رو عددی کنید و یا با تابع input دریافتش بکنید .
حلقه ی while هم شرطش رو به n<=a تغییر بدید .
کد اصلاح شده :

B = 1
n = 1
a = input ("adade kam tar az 10")
#a=int(a)
print (type (a))
if a > 10 :
        print "nemishe "
if a < 10 :
        while n <= a :
                B = B * n
                n = n + 1
print B
GNU/Linux
Debian8
I3 WM

آفلاین faraaz

  • Newbie
  • *
  • ارسال: 2
  • جنسیت : پسر
پاسخ : چرا کد پایتونم درست کار نمیکنه ؟؟؟
« پاسخ #4 : 04 دی 1394، 12:29 ق‌ظ »
سلام
وقتی با raw_input متغیری رو دریافت میکنید ، اون متغیر به شکل رشته ذخیره میشه . بنابراین هر دفعه طول متعیر رو بیشتر از ۱۰ تشخیص میده .
برای حل این مشکل یا باید نوع متغیر رو عددی کنید و یا با تابع input دریافتش بکنید .
حلقه ی while هم شرطش رو به n<=a تغییر بدید .
کد اصلاح شده :

B = 1
n = 1
a = input ("adade kam tar az 10")
#a=int(a)
print (type (a))
if a > 10 :
        print "nemishe "
if a < 10 :
        while n <= a :
                B = B * n
                n = n + 1
print B
خیلی  ممنون از جوابتون :)