خروجی این کد پایتون چی میشه ؟
data = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
def fun(m):
v = m[0][0]
for row in m:
for element in row:
if v < element: v = element
return v
print(fun(data[0]))
٨ پاسخ
- این کد پایتون یک عملکرد با نام "fun" تعریف میکند که به عنوان ورودی یک ماتریس دوبعدی میگیرد و بزرگترین عنصر را در آن ماتریس پیدا میکند و آن را برمیگرداند. سپس این تابع روی اولین زیرلیست دادهها (data[0]) فراخوانی میشود.
- با توجه به دادههای ورودی، این کد بررسی میکند که در زیرلیست اول اعضایی مانند [1, 2] و [3, 4] وجود دارد و بزرگترین عضو از این لیستها کدام یک است. سپس این بزرگترین مقدار (در این مورد 4) به عنوان خروجی چاپ میشود.
- بنابراین، خروجی این کد برای ورودی data[0] برابر با 4 خواهد بود.
In your code
data = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
subsequently data[0], that is passed to the function as m, is
[[1, 2], [3, 4]]
then
v = m[0][0]
is
1
Then your loop
for row in m:
for element in row:
if v < element: v = element
Here you're iterating over [[1, 2], [3, 4]] , and then over each element in nested list [1, 2] and then [3, 4], and trying to compare each number in the list to 1, so v becomes 2, then 3 and then 4, so upon the code prints
4
هدف پیدا کردن بزرگترین مقدار در اولین زیرلیست 2 بعدی در یک لیست 3 بعدی است.
1) متغیر data یک لیست 3 بعدی است، یعنی یک لیست از لیستهای 2 بعدی (هر لیست 2 بعدی یک زیرلیست در لیست 3 بعدی است).
2) تابع fun(m) تعریف شده است، که یک لیست 2 بعدی m را به عنوان ورودی میگیرد.
3) درون تابع fun(m):
الف - مقدار اولیه v برابر با اولین عنصر اولین زیرلیست m تنظیم میشود، که برابر با 1 است.
ب - سپس تابع از هر سطر (زیرلیست) در m و هر عنصر در آن سطر عبور میکند.
ج - برای هر عنصر، آن بررسی میکند که آیا مقدار v کمتر از این عنصر است. اگر چنین بود، v را به مقدار این عنصر بهروز میکند.
د _ در نهایت، تابع بزرگترین مقدار را که در v ذخیره شده است بازمیگرداند.
4) سپس کد fun(data[0]) را فراخوانی میکند، که به این معنی است که اولین لیست 2 بعدی [[1, 2], [3, 4]] از متغیر data را به تابع fun(m) ارسال میکند.
5) همونطور که گفتم خروجی این کد 4 خواهد بود که بزرگترین مقدار در اولین لیست 2 بعدی [[1, 2], [3, 4]] است.
خیر خروجی 4 هست . دوست
در نهایت عدد ۴ چاپ میشود.
پاسخ این است که خروجی کد پایتون بالا عدد ۲ است.
علت این است که :
۱. функسیون fun یک ماتریس ۲ بعدی به عنوان ورودی دریافت می کند.
۲. در ابتدا، v را با اولین عنصر اولین ردیف، که برابر با ۱ است، درپژشتن می دهد.
۳. سپس، روی هر ردیف ماتریس و هر عنصر در ردیف آن_iterates می شود.
۴. اگر مقدار فعلی v کمتر از عنصر فعلی باشد، آن را به عنوان عنصر فعلی درپژشتن می دهد.
۵. در این حالت، چون ۱ کمتر از ۲ است، v به ۲ تغییر می دهد.
۶. چون هیچ عنصری برای مقایسه باقی نمانده است، فونشن return ۲ را بازگردانده است.
پس وقتی print(fun(data[0])) را صدا می زنی، عدد ۲ را چاپ می کند.
2
در حرکت اول مقدار v رو برابر با مقدار المان اول از المان اول لیست قرار میده. در نهایت با 2 حلقه ی لوپ روی المان های لیست اصلی و یکی هم روی هر المان لیست دوم یک شرط رو چک میکنه. در نهایت 2 رو return میکنه!
خروجی این کد پایتون 8 خواهد بود.
توضیح کد:- مقادیر:
- data یک لیست از دو لیست دیگر است که هر کدام شامل دو عدد می باشد.
- fun یک تابع است که یک لیست از لیست ها را به عنوان ورودی (m) دریافت می کند.
- عملکرد تابع fun:
- متغیر v به اولین عنصر اولین لیست در m (یعنی 1) اختصاص داده می شود.
- سپس، یک حلقه for روی تمام لیست های m و سپس روی تمام عناصر هر لیست پیمایش می کند.
- در داخل حلقه for، اگر عنصری بزرگتر از v باشد، v به آن عنصر تغییر می یابد.
- در نهایت، تابع v را که در حال حاضر بزرگترین عنصر در تمام لیست های تو در m است، برمی گرداند.
- چاپ خروجی:
- کد print(fun(data[0])) تابع fun را با اولین لیست از data (یعنی [1, 2]) فراخوانی می کند.
- تابع fun بزرگترین عنصر در [1, 2] را پیدا می کند که 2 است.
- بنابراین، print عدد 8 را چاپ می کند.