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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: یه سوال پایتونی توسط یه مبتدی.  (دفعات بازدید: 5152 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین oostaa

  • Jr. Member
  • *
  • ارسال: 91
  • جنسیت : پسر
یه سوال پایتونی توسط یه مبتدی.
« : 03 آبان 1394، 06:26 ب‌ظ »
سلام دوستای گلم  .
من تو اوبونتو میخوام کارایی که تو پایین اوردمو روی یه فایل تکست که 5تا ستون و 100000 تا ردیف داره انجام بدم . اونطوری که فهمیدم این کارا رو پایتون میتونه راحت انجام بده . اگه کسی بتونه کمکم کنه ازش حسابی ممنون میشم  . #-


1.سطرهایی که ستون دومشان برابر است با 1 حذف شوند.
2. از سطرهای باقیمانده ،فقط 4000 تا سطر باقی بمانند و بقیه حذف شوند.
3.از بین سطرهایی که باقی مانده اند،سطری که ردیف پنجم آن بیشترین مقدار را دارد ،انتخاب و نمایش داده شود .
4.عدد ستون اول سطری که در گام 3 همین الگوریتم انتخاب شد منهای 4000 شود و نتیجه نمایش داده شود .

ممنونم ازتون . بسیار.


« آخرین ویرایش: 03 آبان 1394، 10:44 ب‌ظ توسط oostaa »

آفلاین koosha

  • Hero Member
  • *
  • ارسال: 734
  • جنسیت : پسر
پاسخ : یه کمک کوچولوی چن خطی . در پایتون .
« پاسخ #1 : 03 آبان 1394، 06:34 ب‌ظ »
میتونید از ابزار های خط فرمان استفاده کنید .
اینها ابزار هایی هستند که میتونند کمکتون بکنند :
cut , tail ,
GNU/Linux
Debian8
I3 WM

آفلاین Geek

  • High Hero Member
  • *
  • ارسال: 1116
  • جنسیت : پسر
  • The answer to life the universe and everything: 42
پاسخ : یه کمک کوچولوی چن خطی . در پایتون .
« پاسخ #2 : 03 آبان 1394، 06:35 ب‌ظ »
میشه یه نمونهٔ کوچیک از فایلی رو که می‌فرمایید ضمیمه کنید؟ اینطوری راحت‌تر میشه برنامه رو نوشت.

آفلاین فاروق

  • Hero Member
  • *
  • ارسال: 992
  • جنسیت : پسر
  • <شعار>این یک شعار است</شعار>
    • تارنمای فاروق
پاسخ : یه کمک کوچولوی چن خطی . در پایتون .
« پاسخ #3 : 03 آبان 1394، 08:17 ب‌ظ »
به زبان فنگلیش بنویس هیچی نفهمیدم. یا اعداد رو به حروف بنویس
http://pcworms.blog.ir
بعد از بررسی پست های قدیمیم، فکر میکنم یک عذرخواهی بدهکارم! معذرت میخوام و اگر اشتباه کردم مستقیم و روشن راهنمایی کنید تا تکرار نکنم.
کانال IRC

آفلاین oostaa

  • Jr. Member
  • *
  • ارسال: 91
  • جنسیت : پسر
پاسخ : یه کمک کوچولوی چن خطی . در پایتون .
« پاسخ #4 : 03 آبان 1394، 08:21 ب‌ظ »
میشه یه نمونهٔ کوچیک از فایلی رو که می‌فرمایید ضمیمه کنید؟ اینطوری راحت‌تر میشه برنامه رو نوشت.
یه نمونه از فایل به شکل زیره :

1  1  0 0 0
2  1 0.358  0.123  1
3  2  0.963  1  0.526
4  1  0.259  0.213  0.140
5  2  0.159  0.351  0.256
6  2  0.258 0.036  0.321
7  2  0.142  1.200  0.651
8  1  0.359  0.142  0.395
9  1  0.126  0.263 0.259
10  1  0.490  0.891 0.984
...

خود فایل حدود هفتاد گیگه .  ](*,)

