انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: 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
-
به جای if دوم از elif استفاده کنین
-
raw_input یک استرینگ برمیگردونه و باید Castش کنی به int:
a = int(raw_input("Enter an integer: "))
-
سلام
وقتی با 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
-
سلام
وقتی با 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
خیلی ممنون از جوابتون :)