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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: Nelliel در 18 آذر 1395، 09:48 ق‌ظ

عنوان: حذف اولین کلمه از خروجی for در پایتون
ارسال شده توسط: Nelliel در 18 آذر 1395، 09:48 ق‌ظ
سلام

فرض کنیم من یه اسکریپت دارم که ممکنه بی نهایت آرگیومنت بهش بدیم موقع اجرا, حالا یه حلقه ی 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 بدم که اولین کلمه را چاپ نکنه ولی بقیه را چاپ کنه؟
عنوان: پاسخ : حذف اولین کلمه از خروجی for در پایتون
ارسال شده توسط: علی رزم دیده در 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)

فقط کافیه به چشم یه لیست بهش نیگاه کنی فقط همین !
عنوان: پاسخ : حذف اولین کلمه از خروجی for در پایتون
ارسال شده توسط: Nelliel در 18 آذر 1395، 02:26 ب‌ظ
ممنون :) 6 ماهی می‌شد سراغ پایتون نرفته بودم برای همین سوالات مسخره و مشکل سینتکسی برام پیش اومد :) 
عنوان: پاسخ : حذف اولین کلمه از خروجی for در پایتون
ارسال شده توسط: ارباب! در 19 آذر 1395، 07:37 ب‌ظ
همون راه سوم که پیشنهاد دادن راه خوبی هست.. راه دوم هم خوبه.. ولی راه اول مشکل داره.. اگه بقیه ی آرگومان ها با آرگومان اول برابر باشن برنامه در نظر نمی گیره اونا رو.. مثلا python test.py test.py
عنوان: پاسخ : حذف اولین کلمه از خروجی for در پایتون
ارسال شده توسط: علی رزم دیده در 19 آذر 1395، 08:26 ب‌ظ
بله داداش حق با شماست  :)
اگه بخوایم قسمت یکو اصلاح کنیم به طوری که همون فرم for و if باقی بمونه می تونیم این شکلی بنویسیم :
import sys
temp = 0
for arg in sys.argv:
     temp += 1
     if temp != 1:
          print(arg)
در مورد راه دوم هم راستش خودم ازش اصلا خوشم نمیاد چون یکی از آرگومان ها رو از دست می دیم ولی راه سوم واقعا بهترین راهه  ;)
عنوان: پاسخ : حذف اولین کلمه از خروجی for در پایتون
ارسال شده توسط: فاروق در 24 آذر 1395، 04:53 ب‌ظ
import sys
for num, val in enumerate(sys.argv):
    if num != 0: print(val)