-
تاپیک سورسهای موضوعی پایتون (آموزشی)
سلام
میخوام که اینجا مرجعی بشه برای کسایی که تازه واردن و یا به کدی خاص تو زمینه خاص نیاز دارن .
ترتیب سوالات بصورت موضوعی خواهد بود. به این معنی که چطور کتابها یه فهرست دارن و مطالب دسته بندی شده ، اینجا هم موضوعات دسته بندی شده ، مشخص میشه ، سوالات و جوابهای مرتبط با همون موضوع قرار میگیره.
برای روشن تر شدن موضوع مثلا اعلام میشه که این بخش درباره کار با رشته ها هست و سوالها هم تو همون زمینه نوشته میشه و پس از پایان سوالات به موضوع بعدی میرم.
درواقع آموزش پایتون از طریق ارائه سوال ، تفکر ، ارائه کد و بررسی کد صورت میگیره.
در اینجا اصلا قصد آموزش پایتون به اون معنای همیشگی رو ندارم. یعنی مثل آموزش Tkinter دیگه از توضیحات خبری نیست . حالا ممکنه نکته ای ، چیزی وجود داشته باشه ذکر بشه ولی ...
چندتا نکته :
1- دوستان لطف کنن اگه سوالی ، موردی ، چیزی بود ، با پیغام خصوصی مطرح کنین تا پیوستگی مطالب حفظ بشه .
2- اصلا قرار نیست سوالات سخت مطرح بشه . فقط قراره چند سوال در هر سرفصل مطرح بشه تا دوستان مهارت و تجربشون زیاد بشه .
2- فعلا تا آخر هفته هیچ سوالی درج نمیشه تا دوستان همه با خبر بشن بعد .(میخوام کار مشارکتی باشه )
3- سوال مطرح میشه و دوستان میتونن جوابهای خودشون را در رابطه با اون سوال بصورت پست جدید درج کنن.فقط اینکه :
- اساتید و دوستان حرفه ای لطف کنن تا 2 روز پس از طرح سوال به اون جواب ندن که فرصتی بشه برای دوستان مبتدی تا کمی روش فکر کنن.
- در انتخاب نسخه پایتون مختارید (نسخه پایتون مورد استفاده خود را درج کنید)
- نام سیستم عاملی که کد در آن تست شده را بنویسید
- از ماژولهای خارجی تا جایی که امکان داره استفاده نشه
( با اجازه دوست خوبم )
Geek1982: دوستان این دو تا مورد رو لطفا حتما رعایت کنید
- عزیزان لطف کنین کدهایی رو که تست شده و مشکلی نداره قرار بدین
- اگر به سوالی پاسخ داده شد و کد شما با اون تفاوت اساسی نداره لطف کنین و پست جدید ایجاد نکنید (جواب های غلط ، کاملا تکراری و... حذف می شه )
شاد و موفق یاشید :لبخند:
-
سوالات و لینک پاسخها
1-مقدمات و ساختار های کنترلی :
------------------------
- 1- برنامه ای بنویسید که عددی را از ورودی دریافت کند و سپس به تعداد این عدد اعدادی را دریافت کرده ، مجموع و میانگین آن را محاسبه کرده و نمایش دهد . / پاسخ . پست 3
و یه نکته کوجولو : اگر از تبدیل استفاده شده در خط دوم کد ارائه شده استفاده نکنید در ادامه با پیغام خطا مواجه میشوید . وروردی به طور معمول به صورت رشته دریافت خواهد شد.
- 2- برنامه ای بنویسید که اعداد بین 0 تا 2 را با فاصله 0.2 نمایش دهد / پاسخ . پست 7
- 3- برنامه ای بنویسید که کاراکترهای a تا z رو همراه با کد اسکی اون چاپ کنه . / پاسخ و نکته . پست 9
- 4- برنامه ای بنویسید که رشته ای رو از ورودی دریافت کنه و کد اسکی اون رو نشون بده . در خروجی فقط کد اسکی و یک فاصله چاپ بشه (به صورت افقی) / پست 11 و 12
- 5- برنامه ای بنویسید که رشته ای را از ورودی دریافت کرده و تعداد فضای خالی بین کلمات را شمارش کند . رشته مورد نظر با دریافت سه نقطه پشت سر هم (...) به پایان میرسد / پست 14
- 6- سوال قبل را با while پیاده سازی کنید. / پست 16
- 7-برنامه ای بنویسید که عدادی را از ورودی دریافت کند و درصورتی که تعداد ارقام عدد فرد است و یک رقمی نیست وارون آن را چاپ کند و در غیر اینصورت --- را چاپ کند/ادامه توضیحات در پست مربوطه... / پست24
- 8- برنامه ای بنویسید که اولویت اعمال در عبارت زیر را بگونه ای تنظیم کند که نتیجه محاسبه عدد 20 شود/
3*5+4-1*4/3+1
/پست 33
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سلام خیلی کار خوبی کردین باعث شد من بعد از چندی دوباره پایتون کار کنم ممنون
import os
x = int(input("Please enter a number: "))
x3 = 0
x2 = 0
for a in range(1,x + 1):
x2 = int(input("Please enter a number: "))
x3 += x2
print("Sum = " + str(x3) + " Average = " + str(x3 / x))
os.system("PAUSE")
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سلام
از جناب geek1982 بابت پیگیری و همکاریشون ممنونم
جناب MohsenPy با تشکر از پاسختون ، به نظر شما استفاده از کدهای خط اول و آخر لازمه ؟ اگه اینطوره لطف کنید دلیلش رو زیر پاسختون ارائه کنید
------------------------------------------------------------------------------------------
برنامه ای بنویسید که اعداد بین 0 تا 2 را با فاصله 0.2 نمایش دهد
خروجی :
0
0.2
0.4
0.8
.
.
.
2
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
من که متوجه این سوال نشدم یعنی در در یک خط با فاصله 0.2 نمایش بده؟خواهشا یکم واضح تر سوال طرح کن جناب ehp_kz6597 عزیز.
...
در مورد اون Pause شدن برنامه نه میشه نوشت میشه ننوشت ولی برای اینکه برنامه سریع بسته نشه نوشتم و یادم رفت برش دارم از کد برنامه برای انتقال به اینجا حالا چطور مگه؟
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سوال تصحیح شد و نمونه خروجی مورد نظر هم ارائه شد
این که دیگه ماژول نمیخواست .خب مثل زبانهای دیگه یه درخواست ورودی میدادی . یعنی دستور () input رو آخر کد اضافه میکردی
اگه لطف کنین کدتون رو تو همون پست به این صورت (بدون ماژول) ویرایش کنید ممنون میشم
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
خدا خیرت بده سوالو درست کردی :لبخند:
بفرما:
for i in range(1,10 + 1):
print((i / 10) * 2 )
در ضمن از Python 3.2 هم استفاده میکنم یادم رفت ذکر کنم.
...
والا تا جایی که بنده حقیر یاد دارم اینجوری هست عزیز و تو زبون های دیگه هم مثل c همینه:
system("pause");
البته اون راهم هستا ولی من حالا از این راه استفاده میکنم دیگه گیر نده شما:لبخند:.
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سلام
من بیخیالش شدم ولی ... :متفکر:
جناب MohsenPy ، از پاسخ دادن شما معلومه که مبتدی نیستین ، به همین خاطر همونطور که تو پست اول هم مطرح کردم لطف کنید فردای روزی که سوال مطرح میشه جوابتون رو ارائه کنید تا دوستان تازه وارد هم کمی رو مسئله فکر کنن . مخصوصا که این اوایل سوالات چندان سخت نیست و مفاهیم اولیه رو در غالب شرایط مختلف بررسی میکنه و میتونه برای تقویت پایه های یادگیری مناسب باشه .
سوالات سخت نیست دوستانی که این پست ها رو مشاهده میکنن سعی کنن تو حل مسائل مطرح شده همکاری کنن .
-------------------------------------------------------------------------
برنامه ای بنویسید که کاراکترهای a تا z رو همراه با کد اسکی اون چاپ کنه .
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
خب مثل اینکه خبری نیست اوکی اینم خودم جواب میدم.
پاسخ:
for i in range(97,122 + 1):
print(chr(i) +" "+ str(i))
توضیح: کد اسکی حروف کوچک از 97 تا 122 هست و کد اسکی حروف بزرگ از 65 تا 90.
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سلام
بابا ایول به این همه فعالیت . آخه من موندم کدوم کد رو به عنوان پاسخ سوال درج کنم :متعجب:
باز هم دوست عزیز جناب MohsenPy . اگه نبود احتمالا در این تاپیک تخته میشد :قهقهه:
------------------------------------------------------------------
این سوال هم آسونه و هم به نوعی در ارتباط با سوال قبله . پس دوستان سعی کنن این یکی رو جواب بدن
برنامه ای بنویسید که رشته ای رو از ورودی دریافت کنه و کد اسکی اون رو نشون بده . در خروجی فقط کد اسکی و یک فاصله چاپ بشه (به صورت افقی) مثلا
ورودی : abc خروجی : 99 98 97
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
ناراحت نشو عزیز
نمیذارم در این تاپیک تخته شه:
فقط از اونجایی که خودم رو استاد در پایتون میدونم! (بالاخره از آشنایی من و پایتون نزدیک به دو سه هفته میگذره!) صبر میکنم تا بقیه کدشون رو بذارن:قهقهه:
python 2.7 - windows
x=raw_input('please enter a word: ')
for i in x:
print ord(i),
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سلام
ناراحت که نیستم ولی وقتی ببینم دوستان استقبال بیشتر میکنن ، فعالیت میکنن و ... خب روحم شاد میشه :چشمک:
از طرفی این سوالات و آموزشها برای افراد تازه کار بیشتر مناسبه (انشاء الله تا مراحل پیشرفته تر ادامه داره) . وقتی هم میگین دو سه هفته یعنی یعنی با اصول اولیه آشنایید و مطمئنا با یه کم تلاش و جستجو میتونین سوالات رو حل کنید و این تلاش و جستجو برای پیدا کردن جواب تاثیر عجیبی در یادگیری داره :متعجب:
از پاسختون ممنونم :تشویق:
کد بالا در پایتون 3 به صورت زیر تغییر میکنه :
x=input('please enter a word: ')
for i in x:
print (ord(i),end=' ')
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
برنامه ای بنویسید که رشته ای را از ورودی دریافت کرده و تعداد فضای خالی بین کلمات را شمارش کند . رشته مورد نظر با دریافت سه نقطه پشت سر هم (...) به پایان میرسد
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
x=input("Enter text and end it with ...")
noOfSpace=0
for i in range(0,len(x),1):
if x[i]==" ":
noOfSpace+=1
if x[i:i+3]=="...":
break
print("Total no of spaces is %d" % noOfSpace)
Python 3.2, Windows Platform
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
با تشکر از جناب saina2006
الف - سوال قبل را با while پیاده سازی کنید.
ب -آیا هر کد نوشته شده با حلقه while را میتوان به for تبدیل کرد و برعکس ؟ در صورتی که پاسخ به این سوال منفی است با دلیل و مثال نقض اثبات کنید (2 نمره :لبخند:)
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
x=input("Enter text and end it with ...")
noOfSpace=0
i=0
while not x[i:i+3]=="...":
if x[i]==" ":
noOfSpace+=1
i+=1
print("Total no of spaces is %d" % noOfSpace)
Python 3.2, Windows Platform
به نظر من میشه چون در حقیقت for شکل دیگه ای از while هست
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
نقل قول:
نوشته شده توسط
ehp_kz6597
ب -آیا هر کد نوشته شده با حلقه while را میتوان به for تبدیل کرد و برعکس ؟ در صورتی که پاسخ به این سوال منفی است با دلیل و مثال نقض اثبات کنید[/COLOR] (2 نمره :لبخند:)
ساخت حلقه بینهایت با دستور for فکر میکنم یه خورده مشکله
با زبونی مثل vb مطمئنم به این راحتیا نمیشه ولی با اون چیزی که از پایتون دیدم احساس میکنم با یک کم تلا ش بشه.
اصلا میتونه سوال بعدیت همین باشه:
ساخت حلقه بینهایت با for
!!!
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
نقل قول:
نوشته شده توسط
asedjavad
ساخت حلقه بینهایت با دستور for فکر میکنم یه خورده مشکله
با زبونی مثل vb مطمئنم به این راحتیا نمیشه ولی با اون چیزی که از پایتون دیدم احساس میکنم با یک کم تلا ش بشه.
اصلا میتونه سوال بعدیت همین باشه:
ساخت حلقه بینهایت با for
!!!
ساخت حلقه بینهایت با for خیلی ساده هست فقط کافیه start=1 وend=0 و step=1 باشه
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
با تشکر از دوستان
ForLoop
؟ When do I use for loops
For loops are traditionally used when you have a piece of code which you want to repeat
n number of times. As an alternative, there is the WhileLoop, however,
while is used when a condition is to be met, or if you want a piece of code to repeat forever
WhileLoop
؟ When do I use them
While loops, like the ForLoop, are used for repeating sections of code - but unlike a
for loop, the
while loop will not run
n times, but until a defined condition is met. As the
for loop in Python is so powerful,
while is rarely used, except in cases where a user's input is required
با توجه به توضیحات رسمی پایتون ، میشه این طور برداشت کرد که برعکس برخی زبانهای دیگه که تبدیل این دو حلقه به هم راحت تر انجام میشه ، اینجا قرار نیست شما اصلا اینو جای اون استفاده کنید و از اون مهمتر انگار شما
نباید با for یه حلقه بینهایت ایجاد کنید :متفکر: (به لینکهای بالا مراجعه کنید)
ولی خب اگه کسی حال داشت بشینه اینو بررسی کنه و جوابشو اینجا بذاره
نقل قول:
ساخت حلقه بینهایت با for
یه کوچولو ور رفتم هنگ کردم و ctrl + alt + delete > end process :گیج:
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
دوستان اگه تکنیک خاصی توی کد هاشون استفاده می کنن ان ها رو شرح بدن مثلا همین string slicing که به کار رفته
http://rgruet.free.fr/PQR27/PQR2.7.html
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
برنامه ای بنویسید که عدادی را از ورودی دریافت کند و درصورتی که تعداد ارقام عدد فرد است و یک رقمی نیست وارون آن را چاپ کند و در غیر اینصورت --- را چاپ کند
برنامه باید با ورود هر عدد خروجی را در همان لحظه نمایش دهد
این برنامه زمانی به پایان میرسد که کاربر عبارت exit را تایپ کند
ورودی : 123 خروجی : 321 ورودی : 9 خروجی :---
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
یه نمونه حلقه تا حدودی بینهایت با for در python 2.7 در ویندوز:
البته نمیشه گفت به طور کامل حلقه بینهایته ولی تا جایی که حافظه یاری کنه، کار میکنه ظاهرا!
a=[1]
for i in a:
a.append(1)
این چیزی بود که به ذهن من رسید
هرچند نه سرعتش مناسبه و نه میزان استفاده از حافظش
ولی بالاخره کار میکنه!
حالا با اجازه میخوام دوباره همین سوال رو مطرح کنم که
نقل قول:
-آیا هر کد نوشته شده با حلقه while را میتوان به for تبدیل کرد و برعکس ؟ در صورتی که پاسخ به این سوال منفی است با دلیل و مثال نقض اثبات کنید
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
دوستان سوالات رو کمی پیچیده تر کنن ( استفاده از keyword های بیشتری از زبان منظورمه به طوری که از خود زبان چیز یاد بگیریم )
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
while True:
num=""
numrev=""
num=str(input("Enter a number [For exit enter exit]: "))
if num=="exit":
break
if len(num)==1:
print("---")
continue
if len(num)%2 !=1:
continue
for i in range(len(num)-1,-1,-1):
numrev+=num[i]
print("Reverse Number is: %s" % numrev)
Phython 3.2, Windows Platform
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
نقل قول:
-آیا هر کد نوشته شده با حلقه while را میتوان به for تبدیل کرد و برعکس ؟ در صورتی که پاسخ به این سوال منفی است با دلیل و مثال نقض اثبات کنید
حلقه ی For از روی While ساخته شده، یعنی حالت خاصی از While هست.
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
نقل قول:
while True:
num=""
numrev=""
num=str(input("Enter a number [For exit enter exit]: "))
if num=="exit":
break
if len(num)==1:
print("---")
continue
if len(num)%2 !=1:
continue
for i in range(len(num)-1,-1,-1):
numrev+=num[i]
print("Reverse Number is: %s" % numrev)
سلام
میشه یه توضیح راجع به کدتون بدید؟
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سلام
الان از سر امتحان اومدم . سرم داره منفجر میشه ، چشام داره میترکه و حالم شبیه اینه :گیج: . اگه مطلب چرت و پرتی دیدید به بزرگواری ببخشید :چشمک:
نقل قول:
میشه یه توضیح راجع به کدتون بدید؟
خب اینکه توضیح خاصی نمیخواد
تازمانی که حلقه while درست است (حلقه بینهایت ) ، ورودی را از کاربر میگیرد و در num قرار میدهد .برنامه مقدار num را چک میکند که اگر برابر exit باشد حلقه خاتمه می یابد (دستور breack ) . سپس ( len(num ، یعنی طول ورودی کاربر ، را بررسی میکند . در صورتی که برابر 1 بود ، یعنی عدد وارد شده تک رقمی بود "---" چاپ میشود .
len(num)%2 !=1 این کد هم بررسی میکنه که اگر طول عدد وارد شده فرد باشد ، از ادامه حلقه منصرف شده و دور بعد شروع میشود (دوباره از کاربر درخواست ورودی میکند ) // البته قرار بود که در این حالت نیز همون "---" چاپ شود ولی خب تو کلیت جواب تاثیری نداره
اگر همه شرایط روبه راه بود میاد و از طول عبارت وارد شده منهای 1 تا 1- رو یکی یکی دنده عقب میره یعنی مثلا 5 4 3 2 1 0 و کاراکتر ها رو چاپ میکنه
---------------------------------------------------
اینجا قرار بر اینه که بیشتر سوال و راه حل ببینیم و با نکات ریز آشنا بشیم . خیلی وقتا راهایی هست که یا نمیدونیم یا تو اون لحظه به ذهنمون نمیاد و ...
پس دیگه توضیح مفصل برای کدها داده نخواهد شد
-------------------------------------------------
نقل قول:
حلقه ی For از روی While ساخته شده، یعنی حالت خاصی از While هست.
با قسمت دوم موافقم ولی با قطعیتی که تو قسمت اول وجود داره کمی مشکل دارم .
1- فقط تو پایتون اینجوره ؟
2- یعنی کامپایلر و یا مفسر کد for رو به while تبدیل میکنه ???? :متفکر: منبع ؟؟
نقل قول:
دوستان سوالات رو کمی پیچیده تر کنن ( استفاده از keyword های بیشتری از زبان منظورمه به طوری که از خود زبان چیز یاد بگیریم )
اگه منظورتون keyword همون چندتا کلمه کلیدی هست که با دستور help >keyword نشون میده که فکر کنم به همین ترتیب که پیش بریم تا چند سوال دیگه تقریبا همشون حداقل یکبار مورد استفاده قرار میگیرن ، اگه نه لطف کنید کمی بیشتر توضیح بدید ممنون میشم
به عنوان مثال همین سوال قبل 6-7 تا کلمه کلیدی استفاده شده
در مورد سختی سوالات هم ، چشم ،سعی میکنم از این به بعد دو سوال در دو سطح مطرح کنم ولی خداییش سوال هدف دار طرح کردن سخته . احتمال زیاد تا یه چند مدت دیگه سوالاتی که مطرح میکنم خودم هم تو حلش گیر کنم
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
این سوال چطوره ؟
برنامه ای بنویسید که اولویت اعمال در عبارت زیر را بگونه ای تنظیم کند که نتیجه محاسبه عدد 20 شود
3*5+4-1*4/3+1
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
نقل قول:
فقط تو پایتون اینجوره ؟
2- یعنی کامپایلر و یا مفسر کد for رو به while تبدیل میکنه
تا اونجایی که من اطلاع دارم (هر چند اطلاعاتم خیلی ناقصه) دو تا از ساده ترین . ابتدایی ترین دستورات هر پروسسور دستور شرط و دستور پرش هست
یعنی این عبارت که "اگه شرط برقراره، بپر به خط فلان"
و این اساس کار انواع حلقه هاست.
نقل قول:
برنامه ای بنویسید که اولویت اعمال در عبارت زیر را بگونه ای تنظیم کند که نتیجه محاسبه عدد 20 شود
سوال جالبیه!:تشویق:
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
نقل قول:
1- فقط تو پایتون اینجوره ؟
2- یعنی کامپایلر و یا مفسر کد for رو به while تبدیل میکنه ???? منبع ؟؟
کلا در کامپیوتر حلقه وحود نداره و در Assembly تمامی حلقه ها با دو دستور انجام میشه که cmp و دستورات jmp مثل jmp,jae,je,jg,jge,... و آدرس خط کد بوجود میان
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
نقل قول:
نوشته شده توسط
ehp_kz6597
این سوال چطوره ؟
برنامه ای بنویسید که اولویت اعمال در عبارت زیر را بگونه ای تنظیم کند که نتیجه محاسبه عدد 20 شود
3*5+4-1*4/3+1
میشه یکم بیشتر توضیح بدی؟؟؟
خود برنامه اینقدر امتحان کنه تا ببینه چطور جوابش 20 میشه یا اینکه عبارت رو اینجوری بنویسیم
3*5+(((4-1)*4)/3)+1
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سلام
دقیقا.
برنامه این عبارت را دریافت میکنه و حالت های مختلف رو تست میکنه و هر حالتی رو که به جواب 20 رسید با پرانتزها چاپ میکنه . یعنی این عبارتی که شما نوشتی خروجی کدشما است.
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
خدمت شما:
یه عبارت ریاضی (شامل جمع، ضرب، منها، تقسیم، باقیمانده و توان) بهش میدی، بعد حاصل نهایی رو هم میدی، بهتون عبارت درست رو میده
فقط نکته ای که مهمه اینه که مثلا عبارت مورد نظر در سوال رو به صورت "3 * 5 + 4 - 1 * 4 / 3 + 1" بدید نه به صورت "3*5+4-1*4/3+1" (منظورم فاصله هاشه)
در ضمن تشکر میکنم از آقای ehp_kz6597 بابت این سوال که برا اولین بار در عمر چند ساله برنامه نویسیم، اهمیت توابع بازگشتی رو بهم نشون داد
پایتون 2.7 - سیستم عامل تست شده: سیمبین
def hesab(lst,num,k=0):
global olaviat
if len(lst)<=3:
if eval(''.join(lst))==num:
return True
else:
return False
else:
for i in range(0,len(lst)-2,2):
A=lst[:i]
A.append(str(eval(''.join(lst[i:i+3]))))
A.extend(lst[i+3:])
if hesab(A,num,k+1):
olaviat[k]=i
return True
x=str(raw_input('ebarat ra vared konid'))
n=int(input('hasel ra vared konid'))
a=x.split()
olaviat=((len(a)-3)/2)*[0]
if hesab(a,n):
for i in olaviat:
a[i]='(' + a[i] + a[i+1] + a[i+2] + ')'
del(a[i+1:i+3])
print ''.join(a)
else:
print 'Nashod......'
منتظر جوابهای دیگر عزیزان هم هستم
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سلام
جناب asedjavad
نقل قول:
olaviat=((len(a)-3)/2)*[0]
تو py3 با خطای زیر مواجه شدم . تو py2 بدون مشکل اجرا شد ؟
متن خطا :TypeError: can't multiply sequence by non-int of type 'float'
اصلا اون [0] که نوشتین مربوط به چیه . به نظر میاد که به خونه صفری اشاره داره ولی برای کدوم متغیر؟
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win
32
>>> 4*[0]
[0, 0, 0, 0]
>>> 6*['a']
['a', 'a', 'a', 'a', 'a', 'a']
فکر کنم با این مثال معلوم میشه!
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سلام
خب الان واضح شد. خیلی ممنون
ولی انگار اون خط 20 تو py3 مشکل داره که همون خطایی که در پست قبل اشاره کردم رخ میده
دوستانی که از py3 استفاده میکنن خط 20 رو به صورت زیر تغییر بدن
olaviat=(int((len(a)-3)/2))*[0]
یعنی نتیجه اون تقسیم باید یه عدد صحیح باشه تا جواب بدست بیاد . در غیر اینصورت مثل این میمونه که بگی آقا دوتا و نیم [0] میخوام
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
2- تابع
سلام دوستان
در این پست و پست های آینده به مبحث توابع می پردازیم (هرچند سوال قبل هم به وسیله تابع پیاده سازی شد ولی فکر کنم برای شروع سنگین بود)
برنامه ای بنویسید که با گرفتن طول اضلاع یک مثلث قائم الزاویه ، مقادیر سینوس ، کسینوس ، تانژانت و کتانژانت زوایای غیر قائم را بدست آورد. / از تابع استفاده کنید
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
سعی کردم از هر دو نوع روش معرفی تابع استفاده کنم:
برنامه دو ضلع زاویه مورد نظر رو میگیره و چیزایی که خواسته بودید، تحویل میده:
پایتون 2.7 ویندوز:
def zele3(a,b):
a=float(a)
b=float(b)
if a>b:
return pow(a**2-b**2,0.5)
else:
return pow(b**2-a**2,0.5)
sin=lambda x1,x2:zele3(x1,x2)/max(x1,x2)
cos=lambda x1,x2:float(min(x1,x2))/max(x1,x2)
tan=lambda x1,x2:sin(x1,x2)/cos(x1,x2)
cot=lambda x1,x2:1/tan(x1,x2)
x=input("2 Zel'e zavieye morede nazar ra vared konid:\n mesal: 3,5\n")
print "sin: %f"%sin(x[0],x[1])
print "cos: %f"%cos(x[0],x[1])
print "tan: %f"%tan(x[0],x[1])
print "cot: %f"%cot(x[0],x[1])
-
نقل قول: تاپیک سورسهای موضوعی پایتون (آموزشی)
در حاشیه :
http://codingbat.com/python
اینجا هم حتما یه سری بزنید میتونید مسائل رو به صورت انلاین حل کنید و نتیجه رو ببینید