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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: faraaz در 03 دی 1394، 10:48 ب‌ظ

عنوان: چرا کد پایتونم درست کار نمیکنه ؟؟؟
ارسال شده توسط: faraaz در 03 دی 1394، 10:48 ب‌ظ
سلام

من یه کد مثل زیر نوشتم که فاکتوریل عدد زیر ۱۰ رو حساب کنه اما هر عددی وارد می‌کنم 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 در 03 دی 1394، 11:43 ب‌ظ
به جای if دوم از elif استفاده کنین
عنوان: پاسخ : چرا کد پایتونم درست کار نمیکنه ؟؟؟
ارسال شده توسط: Ma3X در 03 دی 1394، 11:43 ب‌ظ
raw_input یک استرینگ برمی‌گردونه و باید Castش کنی به int:
a = int(raw_input("Enter an integer: "))
عنوان: پاسخ : چرا کد پایتونم درست کار نمیکنه ؟؟؟
ارسال شده توسط: koosha در 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
عنوان: پاسخ : چرا کد پایتونم درست کار نمیکنه ؟؟؟
ارسال شده توسط: faraaz در 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
خیلی  ممنون از جوابتون :)