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

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

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


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

نویسنده موضوع: پیغام خطای invalid syntax برای print در python3.5 (حل شد)  (دفعات بازدید: 5019 بار)

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

آفلاین farid.t

  • Jr. Member
  • *
  • ارسال: 64
  • جنسیت : پسر
پیغام خطای invalid syntax برای print در python3.5 (حل شد)
« : 18 اردیبهشت 1395، 01:02 ق‌ظ »
سلام. در محیط vim زمان اجرا کردن کد با ارور invalid syntax برای تابع print برخورد کردم که متاسفانه نتونستم رفعش کنم. ممنوم اگه بتونید کمک کنید. از پایتون ورژن ۳.۵ استفاده می‌کنم. لازمه ذکر کنم که این خطا فقط در vim اتفاق میفته و در ادیتور خود پایتون بدون خطا اجرا میشه. ارور هم مربوط به لاین ۳۴ هست.

ویم من هم از python3 پشتیبانی میکنه که عکسش رو گذاشتم.
این کد پایتون هستش:
#!/usr/bin/pyhton3.5
print("\n"*20)


class inclusive_range:
    def __init__(self, *args):
        numargs = len(args)
        if numargs < 1:
            raise TypeError("requiers at leas one argument")
        elif numargs == 1:
            self.stop = args[0]
            self.start = 0
            self.step = 1
        elif numargs == 2:
            (self.start, self.stop) = args
            self.step = 1
        elif numargs == 3:
            (self.start, self.stop, self.step) = args
            pass
        else:
            raise TypeError("expected at most 3 argument,\
                              got {}".format(numargs))

    def __iter__(self):
        i = self.start
        while i <= self.stop:
            yield i
            i += self.step


def main():
    o = inclusive_range(5, 25, 1)
    for i in o:
       print(i, end=' ')
    print("\n")
if __name__ == "__main__":
    main()
« آخرین ویرایش: 18 اردیبهشت 1395، 11:48 ق‌ظ توسط farid.t »

آفلاین 藤沼

  • Sr. Member
  • *
  • ارسال: 414
  • جنسیت : پسر
پاسخ : پیغام خطای invalid syntax برای print در python3.5
« پاسخ #1 : 18 اردیبهشت 1395، 02:22 ق‌ظ »
۱-در خط ۳۴ به‌جای چهارتا فاصله (space) سه‌تاست.
۲-در Vim باید انتخاب‌های tabstop,shiftwidth,softtabstop و expandtab رو تنظیم کنید.
۳-اولین خطی که برای ترجیح مفسر (در زمان اجرا کردن برنامه) استفاده کردید به‌طورکلی نابجاست و می‌باید دستور env رو بنویسید.
۴-برای کاری به این سادگی نیازی به شی‌ءگرایی نیست و تابع‌ها به‌صرفه‌ترند.

کد پیشنهادیِ من برای اینکار:
#!/usr/bin/env python3

def inclusive_range(x, y, z=1):
    return range(x, y + 1, z)

if __name__ == '__main__':
    print(' '.join([str(i) for i in inclusive_range(5, 25, 1)]))


آفلاین farid.t

  • Jr. Member
  • *
  • ارسال: 64
  • جنسیت : پسر
پاسخ : پیغام خطای invalid syntax برای print در python3.5
« پاسخ #2 : 18 اردیبهشت 1395، 10:05 ق‌ظ »
۱-در خط ۳۴ به‌جای چهارتا فاصله (space) سه‌تاست.
۲-در Vim باید انتخاب‌های tabstop,shiftwidth,softtabstop و expandtab رو تنظیم کنید.
۳-اولین خطی که برای ترجیح مفسر (در زمان اجرا کردن برنامه) استفاده کردید به‌طورکلی نابجاست و می‌باید دستور env رو بنویسید.
۴-برای کاری به این سادگی نیازی به شی‌ءگرایی نیست و تابع‌ها به‌صرفه‌ترند.

کد پیشنهادیِ من برای اینکار:
#!/usr/bin/env python3

def inclusive_range(x, y, z=1):
    return range(x, y + 1, z)

if __name__ == '__main__':
    print(' '.join([str(i) for i in inclusive_range(5, 25, 1)]))

سلام. سپاس بابت توجه شما  :)
احتمالا زمانی که کدها رو اینجا گذاشتم این اتفاق رخ داده وگرنه داخل اسکریپت من تمام فاصله‌ها درسته، همچنین میدونیم که پیغام خطای مربوط به ایندینت و پیغام خطای مربوط به سینتکس کاملا متفاوته و هر کودوم برای مورد خودش رخ میده. مثلا خطای مربوط به فاصله یا تو رفتگی یا ایندنت به شکل زیر هست:
IndentationError: expected an indented block
در حالی که خطایی که برای من اتفاق میفته مربوط هستش به سینتکس پرینت همانطور که توی شرح موضوع توضیح دادم!
-------------------------------------------------------------------------------------------------------------

softtabstopو ... در vimrc تنظیم کردم. ولی باز هم مواردی رو که شما گفتید حتما چک می‌کنم  :)

نابجایی مربوط به شبنگ لاین رو متوجه نشدم! چون خیلی وقته دارم با همچین شبنگی کار می‌کنم و مشکلی نداشته. اگه اشتباه نکنم زمانی از شبنگی که شما فرمودید استفاده میشه که اطلاعاتی از مسیر نصب پایتون وجود نداشته برا همین آدرس env میدیم که به اولین پایتون دیفالتی که برخورد کرد اجرا بشه. اتفاقا من همین شبنگ رو هم مطابق چیزی که شما گفتید قبلا قرار داده بودم ولی باز هم ایراد گرفته بود!
این هم لینک مربوط به شبنگ که توسط سایت خود پایتون توضیح داده شده:
https://docs.python.org/3/using/windows.html#shebang-lines

من فقط تمرین شی گرایی رو داشتم با پایتون انجام میدادم و مقصودم نوشتن همچین کدی با استفاده از شی گرایی نبود! آخه من یکم مبتدی هستم. یکم که چه عرض کنم بیشتر از یکم  :D
به هر حال بابت وقتی که گذاشتید و راهنمایی که کردید بسیار سپاسگزارم. منتظر راهنمایی‌های بیشتر شما هستم.

آفلاین farid.t

  • Jr. Member
  • *
  • ارسال: 64
  • جنسیت : پسر
پاسخ : پیغام خطای invalid syntax برای print در python3.5 (حل شد)
« پاسخ #3 : 18 اردیبهشت 1395، 11:59 ق‌ظ »
من برای اجرا شدن کد پایتون با کلید F5 همچین دستوری رو توی فایل vimrc قرار داده بودم!
nnoremap <buffer> <F5> :exec '!python' shellescape(@%, 1)<cr>که مقدار python رو به python3.5 تغییر دادم و مشکل حل شد.
nnoremap <buffer> <F5> :exec '!python3.5' shellescape(@%, 1)<cr>