مثال
فیلتر کردن اعضای آرایه بر اساس تابع myFunc و فقط برگرداندن اعضایی از آرایه که بزرگتر یا مساوی با 18 هستند:
ages = [5, 12, 17, 18, 24, 32]
def myFunc(x):
if x < 18:
return False
else:
return True
adults = filter(myFunc, ages)
for x in adults:
print(x)
توضیحات
تابع filter()
یک شیء آرایه ای (مثل لیست و …) را در ورودی می گیرد و اعضای آن را بر اساس یک تابع دیگر فیلتر می کند و آرایه ای جدید را در خروجی برمی گرداند.
سینتکس
filter(function, iterable)
سلام
لطفآ راهنمایی بفرمایید چه جوری میشه حروف صدادار با دستور فیلتر حذف کرد
با تشکر
سلام.
در تابع ورودی فیلتر، میتونید مشخص کنید که اگر حرف جزء حروف صدادار باشه حذف بشه:
سلام lین برنامه میخواهد 10 اسم بگیره و استاندار سازی اسامی انجام بده و بعد اسامی به صورت عمودی چاپ بکنه. ولی دو تا مشکل دار 1- استاندار سازی انجام نمیکنه 2- در خروجی 9 اسم چاپ می کنه میشه لطفاّ راهنمایی بکنید.
سلام.
چند مورد وجود داره:
1- در خط 3 متغیر y رو برابر با y = name.capitalize() قرار دادید و در ادامه از همون متغیر در حلقه استفاده کردید که صحیح نیست.
2- list.capitalize(): داده list متدی به اسم capitalize نداره.
3- متغیر count یکبار مقدار اولیه 0 گرفته و دیگه تغییری نکرده پس شرط if count == 10: هیچوقت صحیح نمیشه. البته اصلا نیازی هم به متغیر count نیست چون شمارش از طریق خود حلقه کنترل میشه.
در نتیجه مشکل از اینجاست که اولاً شما متد capitalize رو فقط روی اولین اسم اعمال کردید که نتیجه رو توی متغیر y ریختید که بی استفاده است و متد capitalize روی بقیه اسم ها اعمال نشده. در نتیجه درون حلقه باید این متد رو روی تک تک اسم ها قبل از اضافه کردن به لیست اعمال کنید: list.append(name.capitalize)
ثانیاً در حلقه دستور name = str(input()) بعد از دستور append اومده به همین دلیل آخرین اسمی که در ورودی دریافت می کنید وارد لیست نمیشه برای همین لیست شما 9 اسم داره.
اصلاحیات:
1- به این 3 خط در ابتدای کد نیازی ندارید و می تونید مستقیماً حلقه رو شروع کنید:
2- اگر این سه خط رو حذف کنیم برای جبران حلقه رو از 0 شروع می کنیم که 10 تا شمارش تکمیل بشه.
3- جای دو خط اول درون حلقه رو تغییر میدیم تا تمام اسم ها درون لیست ذخیره بشن.
4- متد capitilize رو روی تک تک اسم ها اعمال می کنیم:
به مناسبت عید نوروز سه دوست قدیمی می خواهند همدیگر را ملاقات کنند. آذرمهر، آذرگون و مهرآئین قصد دارند در یک نقطه همدیگر را ملاقات کنند. منزل این سه نفر روی خط راست قرار دارد (محور xها) خانه ی آذرمهر در نقطه ی x1 قرار دارد، خانه ی آذرگون در نقطه ی x2 قرار دارد و خانه ی مهرآئین در نقطه ی x3 قرار دارد. آنها در مجموع می خواهند کمترین مسافت را طی کنند. با در دست داشتن x1 x2 x3 کمترین مسافتی که این سه در مجموع باید طی کنند تا در یک نقطه همدیگر را ملاقات کنند را محاسبه کنید. لطفا در صورتی که جواب عدد صحیح شد آن را بدون نقطه ی عدد اعشاری چاپ کنید مثلا در نمونه ی زیر اگر چاپ کنید 6.0 غلط است.
دقت کنید که مسافت مورد نظر است نه مکانی که قرار است همدیگر را ملاقات کنند.
ورودی نمونه:
6 9 10
خروجی نمونه:
4
سلام من کد زیر اشکال دارم و if اجرا نمی شود لطفا راهنمایی کنید.
adad = input()
list = adad.split()
print(list)
x1 = list[0]
x2 = list[1]
x3 = list[2]
x1 = int(x1)
x2 = int(x2)
x3 = int(x3)
if x1 > x2 and x2 > x3:
print(list)
#x1 = list[0]
#x2 = list[1]
#x3 = list[2]
#x1 = int(x1)
#x2 = int(x2)
#x3 = int(x3)
print(x1)
print(x2)
print(x3)
b = max(list)
print (b)
k = min(list)
kamtarin_masafat = b - k
print(kamtarin_masafat)
else:
list.sort()
x1 = list[0]
x2 = list[1]
x3 = list[2]
x1 = int(x1)
x2 = int(x2)
x3 = int(x3)
#print (b)
#print (k)
kamtarin_masafat = (x3-x2) + (x2-x1)
print(kamtarin_masafat)