آفلاین HSN6

  • Hero Member
  • *
  • ارسال: 866
  • جنسیت : پسر
  • یک راَکتیست اسپرانتیست پایتونیست گودوئیست!
    • بلاگ شخصی
پاسخ : یه کمک کوچولوی چن خطی . در پایتون .
« پاسخ #5 : 03 آبان 1394، 10:09 ب‌ظ »
برای جدا کردن اول از \n برای خطوط و از دوتا فاصله برای مقادیر سطرها استفاده کن. (حتماً می‌دونی که تابع جداکردن splitـه…) و با دوتا حلقه که یکی توی اون یکیه پیمایش کن و دیگه بقیه‌ش کاری نداره.

آفلاین oostaa

  • Jr. Member
  • *
  • ارسال: 91
  • جنسیت : پسر
پاسخ : یه کمک کوچولوی چن خطی . در پایتون .
« پاسخ #6 : 03 آبان 1394، 10:20 ب‌ظ »
برای جدا کردن اول از \n برای خطوط و از دوتا فاصله برای مقادیر سطرها استفاده کن. (حتماً می‌دونی که تابع جداکردن splitـه…) و با دوتا حلقه که یکی توی اون یکیه پیمایش کن و دیگه بقیه‌ش کاری نداره.

حسین اخه قضیه اینه که من اولین باریه که کارم به پایتون افتاده . و مشکل اینجاس که کارم عجله ایه و فرصت یادگرفتنشو هم ندارم . سریع باید به استاد گزارش داده ها رو بدم . وگرنه خودمم دوس دارم که پایتون یاد بگیرم . این چیزی که گفتی من ازش سر در نمیارم . متاسفانه . میشه بیشتر توضیح بدی ؟ممنونم ازت .  ](*,)

آفلاین فاروق

  • Hero Member
  • *
  • ارسال: 992
  • جنسیت : پسر
  • <شعار>این یک شعار است</شعار>
    • تارنمای فاروق
پاسخ : یه کمک کوچولوی چن خطی . در پایتون .
« پاسخ #7 : 03 آبان 1394، 10:22 ب‌ظ »
نگید کمک کوچولی چند خطی.
این یعنی کاری که برنامه نویس واستون انجام میده کوچولو هست و ارزش چندانی نداره.
البته این نظر منه.
http://pcworms.blog.ir
بعد از بررسی پست های قدیمیم، فکر میکنم یک عذرخواهی بدهکارم! معذرت میخوام و اگر اشتباه کردم مستقیم و روشن راهنمایی کنید تا تکرار نکنم.
کانال IRC

آفلاین oostaa

  • Jr. Member
  • *
  • ارسال: 91
  • جنسیت : پسر
پاسخ : یه کمک کوچولوی چن خطی . در پایتون .
« پاسخ #8 : 03 آبان 1394، 10:37 ب‌ظ »
نگید کمک کوچولی چند خطی.
این یعنی کاری که برنامه نویس واستون انجام میده کوچولو هست و ارزش چندانی نداره.
البته این نظر منه.
فاروق عزیز منظورم کوچیک بودن برنامه س . نه کوچیک بودن ارزش کار بچه ها . هر کسیکه به من کمک کنه قطعا منو مدیون خودش کرده . بدون شک . 
اما به خاطر اینکه سو برداشت نشه تیتر سوالو عوض میکنم .  ;)

آفلاین احمد حمزه ئی

  • Jr. Member
  • *
  • ارسال: 66
  • جنسیت : پسر
    • Github
پاسخ : یه سوال پایتونی توسط یه مبتدی.
« پاسخ #9 : 03 آبان 1394، 10:48 ب‌ظ »
i = 0
max_num = 0
output = open('out.txt', 'w')

for line in open('file.txt'):
    s1, s2, s3, s4, s5, *tail = map(float, line.split())
   
    if s2 == 1: continue
   
    i += 1
    if i == 4000: break

    if s5 > max_num:
        max_num = s5
        found_line = line

    output.write(line)

output.close()
print('OUT3:', found_line.rstrip())
chu = found_line.split()
print('OUT4:', float(chu[0]) - 4000)

