حلقه ها و دیکشنری ها کمی هم os :)
سلام استاد. ببخشید میشه راهنماییم کنین که چوری وقتی تو اینپوت clear میزنم. بیاد دستور من رو اجرا کنه؟ کلا وقتی میخوام ران کنم ٰمیاد دستور os.system("clear") داخل دیکشنری رو اجرا میکنه :/
ممنون میشم کمک کنین. :)
پاسخ ها
امیرحسین امیری
سلام مهدی جان. خب این طبیعیه. یک تابع رو به عنوان یک مقدار در نظر گرفتی و زمانی که اجرا میکنی در واقع داری کلید های دیکشنری خودت رو مقدار دهی میکنی.
خب اون مقادیر به ترتیب شروع به تعریف شدن میکنن و چون مقدار تو یک تابع هست ، صدا زده میشه! پس خودش رو اجرا میکنه.
حتی اگه تو به جای os.system('clear') بنویسی print('hello') میبینی که دستور پرینت اجرا میشه.
بنا براین توابع زمانی که صدا زده بشن اجرا میشن. مگه اینکه برای اجرا شدنشون شرط قرار بدی(مثلا با دستور if )
حالا با توجه به این موضوع باید توی کدت تغییراتی ایجاد کنی. مثلا توابع رو بیاری زیر مجموعه ی یک شرط قرار بدی.
یا اینکه پرانتز هارو از جلوی توابع پاک کنی و اون هارو زمانی که کلیدشون صدا زده میشه مقدار دهی کنی.
کدت رو اینجور واست ساده و اصلاح میکنم. امیدوارم واست مفید باشه.
commands = {
'clear': os.system,
'print': print,
}
while True:
get = input('enter: ')
if get in commands:
commands[get](get)
else:
print('error')