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

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

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


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

نویسنده موضوع: حذف اولین کلمه از خروجی for در پایتون  (دفعات بازدید: 1219 بار)

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

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
سلام

فرض کنیم من یه اسکریپت دارم که ممکنه بی نهایت آرگیومنت بهش بدیم موقع اجرا, حالا یه حلقه ی for دارم که هر چی آرگیومنت میگیره را خروجیش را چاپ کنه بیرون, مثل این:

#/bin/python3

# Importing Needed Libraries
import sys

# Checking Arguments
for arg in sys.argv:
     print(arg)

حالا با این دستور اسکریپت را اجرا میکنم و همون موقع هم یه سری آرگیومنت بهش میدم:

python3 folan.py arg1 arg2 arg3

و خروجی میشه:

folan.py
arg1
arg2
arg3

ولی من میخوام folan.py یا در واقع argv[0] چاپ نشه و بقیه اش چاپ بشه! که میشه:

arg1
arg2
arg3

حالا چه تغییری توی for بدم که اولین کلمه را چاپ نکنه ولی بقیه را چاپ کنه؟
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : حذف اولین کلمه از خروجی for در پایتون
« پاسخ #1 : 18 آذر 1395، 10:17 ق‌ظ »
داداش خودت همه کارا رو کردی دیگه چی می خوای  ;)
فقط همون طور که گفتی کافیه به پایتون بگی آرگومان 0 رو پرینت نکن :
import sys
for arg in sys.argv:
     if arg != sys.argv[0]:
          print(arg)

راه دوم :
import sys
sys.argv.remove(sys.argv[0])
for arg in sys.argv:
     print(arg)

راه سوم و اما بهترین راه (چون قسمتی از لیست حذف نمی شه و هم چنین کم ترین تغییر رو انجام می دیم و البته کمترین کد رو هم می نویسیم):
import sys
for arg in sys.argv[1:]:
     print(arg)

فقط کافیه به چشم یه لیست بهش نیگاه کنی فقط همین !
« آخرین ویرایش: 18 آذر 1395، 10:39 ق‌ظ توسط ali76 »

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : حذف اولین کلمه از خروجی for در پایتون
« پاسخ #2 : 18 آذر 1395، 02:26 ب‌ظ »
ممنون :) 6 ماهی می‌شد سراغ پایتون نرفته بودم برای همین سوالات مسخره و مشکل سینتکسی برام پیش اومد :) 
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین ارباب!

  • Sr. Member
  • *
  • ارسال: 448
  • جنسیت : پسر
پاسخ : حذف اولین کلمه از خروجی for در پایتون
« پاسخ #3 : 19 آذر 1395، 07:37 ب‌ظ »
همون راه سوم که پیشنهاد دادن راه خوبی هست.. راه دوم هم خوبه.. ولی راه اول مشکل داره.. اگه بقیه ی آرگومان ها با آرگومان اول برابر باشن برنامه در نظر نمی گیره اونا رو.. مثلا python test.py test.py
Void Linux + XFCE

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
پاسخ : حذف اولین کلمه از خروجی for در پایتون
« پاسخ #4 : 19 آذر 1395، 08:26 ب‌ظ »
بله داداش حق با شماست  :)
اگه بخوایم قسمت یکو اصلاح کنیم به طوری که همون فرم for و if باقی بمونه می تونیم این شکلی بنویسیم :
import sys
temp = 0
for arg in sys.argv:
     temp += 1
     if temp != 1:
          print(arg)
در مورد راه دوم هم راستش خودم ازش اصلا خوشم نمیاد چون یکی از آرگومان ها رو از دست می دیم ولی راه سوم واقعا بهترین راهه  ;)

آفلاین فاروق

  • Hero Member
  • *
  • ارسال: 992
  • جنسیت : پسر
  • <شعار>این یک شعار است</شعار>
    • تارنمای فاروق
پاسخ : حذف اولین کلمه از خروجی for در پایتون
« پاسخ #5 : 24 آذر 1395، 04:53 ب‌ظ »
import sys
for num, val in enumerate(sys.argv):
    if num != 0: print(val)
http://pcworms.blog.ir
بعد از بررسی پست های قدیمیم، فکر میکنم یک عذرخواهی بدهکارم! معذرت میخوام و اگر اشتباه کردم مستقیم و روشن راهنمایی کنید تا تکرار نکنم.
کانال IRC