ورودی file.txt
خروجی out.txt

برای اون داده هایی که گذاشتید خروجی برنامه:
OUT3: 7  2  0.142  1.200  0.651
OUT4: -3993.0

و محتویات out.txt
3  2  0.963  1  0.526
5  2  0.159  0.351  0.256
6  2  0.258 0.036  0.321
7  2  0.142  1.200  0.651

آفلاین oostaa

  • Jr. Member
  • *
  • ارسال: 91
  • جنسیت : پسر
پاسخ : یه سوال پایتونی توسط یه مبتدی.
« پاسخ #10 : 04 آبان 1394، 12:32 ق‌ظ »
i = 0
max_num = 0
output = open('out.txt', 'w')

for line in open('file.txt'):
    s1, s2, s3, s4, s5, *tail = map(float, line.split())
   
    if s2 == 1: continue
   
    i += 1
    if i == 4000: break

    if s5 > max_num:
        max_num = s5
        found_line = line

    output.write(line)

output.close()
print('OUT3:', found_line.rstrip())
chu = found_line.split()
print('OUT4:', float(chu[0]) - 4000)

ورودی file.txt
خروجی out.txt

برای اون داده هایی که گذاشتید خروجی برنامه:
OUT3: 7  2  0.142  1.200  0.651
OUT4: -3993.0

و محتویات out.txt
3  2  0.963  1  0.526
5  2  0.159  0.351  0.256
6  2  0.258 0.036  0.321
7  2  0.142  1.200  0.651
احمد اقا ممنونم ازت . خیلی خیلی لطف کردی. دمت گرم .

آفلاین فاروق

  • Hero Member
  • *
  • ارسال: 992
  • جنسیت : پسر
  • <شعار>این یک شعار است</شعار>
    • تارنمای فاروق
پاسخ : یه سوال پایتونی توسط یه مبتدی.
« پاسخ #11 : 04 آبان 1394، 03:30 ب‌ظ »
خواننده تیتر رو میبینه نه دلت رو.
خوبه حالا سوء برداشت نمیشه.
http://pcworms.blog.ir
بعد از بررسی پست های قدیمیم، فکر میکنم یک عذرخواهی بدهکارم! معذرت میخوام و اگر اشتباه کردم مستقیم و روشن راهنمایی کنید تا تکرار نکنم.
کانال IRC

آفلاین oostaa

  • Jr. Member
  • *
  • ارسال: 91
  • جنسیت : پسر
پاسخ : یه سوال پایتونی توسط یه مبتدی.
« پاسخ #12 : 04 آبان 1394، 06:13 ب‌ظ »
سلام اقای حمزه ئی
کد بالایی رو همه ی فایلا  کار میکنه اما برا بعضی از اونا خطا میده . نمونه ی فایلو زیر همین جا اپلود کردم .
خطاش به صورت زیره  :
mhmud@mhmud-X55VD:~/Desktop/python$ python3 p.py
Traceback (most recent call last):
  File "p.py", line 20, in <module>
    print('OUT3:', found_line.rstrip())
NameError: name 'found_line' is not defined
فک میکنید مشکل کجاس ؟ بازم ممنون  .
« آخرین ویرایش: 04 آبان 1394، 06:15 ب‌ظ توسط oostaa »

آفلاین احسان فعالپور

  • Sr. Member
  • *
  • ارسال: 408
  • جنسیت : پسر
پاسخ : یه سوال پایتونی توسط یه مبتدی.
« پاسخ #13 : 04 آبان 1394، 06:31 ب‌ظ »
لابد توی یکی از سطر ها تون ۵امی وجود نداره
عضو ارشد فدراسیون بیکاران ایران FBI

آفلاین oostaa

  • Jr. Member
  • *
  • ارسال: 91
  • جنسیت : پسر
پاسخ : یه سوال پایتونی توسط یه مبتدی.
« پاسخ #14 : 04 آبان 1394، 07:54 ب‌ظ »
لابد توی یکی از سطر ها تون ۵امی وجود نداره
فک نمیکنم . چون این فایل توسط نرم افزار شبیه سازی  ایجاد شده .