├── lectures ├── foo.py ├── _static │ ├── lecture_specific │ │ ├── python_advanced_features │ │ │ └── numbers.txt │ │ ├── about_py │ │ │ ├── qs.png │ │ │ ├── career_vf.png │ │ │ ├── bn_density1.png │ │ │ ├── pandas_vs_matlab.png │ │ │ ├── python_vs_matlab.png │ │ │ ├── pytorch_vs_matlab.png │ │ │ └── qs.py │ │ ├── oop_intro │ │ │ ├── global.png │ │ │ ├── local1.png │ │ │ ├── global2.png │ │ │ ├── mutable1.png │ │ │ ├── mutable2.png │ │ │ ├── mutable3.png │ │ │ ├── mutable4.png │ │ │ ├── mutable5.png │ │ │ └── local_return.png │ │ ├── sci_libs │ │ │ └── nfs_ex1.png │ │ ├── getting_started │ │ │ ├── nb.png │ │ │ ├── debug.png │ │ │ ├── nb2.png │ │ │ ├── nb3.png │ │ │ ├── nb6.png │ │ │ ├── nb6a.png │ │ │ ├── nb7.png │ │ │ ├── nb8.png │ │ │ ├── jp_demo.png │ │ │ ├── nb_run.png │ │ │ ├── nb_upload.png │ │ │ ├── nb_wntest2.png │ │ │ ├── editing_vim.png │ │ │ ├── starting_nb.png │ │ │ ├── ipython_shell.png │ │ │ └── debugger_breakpoint.png │ │ ├── need_for_speed │ │ │ ├── matlab.png │ │ │ └── numpy.pdf │ │ ├── pandas │ │ │ ├── pandas_vs_rest.png │ │ │ ├── pandas_share_prices.png │ │ │ ├── pandas_indices_pctchange.png │ │ │ ├── wb_download.py │ │ │ └── data │ │ │ │ ├── test_pwt.csv │ │ │ │ └── ticker_data.csv │ │ ├── workspace │ │ │ ├── extensions.png │ │ │ ├── jupyter_lab.png │ │ │ ├── sine_wave.png │ │ │ ├── vs_code_git.png │ │ │ ├── vs_code_run.png │ │ │ ├── file_browser.png │ │ │ ├── vs_code_home.png │ │ │ ├── jupyter_lab_cmd.png │ │ │ ├── sine_wave_import.png │ │ │ ├── vs_code_kernels.png │ │ │ ├── jupyter_lab_py_run.png │ │ │ ├── vs_code_extensions.png │ │ │ ├── vs_code_run_button.png │ │ │ ├── vs_code_install_ext.png │ │ │ ├── vs_code_terminal_opts.png │ │ │ ├── vs_code_walkthrough.png │ │ │ └── jupyter_lab_py_run_term.png │ │ ├── pandas_panel │ │ │ ├── venn_diag.png │ │ │ └── countries.csv │ │ ├── troubleshooting │ │ │ └── launch.png │ │ ├── matplotlib │ │ │ └── matplotlib_ex1.png │ │ ├── python_by_example │ │ │ ├── pbe_ex2_fig.png │ │ │ └── test_program_1_updated.png │ │ ├── parallelization │ │ │ └── htop_parallel_npmat.png │ │ └── python_foundations │ │ │ └── us_cities.txt │ ├── qe-logo.png │ ├── qe-logo-large.png │ ├── lectures-favicon.ico │ ├── quantecon-logo-transparent.png │ └── includes │ │ ├── lecture_howto_py.raw │ │ └── header.raw ├── images │ ├── about-py │ │ ├── qs.png │ │ ├── career_vf.png │ │ ├── bn_density1.png │ │ └── pytorch_vs_matlab.png │ ├── getting-started │ │ ├── nb.png │ │ ├── nb2.png │ │ ├── nb3.png │ │ ├── nb6.png │ │ ├── nb7.png │ │ ├── nb8.png │ │ ├── debug.png │ │ ├── nb6a.png │ │ ├── jp_demo.png │ │ ├── starting_nb.png │ │ └── debugger_breakpoint.png │ └── python_by_example │ │ ├── pbe_ex2_fig.png │ │ └── test_program_1_updated.png ├── intro.md ├── status.md ├── _toc.yml ├── _config.yml ├── about_py.md ├── functions.md ├── getting_started.md └── python_by_example.md ├── README.md ├── .gitignore ├── environment.yml └── .github ├── dependabot.yml └── workflows ├── cache.yml ├── ci.yml └── publish.yml /lectures/foo.py: -------------------------------------------------------------------------------- 1 | 2 | print("foobar") 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # lecture-python-programming.fa 2 | Lecture Python Programming (Persian - fa) 3 | -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/python_advanced_features/numbers.txt: -------------------------------------------------------------------------------- 1 | prices 2 | 3 3 | 8 4 | 5 | 7 6 | 21 -------------------------------------------------------------------------------- /lectures/_static/qe-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/qe-logo.png -------------------------------------------------------------------------------- /lectures/images/about-py/qs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/about-py/qs.png -------------------------------------------------------------------------------- /lectures/_static/qe-logo-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/qe-logo-large.png -------------------------------------------------------------------------------- /lectures/_static/lectures-favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lectures-favicon.ico -------------------------------------------------------------------------------- /lectures/images/about-py/career_vf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/about-py/career_vf.png -------------------------------------------------------------------------------- /lectures/images/getting-started/nb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/nb.png -------------------------------------------------------------------------------- /lectures/images/getting-started/nb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/nb2.png -------------------------------------------------------------------------------- /lectures/images/getting-started/nb3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/nb3.png -------------------------------------------------------------------------------- /lectures/images/getting-started/nb6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/nb6.png -------------------------------------------------------------------------------- /lectures/images/getting-started/nb7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/nb7.png -------------------------------------------------------------------------------- /lectures/images/getting-started/nb8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/nb8.png -------------------------------------------------------------------------------- /lectures/images/about-py/bn_density1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/about-py/bn_density1.png -------------------------------------------------------------------------------- /lectures/images/getting-started/debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/debug.png -------------------------------------------------------------------------------- /lectures/images/getting-started/nb6a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/nb6a.png -------------------------------------------------------------------------------- /lectures/images/getting-started/jp_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/jp_demo.png -------------------------------------------------------------------------------- /lectures/images/about-py/pytorch_vs_matlab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/about-py/pytorch_vs_matlab.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/about_py/qs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/about_py/qs.png -------------------------------------------------------------------------------- /lectures/_static/quantecon-logo-transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/quantecon-logo-transparent.png -------------------------------------------------------------------------------- /lectures/images/getting-started/starting_nb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/starting_nb.png -------------------------------------------------------------------------------- /lectures/images/python_by_example/pbe_ex2_fig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/python_by_example/pbe_ex2_fig.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/oop_intro/global.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/oop_intro/global.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/oop_intro/local1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/oop_intro/local1.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/sci_libs/nfs_ex1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/sci_libs/nfs_ex1.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/about_py/career_vf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/about_py/career_vf.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/nb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/nb.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/oop_intro/global2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/oop_intro/global2.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/oop_intro/mutable1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/oop_intro/mutable1.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/oop_intro/mutable2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/oop_intro/mutable2.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/oop_intro/mutable3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/oop_intro/mutable3.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/oop_intro/mutable4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/oop_intro/mutable4.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/oop_intro/mutable5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/oop_intro/mutable5.png -------------------------------------------------------------------------------- /lectures/images/getting-started/debugger_breakpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/getting-started/debugger_breakpoint.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/about_py/bn_density1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/about_py/bn_density1.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/debug.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/nb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/nb2.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/nb3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/nb3.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/nb6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/nb6.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/nb6a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/nb6a.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/nb7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/nb7.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/nb8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/nb8.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/need_for_speed/matlab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/need_for_speed/matlab.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/need_for_speed/numpy.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/need_for_speed/numpy.pdf -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/pandas/pandas_vs_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/pandas/pandas_vs_rest.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/extensions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/extensions.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/jupyter_lab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/jupyter_lab.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/sine_wave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/sine_wave.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/vs_code_git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/vs_code_git.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/vs_code_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/vs_code_run.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/jp_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/jp_demo.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/nb_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/nb_run.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/oop_intro/local_return.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/oop_intro/local_return.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/pandas_panel/venn_diag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/pandas_panel/venn_diag.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/troubleshooting/launch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/troubleshooting/launch.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/file_browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/file_browser.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/vs_code_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/vs_code_home.png -------------------------------------------------------------------------------- /lectures/images/python_by_example/test_program_1_updated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/images/python_by_example/test_program_1_updated.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/about_py/pandas_vs_matlab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/about_py/pandas_vs_matlab.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/about_py/python_vs_matlab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/about_py/python_vs_matlab.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/about_py/pytorch_vs_matlab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/about_py/pytorch_vs_matlab.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/nb_upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/nb_upload.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/nb_wntest2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/nb_wntest2.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/matplotlib/matplotlib_ex1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/matplotlib/matplotlib_ex1.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/pandas/pandas_share_prices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/pandas/pandas_share_prices.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/jupyter_lab_cmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/jupyter_lab_cmd.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/sine_wave_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/sine_wave_import.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/vs_code_kernels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/vs_code_kernels.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/editing_vim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/editing_vim.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/starting_nb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/starting_nb.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/jupyter_lab_py_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/jupyter_lab_py_run.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/vs_code_extensions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/vs_code_extensions.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/vs_code_run_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/vs_code_run_button.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/ipython_shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/ipython_shell.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/pandas/pandas_indices_pctchange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/pandas/pandas_indices_pctchange.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/python_by_example/pbe_ex2_fig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/python_by_example/pbe_ex2_fig.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/vs_code_install_ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/vs_code_install_ext.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/vs_code_terminal_opts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/vs_code_terminal_opts.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/vs_code_walkthrough.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/vs_code_walkthrough.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _build/ 2 | __pycache__/ 3 | .DS_Store 4 | dask-worker-space 5 | 6 | .vscode/ 7 | .ipynb_checkpoints/ 8 | .virtual_documents/ 9 | 10 | lectures/mathfoo.py 11 | lectures/mod.py 12 | lectures/test.py -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/workspace/jupyter_lab_py_run_term.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/workspace/jupyter_lab_py_run_term.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/getting_started/debugger_breakpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/getting_started/debugger_breakpoint.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/parallelization/htop_parallel_npmat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/parallelization/htop_parallel_npmat.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/python_by_example/test_program_1_updated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantEcon/lecture-python-programming.fa/main/lectures/_static/lecture_specific/python_by_example/test_program_1_updated.png -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/python_foundations/us_cities.txt: -------------------------------------------------------------------------------- 1 | new york: 8244910 2 | los angeles: 3819702 3 | chicago: 2707120 4 | houston: 2145146 5 | philadelphia: 1536471 6 | phoenix: 1469471 7 | san antonio: 1359758 8 | san diego: 1326179 9 | dallas: 1223229 10 | -------------------------------------------------------------------------------- /lectures/_static/includes/lecture_howto_py.raw: -------------------------------------------------------------------------------- 1 | .. raw:: html 2 | 3 |
4 | 5 | QuantEcon 6 | 7 |
8 | -------------------------------------------------------------------------------- /lectures/_static/includes/header.raw: -------------------------------------------------------------------------------- 1 | .. raw:: html 2 | 3 |
4 | 5 | QuantEcon 6 | 7 |
8 | -------------------------------------------------------------------------------- /environment.yml: -------------------------------------------------------------------------------- 1 | name: quantecon 2 | channels: 3 | - default 4 | dependencies: 5 | - python=3.13 6 | - anaconda=2025.06 7 | - pip 8 | - pip: 9 | - jupyter-book==1.0.4post1 10 | - quantecon-book-theme==0.14.0 11 | - sphinx-tojupyter==0.6.0 12 | - sphinxext-rediraffe==0.2.7 13 | - sphinx-exercise==1.2.1 14 | - sphinxcontrib-youtube==1.4.1 15 | - sphinx-togglebutton==0.3.2 16 | # Author Requirements 17 | - jupyterlab-myst 18 | - jupytext 19 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: github-actions 9 | directory: / 10 | commit-message: 11 | prefix: ⬆️ 12 | schedule: 13 | interval: weekly 14 | -------------------------------------------------------------------------------- /lectures/intro.md: -------------------------------------------------------------------------------- 1 | --- 2 | jupytext: 3 | text_representation: 4 | extension: .md 5 | format_name: myst 6 | kernelspec: 7 | display_name: Python 3 8 | language: python 9 | name: python3 10 | --- 11 | 12 | # Python Programming for Economics and Finance 13 | 14 | This website presents a set of lectures on Python programming for economics and finance. 15 | 16 | This is the first text in the series, which focuses on programming in Python. 17 | 18 | For an overview of the series, see [this page](https://quantecon.org/lectures/) 19 | 20 | ```{tableofcontents} 21 | ``` 22 | 23 | -------------------------------------------------------------------------------- /lectures/status.md: -------------------------------------------------------------------------------- 1 | --- 2 | jupytext: 3 | text_representation: 4 | extension: .md 5 | format_name: myst 6 | kernelspec: 7 | display_name: Python 3 8 | language: python 9 | name: python3 10 | --- 11 | 12 | # Execution Statistics 13 | 14 | This table contains the latest execution statistics. 15 | 16 | ```{nb-exec-table} 17 | ``` 18 | 19 | (status:machine-details)= 20 | 21 | These lectures are built on `linux` instances through `github actions`. 22 | 23 | These lectures are using the following python version 24 | 25 | ```{code-cell} ipython 26 | !python --version 27 | ``` 28 | 29 | and the following package versions 30 | 31 | ```{code-cell} ipython 32 | :tags: [hide-output] 33 | !conda list 34 | ``` -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/pandas/wb_download.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import requests 3 | import pandas as pd 4 | 5 | # == Get data and read into file gd.xls == # 6 | wb_data_query = "http://api.worldbank.org/v2/en/indicator/gc.dod.totl.gd.zs?downloadformat=excel" 7 | r = requests.get(wb_data_query) 8 | with open('gd.xls', 'wb') as output: 9 | output.write(r.content) 10 | 11 | # == Parse data into a DataFrame == # 12 | govt_debt = pd.read_excel('gd.xls', sheet_name='Data', skiprows=3, index_col=1) 13 | 14 | # == Take desired values and plot == # 15 | govt_debt = govt_debt.transpose() 16 | govt_debt = govt_debt[['AUS', 'USA']] 17 | govt_debt = govt_debt[38:] 18 | govt_debt.plot(lw=2) 19 | plt.show() 20 | -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/pandas/data/test_pwt.csv: -------------------------------------------------------------------------------- 1 | "country","country isocode","year","POP","XRAT","tcgdp","cc","cg" 2 | "Argentina","ARG","2000","37335.653","0.9995","295072.21869","75.716805379","5.5788042896" 3 | "Australia","AUS","2000","19053.186","1.72483","541804.6521","67.759025993","6.7200975332" 4 | "India","IND","2000","1006300.297","44.9416","1728144.3748","64.575551328","14.072205773" 5 | "Israel","ISR","2000","6114.57","4.07733","129253.89423","64.436450847","10.266688415" 6 | "Malawi","MWI","2000","11801.505","59.543808333","5026.2217836","74.707624181","11.658954494" 7 | "South Africa","ZAF","2000","45064.098","6.93983","227242.36949","72.718710427","5.7265463933" 8 | "United States","USA","2000","282171.957","1","9898700","72.347054303","6.0324539789" 9 | "Uruguay","URY","2000","3219.793","12.099591667","25255.961693","78.978740282","5.108067988" 10 | -------------------------------------------------------------------------------- /lectures/_toc.yml: -------------------------------------------------------------------------------- 1 | format: jb-book 2 | root: intro 3 | parts: 4 | - caption: Introduction to Python 5 | numbered: true 6 | chapters: 7 | - file: about_py 8 | - file: getting_started 9 | - file: python_by_example 10 | - file: functions 11 | # - file: python_essentials 12 | # - file: oop_intro 13 | # - file: names 14 | # - file: python_oop 15 | # - file: workspace 16 | # - caption: The Scientific Libraries 17 | # numbered: true 18 | # chapters: 19 | # - file: need_for_speed 20 | # - file: numpy 21 | # - file: matplotlib 22 | # - file: scipy 23 | # - file: pandas 24 | # - file: pandas_panel 25 | # - file: sympy 26 | # - caption: High Performance Computing 27 | # numbered: true 28 | # chapters: 29 | # - file: numba 30 | # - file: parallelization 31 | # - file: jax_intro 32 | # - caption: Advanced Python Programming 33 | # numbered: true 34 | # chapters: 35 | # - file: writing_good_code 36 | # - file: python_advanced_features 37 | # - file: debugging 38 | - caption: Other 39 | numbered: true 40 | chapters: 41 | # - file: troubleshooting 42 | - file: status 43 | -------------------------------------------------------------------------------- /.github/workflows/cache.yml: -------------------------------------------------------------------------------- 1 | name: Build Cache [using jupyter-book] 2 | on: 3 | push: 4 | branches: 5 | - main 6 | jobs: 7 | cache: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v6 11 | - name: Setup Anaconda 12 | uses: conda-incubator/setup-miniconda@v3 13 | with: 14 | auto-update-conda: true 15 | auto-activate-base: true 16 | miniconda-version: 'latest' 17 | python-version: "3.13" 18 | environment-file: environment.yml 19 | activate-environment: quantecon 20 | - name: Build HTML 21 | shell: bash -l {0} 22 | run: | 23 | jb build lectures --path-output ./ --keep-going 24 | # TODO: Re-enable -W flag once all lectures are translated and warnings are resolved 25 | - name: Upload Execution Reports 26 | uses: actions/upload-artifact@v6 27 | if: failure() 28 | with: 29 | name: execution-reports 30 | path: _build/html/reports 31 | - name: Upload "_build" folder (cache) 32 | uses: actions/upload-artifact@v6 33 | with: 34 | name: build-cache 35 | path: _build 36 | include-hidden-files: true -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/about_py/qs.py: -------------------------------------------------------------------------------- 1 | 2 | import matplotlib.pyplot as plt 3 | import numpy as np 4 | from scipy.stats import norm 5 | from matplotlib import cm 6 | 7 | xmin, xmax = -4, 12 8 | x = 10 9 | α = 0.5 10 | 11 | m, v = x, 10 12 | 13 | xgrid = np.linspace(xmin, xmax, 200) 14 | 15 | fig, ax = plt.subplots() 16 | 17 | ax.spines['right'].set_color('none') 18 | ax.spines['top'].set_color('none') 19 | ax.spines['left'].set_color('none') 20 | ax.xaxis.set_ticks_position('bottom') 21 | ax.spines['bottom'].set_position(('data', 0)) 22 | 23 | ax.set_ylim(-0.05, 0.5) 24 | ax.set_xticks((x,)) 25 | ax.set_xticklabels((r'$x$', ), fontsize=18) 26 | ax.set_yticks(()) 27 | 28 | K = 3 29 | for i in range(K): 30 | m = α * m 31 | v = α * α * v + 1 32 | f = norm(loc=m, scale=np.sqrt(v)) 33 | k = (i + 0.5) / K 34 | ax.plot(xgrid, f.pdf(xgrid), lw=1, color='black', alpha=0.4) 35 | ax.fill_between(xgrid, 0 * xgrid, f.pdf(xgrid), color=cm.jet(k), alpha=0.4) 36 | 37 | 38 | ax.annotate(r'$Q(x,\cdot)$', xy=(6.6, 0.2), xycoords='data', 39 | xytext=(20, 90), textcoords='offset points', fontsize=16, 40 | arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=-0.2")) 41 | ax.annotate(r'$Q^2(x,\cdot)$', xy=(3.6, 0.24), xycoords='data', 42 | xytext=(20, 90), textcoords='offset points', fontsize=16, 43 | arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=-0.2")) 44 | ax.annotate(r'$Q^3(x,\cdot)$', xy=(-0.2, 0.28), xycoords='data', 45 | xytext=(-90, 90), textcoords='offset points', fontsize=16, 46 | arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=0.2")) 47 | fig.show() 48 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Build Project [using jupyter-book] 2 | on: [pull_request] 3 | jobs: 4 | preview: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - uses: actions/checkout@v6 8 | - name: Setup Anaconda 9 | uses: conda-incubator/setup-miniconda@v3 10 | with: 11 | auto-update-conda: true 12 | auto-activate-base: true 13 | miniconda-version: 'latest' 14 | python-version: "3.13" 15 | environment-file: environment.yml 16 | activate-environment: quantecon 17 | - name: Install latex dependencies 18 | run: | 19 | sudo apt-get -qq update 20 | sudo apt-get install -y \ 21 | texlive-latex-recommended \ 22 | texlive-latex-extra \ 23 | texlive-fonts-recommended \ 24 | texlive-fonts-extra \ 25 | texlive-xetex \ 26 | latexmk \ 27 | xindy \ 28 | dvipng \ 29 | cm-super 30 | - name: Display Conda Environment Versions 31 | shell: bash -l {0} 32 | run: conda list 33 | - name: Display Pip Versions 34 | shell: bash -l {0} 35 | run: pip list 36 | - name: Download "build" folder (cache) 37 | uses: dawidd6/action-download-artifact@v11 38 | with: 39 | workflow: cache.yml 40 | branch: main 41 | name: build-cache 42 | path: _build 43 | # TODO: enable pdf and download notebooks 44 | # # Build Assets (Download Notebooks and PDF via LaTeX) 45 | # - name: Build Download Notebooks (sphinx-tojupyter) 46 | # shell: bash -l {0} 47 | # run: | 48 | # jb build lectures --path-output ./ --builder=custom --custom-builder=jupyter -n -W --keep-going 49 | # mkdir -p _build/html/_notebooks 50 | # cp -u _build/jupyter/*.ipynb _build/html/_notebooks 51 | # - name: Build PDF from LaTeX 52 | # shell: bash -l {0} 53 | # run: | 54 | # jb build lectures --builder pdflatex --path-output ./ -n -W --keep-going 55 | # mkdir _build/html/_pdf 56 | # cp -u _build/latex/*.pdf _build/html/_pdf 57 | # Final Build of HTML 58 | - name: Build HTML 59 | shell: bash -l {0} 60 | run: | 61 | jb build lectures --path-output ./ -n --keep-going 62 | - name: Upload Execution Reports 63 | uses: actions/upload-artifact@v6 64 | if: failure() 65 | with: 66 | name: execution-reports 67 | path: _build/html/reports 68 | - name: Preview Deploy to Netlify 69 | uses: nwtgck/actions-netlify@v3 70 | with: 71 | publish-dir: '_build/html/' 72 | production-branch: main 73 | github-token: ${{ secrets.GITHUB_TOKEN }} 74 | deploy-message: "Preview Deploy from GitHub Actions" 75 | env: 76 | NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} 77 | NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} 78 | -------------------------------------------------------------------------------- /lectures/_config.yml: -------------------------------------------------------------------------------- 1 | title: Python Programming for Economics and Finance 2 | author: Thomas J. Sargent & John Stachurski (Translation by Zahra Khanzadeh) 3 | logo: _static/qe-logo.png 4 | description: This website presents a set of lectures on python programming for economics, designed and written by Thomas J. Sargent and John Stachurski (translated by Zahra Khanzadeh). 5 | 6 | execute: 7 | execute_notebooks: "cache" 8 | timeout: 600 # 10 minutes 9 | 10 | html: 11 | baseurl: https://python-programming-fa.quantecon.org/ 12 | 13 | latex: 14 | latex_documents: 15 | targetname: quantecon-python-programming-fa.tex 16 | 17 | sphinx: 18 | extra_extensions: [sphinx_multitoc_numbering, sphinxext.rediraffe, sphinx_tojupyter, sphinx_exercise, sphinx_togglebutton] 19 | config: 20 | # bibtex_reference_style: author_year #TODO: enable if bibtex bibliography is used in series 21 | # false-positive links 22 | linkcheck_ignore: ['https://github.com/matplotlib/matplotlib/blob/v3.6.2/lib/matplotlib/axes/_axes.py#L1417-L1669', 23 | 'https://ieeexplore.ieee.org/document/8757088', 24 | 'https://www.sciencedirect.com/science/article/pii/S1477388021000177', 25 | 'https://keras.io/', 26 | 'https://data.oecd.org/', 27 | 'https://www.reddit.com/', 28 | 'https://openai.com', 29 | 'https://chatgpt.com/'] 30 | html_favicon: _static/lectures-favicon.ico 31 | html_theme: quantecon_book_theme 32 | html_static_path: ['_static'] 33 | html_theme_options: 34 | authors: 35 | - name: Thomas J. Sargent 36 | url: http://www.tomsargent.com/ 37 | - name: John Stachurski 38 | url: https://johnstachurski.net/ 39 | dark_logo: quantecon-logo-transparent.png 40 | header_organisation_url: https://quantecon.org 41 | header_organisation: QuantEcon 42 | repository_url: https://github.com/QuantEcon/lecture-python-programming.fa 43 | nb_repository_url: https://github.com/QuantEcon/lecture-python-programming.fa.notebooks 44 | twitter: quantecon 45 | twitter_logo_url: https://assets.quantecon.org/img/qe-twitter-logo.png 46 | og_logo_url: https://assets.quantecon.org/img/qe-og-logo.png 47 | description: This website presents a set of lectures on python programming for economics, designed and written by Thomas J. Sargent and John Stachurski. 48 | keywords: Python, QuantEcon, Quantitative Economics, Economics, Sloan, Alfred P. Sloan Foundation, Tom J. Sargent, John Stachurski 49 | enable_rtl: True 50 | analytics: 51 | google_analytics_id: G-X7DH1M2DPY 52 | launch_buttons: 53 | notebook_interface : classic # The interface interactive links will activate ["classic", "jupyterlab"] 54 | colab_url : https://colab.research.google.com 55 | thebe : false # Add a thebe button to pages (requires the repository to run on Binder) 56 | mathjax_path: https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js 57 | rediraffe_redirects: 58 | index_toc.md: intro.md 59 | tojupyter_static_file_path: ["source/_static", "_static"] 60 | tojupyter_target_html: true 61 | tojupyter_urlpath: "https://python-programming-fa.quantecon.org/" 62 | tojupyter_image_urlpath: "https://python-programming-fa.quantecon.org/_static/" 63 | tojupyter_lang_synonyms: ["ipython", "ipython3", "python"] 64 | tojupyter_kernels: 65 | python3: 66 | kernelspec: 67 | display_name: "Python" 68 | language: python3 69 | name: python3 70 | file_extension: ".py" 71 | tojupyter_images_markdown: true 72 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Build & Publish to GH Pages 2 | on: 3 | push: 4 | tags: 5 | - 'publish*' 6 | jobs: 7 | publish: 8 | if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v6 13 | - name: Setup Anaconda 14 | uses: conda-incubator/setup-miniconda@v3 15 | with: 16 | auto-update-conda: true 17 | auto-activate-base: true 18 | miniconda-version: 'latest' 19 | python-version: "3.13" 20 | environment-file: environment.yml 21 | activate-environment: quantecon 22 | - name: Install latex dependencies 23 | run: | 24 | sudo apt-get -qq update 25 | sudo apt-get install -y \ 26 | texlive-latex-recommended \ 27 | texlive-latex-extra \ 28 | texlive-fonts-recommended \ 29 | texlive-fonts-extra \ 30 | texlive-xetex \ 31 | latexmk \ 32 | xindy \ 33 | dvipng \ 34 | cm-super 35 | - name: Display Conda Environment Versions 36 | shell: bash -l {0} 37 | run: conda list 38 | - name: Display Pip Versions 39 | shell: bash -l {0} 40 | run: pip list 41 | # Download Build Cache from cache.yml 42 | - name: Download "build" folder (cache) 43 | uses: dawidd6/action-download-artifact@v11 44 | with: 45 | workflow: cache.yml 46 | branch: main 47 | name: build-cache 48 | path: _build 49 | # TODO: pdf support 50 | # # Build Assets (Download Notebooks, PDF via LaTeX) 51 | # - name: Build PDF from LaTeX 52 | # shell: bash -l {0} 53 | # run: | 54 | # jb build lectures --builder pdflatex --path-output ./ -n -W --keep-going 55 | # - name: Copy LaTeX PDF for GH-PAGES 56 | # shell: bash -l {0} 57 | # run: | 58 | # mkdir -p _build/html/_pdf 59 | # cp -u _build/latex/*.pdf _build/html/_pdf 60 | # TODO: download notebook support 61 | # - name: Build Download Notebooks (sphinx-tojupyter) 62 | # shell: bash -l {0} 63 | # run: | 64 | # jb build lectures --path-output ./ --builder=custom --custom-builder=jupyter -n -W --keep-going 65 | # zip -r download-notebooks.zip _build/jupyter 66 | # - uses: actions/upload-artifact@v4 67 | # with: 68 | # name: download-notebooks 69 | # path: download-notebooks.zip 70 | # - name: Copy Download Notebooks for GH-PAGES 71 | # shell: bash -l {0} 72 | # run: | 73 | # mkdir -p _build/html/_notebooks 74 | # cp -u _build/jupyter/*.ipynb _build/html/_notebooks 75 | # Final Build of HTML (with assets) 76 | - name: Build HTML 77 | shell: bash -l {0} 78 | run: | 79 | jb build lectures --path-output ./ -n -W --keep-going 80 | # Create HTML archive for release assets 81 | - name: Create HTML archive 82 | shell: bash -l {0} 83 | run: | 84 | tar -czf lecture-python-programming-fa-html-${{ github.ref_name }}.tar.gz -C _build/html . 85 | sha256sum lecture-python-programming-fa-html-${{ github.ref_name }}.tar.gz > html-checksum.txt 86 | 87 | # Create metadata manifest 88 | cat > html-manifest.json << EOF 89 | { 90 | "tag": "${{ github.ref_name }}", 91 | "commit": "${{ github.sha }}", 92 | "timestamp": "$(date -Iseconds)", 93 | "size_mb": $(du -sm _build/html | cut -f1), 94 | "file_count": $(find _build/html -type f | wc -l) 95 | } 96 | EOF 97 | - name: Upload archives to release 98 | uses: softprops/action-gh-release@v2 99 | with: 100 | files: | 101 | lecture-python-programming-fa-html-${{ github.ref_name }}.tar.gz 102 | html-checksum.txt 103 | html-manifest.json 104 | env: 105 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 106 | - name: Deploy website to gh-pages 107 | uses: peaceiris/actions-gh-pages@v4 108 | with: 109 | github_token: ${{ secrets.GITHUB_TOKEN }} 110 | publish_dir: _build/html/ 111 | # cname: python-programming-fa.quantecon.org 112 | # TODO: download notebook support 113 | # - name: Prepare lecture-python-programming.notebooks sync 114 | # shell: bash -l {0} 115 | # run: | 116 | # mkdir -p _build/lecture-python-programming.notebooks 117 | # cp -a _notebook_repo/. _build/lecture-python-programming.notebooks 118 | # cp _build/jupyter/*.ipynb _build/lecture-python-programming.notebooks 119 | # ls -a _build/lecture-python-programming.notebooks 120 | # - name: Commit notebooks to lecture-python-programming.notebooks 121 | # shell: bash -l {0} 122 | # env: 123 | # QE_SERVICES_PAT: ${{ secrets.QUANTECON_SERVICES_PAT }} 124 | # run: | 125 | # git clone https://quantecon-services:$QE_SERVICES_PAT@github.com/quantecon/lecture-python-programming.notebooks 126 | 127 | # cp _build/lecture-python-programming.notebooks/*.ipynb lecture-python-programming.notebooks 128 | 129 | # cd lecture-python-programming.notebooks 130 | # git config user.name "QuantEcon Services" 131 | # git config user.email "admin@quantecon.org" 132 | # git add *.ipynb 133 | # git commit -m "auto publishing updates to notebooks" 134 | # git push origin main 135 | -------------------------------------------------------------------------------- /lectures/about_py.md: -------------------------------------------------------------------------------- 1 | --- 2 | jupytext: 3 | text_representation: 4 | extension: .md 5 | format_name: myst 6 | kernelspec: 7 | display_name: Python 3 8 | language: python 9 | name: python3 10 | --- 11 | 12 | # درباره ی این دوره 13 | 14 | ```{epigraph} 15 | " پایتون به قدری پیشرفت کرده و به سلاحی قدرتمند تبدیل شده است که دیگر نیازی به استفاده از R نداریم. طرفداران R، ببخشید؛ خود من هم زمانی یکی از شما بودم، اما دیگر به سراغ R نمی روم." 16 | -- کریس ویگینس 17 | ``` 18 | 19 | ## مقدمه 20 | 21 | در این مجموعه خواهید آموخت که از پایتون برای محاسبات علمی و با تمرکز بر اقتصاد و امور مالی استفاده کنید. این مجموعه برای افراد مبتدی طراحی شده است، اما افراد حرفه ای نیز محتوای مفیدی را در این دروس پیدا خواهند کرد. 22 | 23 | در این درس: 24 | 25 | 26 | * پایتون را معرفی خواهیم کرد 27 | 28 | * برخی از ویژگی های پایتون را نشان خواهیم داد 29 | 30 | * توضیح می دهیم که چرا پایتون زبان محبوب ما برای محاسبات علمی است 31 | 32 | * و شما را به ادامه ی مسیر و اهدافتان تشویق می کنیم. 33 | 34 | همچنین شما نیازی به درک همه ی مواردی که در این درس خواهید دید، ندارید؛ زیرا در ادامه ی دروس تمامی جزئیات را آموزش خواهیم داد. 35 | 36 | ### آیا نمیتوانم فقط از مدل های زبانی بزرگ (LLM) استفاده کنم؟ 37 | 38 | خیر! 39 | 40 | البته که وسوسه انگیز است که در عصر هوش مصنوعی فکر کنیم دیگر لازم نیست کد نویسی یاد بگیریم. 41 | 42 | و بله، ما هم گاهی اوقات تنبلی را دوست داریم. 43 | علاوه براین، ما موافقیم که هوش مصنوعی ها ابزارهای برجسته ای برای افزایش بهره وری برنامه نویسان هستند. 44 | 45 | اما هوش مصنوعی نمی تواند سوالات جدیدی را که قبلا ندیده است به طور کامل و قابل اعتماد حل کند. 46 | 47 | بنابراین شما نیاز خواهید داشت تا به‌ عنوان یک ناظر بتوانید کد ها رابخوانید، بنویسید و درک کنید. 48 | 49 | با این حال، یک مدل زبانی بزرگ (LLM) خوب میتواند هراه مفیدی برای دنبال کردن این درس ها باشد؛ میتوانید بخشی از کدهای این درس را کپی کنید و ازآنها بخواهید برایتان توضیح دهند. 50 | 51 | ### آیا Matlab بهتر نیست؟ 52 | 53 | نه! نه و هزاران بار نه! 54 | 55 | نیروانا گروه بزرگی بود (و [ساوندگاردن](https://www.youtube.com/watch?v=3mbBbFH9fAg&list=RD3mbBbFH9fAg) حتی بهتر بود) اما وقت آن است که از دهه 90 عبور کنیم. 56 | 57 | امروزه تقریبا برای اکثر مشکلات، کتابخانه های علمی پایتون قابلیت های بسیار پیشرفته تری نسبت به متلب دارند. 58 | 59 | این موضوع به ویژه در حوزه های به سرعت در حال رشد، مانند یادگیری عمیق (Deep Learning) و یادگیری تقویتی(Reinforcement Learning) صادق است. 60 | 61 | علاوه بر این، تمام مدل های زبانی بزرگ (LLM) اصلی در نوشتن کد پایتون مهارت بسیار بیشتری نسبت به کد متلب دارند. 62 | 63 | ما در طول این سری از دروس و همچنین در سرس بعدی در مورد JAX، به بحث در مورد مزایای نسبی کتابخانه های 64 | پایتون خواهیم پرداخت. 65 | 66 | ## برنامه نویسی پایتون چیست؟ 67 | [پایتون](https://www.python.org) یک زبان برنامه نویسی همه منظوره است که در سال 1989 توسط [خیدو فان روسوم](https://en.wikipedia.org/wiki/Guido_van_Rossum) ابداع شد. 68 | 69 | پایتون رایگان و [متن باز](https://en.wikipedia.org/wiki/Open_source) است و توسعه ی آن از طریق [بنیاد نرم افزار پایتون](https://www.python.org/psf/) انجام می شود. 70 | 71 | این موضوع مهم است زیرا: 72 | 73 | * پولمان را پس انداز می کند 74 | 75 | * به جای یک شرکت انتفاعی، توسط جامعه ی کاربران کنترل می شود 76 | 77 | * و قابلیت بازتولید و [علم باز](https://en.wikipedia.org/wiki/Open_science) را تشویق می کند. 78 | 79 | ### کاربردهای رایج پایتون 80 | 81 | پایتون یک زبان همه منظوره است که تقریبا در همه ی حوزه های کاربردی از جمله موارد زیر استفاده می شود: 82 | 83 | * هوش مصنوعی و علوم کامپیوتر 84 | 85 | * محاسبات علمی 86 | 87 | * ارتباطات 88 | 89 | * توسعه ی وب 90 | 91 | * رابط های کاربری گرافیکی (GUI) و پردازش تصویر (CGI) 92 | 93 | * توسعه ی بازی 94 | 95 | * برنامه ریزی منابع سازمانی 96 | 97 | * محتوای چندرسانه ای 98 | 99 | * و غیره. 100 | 101 | همچنین بطور گسترده ای توسط شرکت های زیر و بسیاری دیگر از شرکت ها مورد استفاده و پشتیبانی قرار می گیرد: 102 | 103 | * [Google](https://www.google.com/) 104 | * [OpenAI](https://openai.com/) 105 | * [Netflix](https://www.netflix.com/) 106 | * [Meta](https://opensource.fb.com/) 107 | * [Amazon](https://www.amazon.com/) 108 | * [Reddit](https://www.reddit.com/) 109 | 110 | 111 | ### جایگاه محبوبیت 112 | 113 | بدون شک، پایتون یکی از [محبوب ترین زبان های برنامه نویسی](https://www.tiobe.com/tiobe-index/) است و کتابخانه های پایتون مانند [pandas](https://pandas.pydata.org/) و [Polars](https://pola.rs/) جایگزین ابزارهای آشنایی همچون Excel و VBA هستند که به عنوان یک مهارت ضروری در زمینه های مالی و بانکی محسوب می شوند. 114 | 115 | علاوه براین، پایتون در جامعه ی علمی - به ویژه هوش مصنوعی – بسیار محبوب است؛ نمودار زیر که با استفاده از آمارهای وبسایت استک اورفلو تهیه شده، شواهدی از این امر را نشان می دهد. 116 | 117 | این تصویر نسبت محبوبیت یک کتابخانه ی هوش مصنوعی پایتون با نام [PyTorch](https://pytorch.org/) به MATLAB را نشان می دهد. 118 | 119 | ![مقایسه متلب و پایتون](images/about-py/pytorch_vs_matlab.png) 120 | 121 | نمودار نشان می دهد که با رشد سریع PyTorch محبوبیت MATLAB در حال کمرنگ شدن است. علاوه براین، PyTorch تنها یکی از هزاران کتابخانه های در دسترس پایتون برای محاسبات علمی است. 122 | 123 | ### ویژگی ها 124 | 125 | پایتون یک [زبان برنامه نویسی سطح بالا](https://en.wikipedia.org/wiki/High-level_programming_language) است، بدین معنی که خواندن، نوشتن و اشکال زدایی آن نسبتا آسان است و یک هسته ی زبانی مختصر دارد که به آسانی قابل یادگیری است. این هسته ی زبانی، توسط بسیاری از کتابخانه ها پشتیبانی می شود که می توانید درصورت نیاز، استفاده از آنها را یادبگیرید. 126 | 127 | پایتون انعطاف پذیر و عمل گرا است و از چندین الگوی برنامه نویسی (مثل برنامه نویسی رویه ای، شیء گرا، تابع محور و غیره.) پشتیبانی می کند. 128 | 129 | ### نحو و طراحی 130 | 131 | یکی از دلایل محبوبیت پایتون، طراحی ساده و ظریف آن است. 132 | 133 | برای بهتر درک کردن این موضوع، اجازه دهید به یک مثال نگاهی بیاندازیم. 134 | 135 | کد زیر به جای پایتون با [Java](https://en.wikipedia.org/wiki/Java_(programming_language)) نوشته شده است. 136 | 137 | **شما نیازی به خواندن و درک کد جاوا ندارید!** 138 | 139 | ```{code-block} java 140 | 141 | import java.io.BufferedReader; 142 | import java.io.FileReader; 143 | import java.io.IOException; 144 | 145 | public class CSVReader { 146 | public static void main(String[] args) { 147 | String filePath = "data.csv"; 148 | String line; 149 | String splitBy = ","; 150 | int columnIndex = 1; 151 | double sum = 0; 152 | int count = 0; 153 | 154 | try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { 155 | while ((line = br.readLine()) != null) { 156 | String[] values = line.split(splitBy); 157 | if (values.length > columnIndex) { 158 | try { 159 | double value = Double.parseDouble( 160 | values[columnIndex] 161 | ); 162 | sum += value; 163 | count++; 164 | } catch (NumberFormatException e) { 165 | System.out.println( 166 | "Skipping non-numeric value: " + 167 | values[columnIndex] 168 | ); 169 | } 170 | } 171 | } 172 | } catch (IOException e) { 173 | e.printStackTrace(); 174 | } 175 | 176 | if (count > 0) { 177 | double average = sum / count; 178 | System.out.println( 179 | "Average of the second column: " + average 180 | ); 181 | } else { 182 | System.out.println( 183 | "No valid numeric data found in the second column." 184 | ); 185 | } 186 | } 187 | } 188 | 189 | ``` 190 | 191 | قرار است کد جاوا یک فایل پیش فرض به نام data.csv باز کند و میانگین مقادیر را در ستون دوم محاسبه کند. طبق آنچه در زیر می بینید، حتی بدون دانستن جاوا می توانید متوجه شوید که کد طولانی و پیچیده ای است. 192 | 193 | حال به کد پایتون برای همان دستور را ببینید، حتی اگر هنوز چیزی از پایتون نمی دانید، می توانید ببینید که کد پایتون ساده تر و خواندن آن آسان تر است. به همین علت سادگی پایتون و طراحی منظم آن است که باعث گسترش محبوبیت این زبان برنامه نویسی شده است. 194 | 195 | ```{code-cell} python3 196 | :tags: [skip-execution] 197 | 198 | import csv 199 | 200 | total, count = 0, 0 201 | with open('data.csv', mode='r') as file: 202 | reader = csv.reader(file) 203 | for row in reader: 204 | try: 205 | total += float(row[1]) 206 | count += 1 207 | except (ValueError, IndexError): 208 | pass 209 | print(f"Average: {total / count if count else 'No valid data'}") 210 | 211 | ``` 212 | 213 | ### ارتباط با هوش مصنوعی 214 | 215 | هوش مصنوعی در حال تحول و جایگزینی بسیاری از وظایفی است که هم اکنون توسط انسان ها انجام می شود، دقیقا همانگونه که دیگر اشکال فناوری و ماشین آلات در طی قرون گذشته این روند را طی کرده اند. 216 | 217 | پایتون نیز نقش بزرگی را در پیشرفت هوش مصنوعی و یادگیری ماشین ایفا می کند و این بدان معناست که شرکت های فناوری، در حال سرمایه گذاری بر روی توسعه ی کتابخانه های بسیار قدرتمند پایتون هستند. بنابراین حتی اگر قصد ندارید روی هوش مصنوعی و یادگیری ماشین کار کنید، می توانید از یادگیری بهره مند شده و از برخی از این کتابخانه ها برای پروژه های خود در اقتصاد، مالی و همچنین سایر علوم استفاده کنید؛ که این دوره چگونگی این کار را توضیح خواهد داد. 218 | 219 | ## برنامه نویسی علمی با پایتون 220 | 221 | پیش تر درباره ی اهمیت پایتون در هوش مصنوعی، یادگیری ماشین و علم داده صحبت کرده ایم. حال بیاید به نقش پایتون در سایر زمینه های محاسبات علمی نگاهی بیاندازیم. 222 | 223 | پایتون یک بازیکن اصلی در علومی چون نجوم، شیمی، زیست شناسی محاسباتی، هواشناسی، پردازش زبان طبیعی و... است. همچنین استفاده از پایتون در اقتصاد، امور مالی و زمینه های مرتبط آن مانند تحقیق در عملیات -که قبلا تحت سلطه ی برنامه هایی چون متلب، اکسل، استتا، C و فورترن بود- درحال گسترش است. 224 | 225 | در ادامه به طور مختصر چند نمونه از استفاده ی پایتون را برای برنامه نویسی علمی نشان می ذهیم. 226 | 227 | ### NumPy 228 | 229 | یکی از مهم ترین بخش های محاسبات علمی کار با داده است. داده ها اغلب در ماتریس ها، بردارها و آرایه ها ذخیره می شوند و ما میتوانیم یک آرایه ی ساده از اعداد را با پایتون خالص به صورت زیر ایجاد کنیم: 230 | 231 | ```{code-cell} python3 232 | a = [-3.14, 0, 3.14] # A Python list 233 | a 234 | ``` 235 | 236 | این آرایه ی بسیار کوچک نشان می دهد که کار با پایتون خالص بسیار راحت است. اما وقتی می خواهیم با آرایه های بزرگتری در برنامه های واقعی کار کنیم، به کارایی بیشتر و ابزارهای بیشتری نیاز داریم. بنابراین، برای اینکار باید از کتابخانه ها برای کار با آرایه ها استفاده کنیم. 237 | 238 | برای پایتون، مهمترین کتابخانه ی پردازش ماتریس و آرایه، کتابخانه [NumPy](http://www.numpy.org/) است. به عنوان مثال بیاید یک آرایه با 100 عنصر را با NumPy بسازیم: 239 | 240 | ```{code-cell} python3 241 | import numpy as np # Load the library 242 | 243 | a = np.linspace(-np.pi, np.pi, 100) # Create even grid from -π to π 244 | a 245 | ``` 246 | 247 | حالا بیاید این آرایه را با اعمال توابع تبدیل کنیم: 248 | 249 | ```{code-cell} python3 250 | b = np.cos(a) # Apply cosine to each element of a 251 | c = np.sin(a) # Apply sin to each element of a 252 | ``` 253 | 254 | و حالا میتوانیم به راحتی حاصل ضرب اسکالر `b` و `c` را بدست بیاوریم: 255 | 256 | ```{code-cell} python3 257 | b @ c 258 | ``` 259 | 260 | همچنین میتوانیم با پایتون بسیاری از دستورات دیگر را انجام دهیم، مانند اینکه میانگین و واریانس آرایه ها را محاسبه کند، ماتریس بسازد و سیستم های خطی را حل کند، آرایه های تصادفی برای شبیه سازی ایجاد کند و... که جزئیات را در بخش های بعدی پوشش خواهیم داد. 261 | 262 | ### جایگزین های NumPy 263 | 264 | درحالیکه هنوز سلطان پردازش آرایه ها در پایتون NumPy است، اما اکنون رقبای جدیدی نیز دارد؛ کتابخانه هایی مانند [CuPy](https://cupy.dev/)، [Pytorch](https://pytorch.org/)، [JAX](https://github.com/google/jax) نیز انواع آرایه ها و عملیات آرایه ای را تعبیه کرده اند و می توانند بسیار سریع و کارآمد باشند. همانطور که بعدا در این مجموعه توضیح خواهیم داد؛ در واقع این کتابخانه ها در استفاده از پردازش موازی و سخت افزار سریع، بهتر هستند. با این حال، شما هنوز هم باید ابتدا NumPy را یاد بگیرید، زیرا؛ ساده تر است و یک پایه ی قوی را فراهم می کند، به طور مستقیم عملکرد کتابخانه هایی مانند JAX را گسترش می دهد و از اینرو وقتی NumPy را می شناسید، یادگیری آن را نیز آسان تر می کند. 265 | 266 | ### SciPy 267 | 268 | کتابخانه [SciPy](http://www.scipy.org) بر روی NumPy ساخته شده است و قابلیت های اضافی را ارائه می دهد. 269 | 270 | برای مثال بیاید حساب کنیم جاییکه 271 | 272 | 273 | 274 | 275 | 2 276 | 277 | 2 278 | 279 | ϕ 280 | ( 281 | z 282 | ) 283 | d 284 | z 285 | دارای توزیع نرمال استاندارد است: 286 | 287 | 288 | ```{code-cell} python3 289 | from scipy.stats import norm 290 | from scipy.integrate import quad 291 | 292 | ϕ = norm() 293 | value, error = quad(ϕ.pdf, -2, 2) # Integrate using Gaussian quadrature 294 | value 295 | ``` 296 | 297 | کتابخانه ی SciPy شامل بسیاری از امور استاندارد کاربردی مانند [جبرخطی](https://docs.scipy.org/doc/scipy/reference/linalg.html)، [انتگرال گیری](https://docs.scipy.org/doc/scipy/reference/integrate.html)، [درون یابی](https://docs.scipy.org/doc/scipy/reference/interpolate.html)، [بهینه سازی](https://docs.scipy.org/doc/scipy/reference/optimize.html)، [توزیع ها و تکنیک های آماری](https://docs.scipy.org/doc/scipy/reference/stats.html) و [پردازش سیگنال](https://docs.scipy.org/doc/scipy/reference/signal.html) است که می توانید همه ی آنها را [اینجا](https://docs.scipy.org/doc/scipy/reference/index.html) ببینید. 298 | 299 | بعدا SciPy را با جزئیات بیشتری توضیح خواهیم داد. 300 | ### گرافیک 301 | 302 | نقطه ی قوت اصلی پایتون تجسم داده ها است. محبوب ترین و جامع ترین کتابخانه ی پایتون برای ایجاد شکل ها و نمودارها [Matplotlib](http://matplotlib.org/) است که شامل قابلیت های ایجاد تصاویر نمودارها، هیستوگرام ها، سطوح کانتور، نمودارهای سه بعدی، نمودارهای میله ای و... بوده و می تواند خروجی ها را در قالب های مختلف مانند (PDF، PNG، EPS و...) ارائه دهد و همچنین قابلیت ادغام LaTex را نیز دارد. 303 | 304 | آنچه در ادامه می بینید مثال هایی از این کتابخانه هستند: 305 | 306 | ![نمونه طرح دو بعدی](images/about-py/qs.png) 307 | 308 | *نمونه طرح دو بعدی با حاشیه نویسی لاتکس تعبیه شده* 309 | 310 | ![نمونه طرح سه بعدی](images/about-py/career_vf.png) 311 | 312 | *نمونه طرح سه بعدی* 313 | 314 | ![نمونه طرح کانتور](images/about-py/bn_density1.png) 315 | 316 | *نمونه طرح کانتور* 317 | 318 | همچنین می توانید نمونه های بیشتری را در [گالری تصاویر Matplotlib](https://matplotlib.org/stable/gallery/index.html) بیابید. 319 | 320 | سایر کتابخانه های گرافیکی عبارتند از: 321 | 322 | * [Plotly](https://plot.ly/python/) 323 | 324 | * [seaborn](https://seaborn.pydata.org/)(یک رابط سطح بالا برای Matplotlib می باشد) 325 | 326 | * [Altair](https://altair-viz.github.io/) 327 | 328 | * [Bokeh](http://bokeh.pydata.org/en/latest/) . 329 | 330 | همچنین برای مشاهده نمونه های بیشتری از نمودارهای رسم شده با استفاده از کتابخانه های مختلف، می توانید به [گالری نمودارهای پایتون](https://www.python-graph-gallery.com/) مراجعه کنید. 331 | 332 | ### شبکه ها و نمودارها 333 | 334 | مطالعه ی شبکه ها و نمودارها بخش مهمی از کار علمی در اقتصاد، مالی و سایر زمینه ها است؛ به عنوان مثال، ما به مطالعه ی مواردی چون شبکه های تولید، شبکه های بانکی و موسسات مالی، شبکه های اجتماعی و... علاقه مند هستیم. 335 | 336 | پایتون نیز کتابخانه های زیادی برای مطالعه ی شبکه ها و نمودارها دارد. یکی از معروف ترین این کتابخانه ها [NetworkX](http://networkx.github.io/) است که از جمله ویژگی های آن داشتن الگوریتم های استاندارد گراف برای تحلیل شبکه ها و فرآیندهای مربوط به نمایش نمودارها است. 337 | 338 | در زیر نمونه ای از کد آورده شده است که یک گراف تصادفی ایجاد و رسم می کند که رنگ گره ها براساس طول کوتاه ترین مسیر از یک گره ی مرکزی مشخص تعیین می شود. 339 | 340 | ```{code-cell} ipython 341 | import networkx as nx 342 | import matplotlib.pyplot as plt 343 | np.random.seed(1234) 344 | 345 | # Generate a random graph 346 | p = dict((i, (np.random.uniform(0, 1), np.random.uniform(0, 1))) 347 | for i in range(200)) 348 | g = nx.random_geometric_graph(200, 0.12, pos=p) 349 | pos = nx.get_node_attributes(g, 'pos') 350 | 351 | # Find node nearest the center point (0.5, 0.5) 352 | dists = [(x - 0.5)**2 + (y - 0.5)**2 for x, y in list(pos.values())] 353 | ncenter = np.argmin(dists) 354 | 355 | # Plot graph, coloring by path length from central node 356 | p = nx.single_source_shortest_path_length(g, ncenter) 357 | plt.figure() 358 | nx.draw_networkx_edges(g, pos, alpha=0.4) 359 | nx.draw_networkx_nodes(g, 360 | pos, 361 | nodelist=list(p.keys()), 362 | node_size=120, alpha=0.5, 363 | node_color=list(p.values()), 364 | cmap=plt.cm.jet_r) 365 | plt.show() 366 | ``` 367 | 368 | ### سایرکتابخانه های علمی 369 | 370 | همانطور که پیشتر گفته شد، درواقع هزاران کتابخانه ی علمی برای پایتون وجود دارد که برخی کوچک هستند و وظایف بسیارخاصی را انجام می دهند و برخی دیگر از نظر خطوط کد و سرمایه گذاری انجام شده روی آنها توسط کدنویس ها و شرکت های فناوری، بسیار بزرگ هستند. 371 | 372 | در اینجا فهرست کوتاهی از چند کتابخانه ی علمی مهم برای پایتون که پیشتر نگفتیم برایتان آورده ایم: 373 | 374 | * [SymPy](http://www.sympy.org/): برای جبر نمادین، از جمله محاسبه ی حد، مشتق و انتگرال 375 | 376 | * [statsmodels](http://statsmodels.sourceforge.net/): برای توابع آماری 377 | 378 | * [scikit-learn](http://scikit-learn.org/): برای یادگیری ماشین 379 | 380 | * [Keras](https://keras.io/): برای یادگیری ماشین 381 | 382 | * [Pyro](https://pyro.ai/) و [PyStan](https://pystan.readthedocs.org/en/latest/): برای تحلیل داده های بیزی 383 | 384 | * [GeoPandas](https://geopandas.org/en/stable/): برای تحلیل داده های مکانی 385 | 386 | * [Dask](https://docs.dask.org/en/stable/): برای پردازش موازی 387 | 388 | * [Numba](http://numba.pydata.org/): اجرای پایتون با سرعت برابر با کدهای سطح پایین قابل اجرا توسط سخت افزار 389 | 390 | * [CVXPY](https://www.cvxpy.org/): برای بهینه سازی محدب 391 | 392 | * [scikit-image](https://scikit-image.org/) و [OpenCV](https://opencv.org/): برای پردازش و تحلیل داده های تصویری 393 | 394 | * [BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/): XML و HTML برای استخراج داده ها از فایل های 395 | 396 | 397 | در این مجموعه خواهیم آموخت که چگونه از بسیاری از این کتابخانه ها برای کارهای محاسباتی علمی در اقتصاد و امور مالی استفاده کنیم. 398 | -------------------------------------------------------------------------------- /lectures/functions.md: -------------------------------------------------------------------------------- 1 | --- 2 | jupytext: 3 | text_representation: 4 | extension: .md 5 | format_name: myst 6 | kernelspec: 7 | display_name: Python 3 8 | language: python 9 | name: python3 10 | --- 11 | 12 | (functions)= 13 | ```{raw} jupyter 14 |
15 | 16 | QuantEcon 17 | 18 |
19 | ``` 20 | 21 | # توابع 22 | 23 | ```{index} single: Python; User-defined functions 24 | ``` 25 | 26 | ## مرور کلی 27 | 28 | توابع (Functions) یکی از ساختارهای بسیار مفید هستند که تقریباً در تمام زبان‌های برنامه‌نویسی وجود دارند. 29 | 30 | ما تاکنون با چندین تابع آشنا شده‌ایم، مانند 31 | 32 | * تابع `sqrt()` از کتابخانه NumPy و 33 | * تابع داخلی `print()` 34 | 35 | در این درس ما: 36 | 37 | 1. توابع را به صورت سیستماتیک بررسی می‌کنیم و نحوه نوشتن و موارد استفاده را پوشش می‌دهیم، و 38 | 2. یاد می‌گیریم که چگونه توابع سفارشی خودمان را بسازیم. 39 | 40 | ما از import های زیر استفاده خواهیم کرد. 41 | 42 | ```{code-cell} ipython 43 | import numpy as np 44 | import matplotlib.pyplot as plt 45 | ``` 46 | 47 | ## مبانی توابع 48 | 49 | تابع یک بخش نام‌گذاری شده از یک برنامه است که یک وظیفه خاص را اجرا می‌کند. 50 | 51 | توابع زیادی از قبل وجود دارند و ما می‌توانیم از آنها به همین شکل استفاده کنیم. 52 | 53 | ابتدا این توابع را بررسی می‌کنیم و سپس بحث می‌کنیم که چگونه می‌توانیم توابع خودمان را بسازیم. 54 | 55 | ### توابع داخلی 56 | 57 | پایتون تعدادی تابع **داخلی** دارد که بدون نیاز به `import` در دسترس هستند. 58 | 59 | ما قبلاً با برخی از آنها آشنا شده‌ایم 60 | 61 | ```{code-cell} python3 62 | max(19, 20) 63 | ``` 64 | 65 | ```{code-cell} python3 66 | print('foobar') 67 | ``` 68 | 69 | ```{code-cell} python3 70 | str(22) 71 | ``` 72 | 73 | ```{code-cell} python3 74 | type(22) 75 | ``` 76 | 77 | لیست کامل توابع داخلی پایتون در [اینجا](https://docs.python.org/3/library/functions.html) موجود است. 78 | 79 | ### توابع شخص ثالث 80 | 81 | اگر توابع داخلی نیاز ما را پوشش ندهند، یا باید توابع را import کنیم یا توابع خودمان را بسازیم. 82 | 83 | نمونه‌هایی از import کردن و استفاده از توابع در {doc}`درس قبلی ` آورده شده است. 84 | 85 | در اینجا نمونه دیگری داریم که بررسی می‌کند آیا یک سال خاص، سال کبیسه است یا خیر: 86 | 87 | ```{code-cell} python3 88 | import calendar 89 | calendar.isleap(2024) 90 | ``` 91 | 92 | ## تعریف توابع 93 | 94 | در بسیاری از موارد، توانایی تعریف توابع خودمان مفید است. 95 | 96 | بیایید با بحث در مورد نحوه انجام آن شروع کنیم. 97 | 98 | ### نحو پایه 99 | 100 | در اینجا یک تابع بسیار ساده پایتون داریم که تابع ریاضی $f(x) = 2 x + 1$ را پیاده‌سازی می‌کند 101 | 102 | ```{code-cell} python3 103 | def f(x): 104 | return 2 * x + 1 105 | ``` 106 | 107 | حالا که این تابع را تعریف کردیم، بیایید آن را *فراخوانی* کنیم و بررسی کنیم که آیا کاری که انتظار داریم را انجام می‌دهد: 108 | 109 | ```{code-cell} python3 110 | f(1) 111 | ``` 112 | 113 | ```{code-cell} python3 114 | f(10) 115 | ``` 116 | 117 | در اینجا یک تابع طولانی‌تر داریم که قدر مطلق یک عدد داده شده را محاسبه می‌کند. 118 | 119 | (چنین تابعی قبلاً به عنوان یک تابع داخلی وجود دارد، اما بیایید برای تمرین، تابع خودمان را بنویسیم.) 120 | 121 | ```{code-cell} python3 122 | def new_abs_function(x): 123 | if x < 0: 124 | abs_value = -x 125 | else: 126 | abs_value = x 127 | return abs_value 128 | ``` 129 | 130 | بیایید نحو را در اینجا بررسی کنیم. 131 | 132 | * `def` یک کلمه کلیدی پایتون است که برای شروع تعریف توابع استفاده می‌شود. 133 | * `def new_abs_function(x):` نشان می‌دهد که نام تابع `new_abs_function` است و یک آرگومان واحد `x` دارد. 134 | * کد تورفتگی‌دار یک بلوک کد است که *بدنه تابع* نامیده می‌شود. 135 | * کلمه کلیدی `return` نشان می‌دهد که `abs_value` شیء‌ای است که باید به کد فراخوانی‌کننده برگردانده شود. 136 | 137 | تمام این تعریف تابع توسط مفسر پایتون خوانده می‌شود و در حافظه ذخیره می‌شود. 138 | 139 | بیایید آن را فراخوانی کنیم تا بررسی کنیم که کار می‌کند: 140 | 141 | ```{code-cell} python3 142 | print(new_abs_function(3)) 143 | print(new_abs_function(-3)) 144 | ``` 145 | 146 | توجه کنید که یک تابع می‌تواند تعداد دلخواهی دستور `return` داشته باشد (از جمله صفر). 147 | 148 | اجرای تابع زمانی که به اولین return برسد، خاتمه می‌یابد و این امکان را می‌دهد که کدهایی مانند مثال زیر بنویسیم 149 | 150 | ```{code-cell} python3 151 | def f(x): 152 | if x < 0: 153 | return 'negative' 154 | return 'nonnegative' 155 | ``` 156 | 157 | (نوشتن توابع با چندین دستور return معمولاً توصیه نمی‌شود، زیرا می‌تواند دنبال کردن منطق را سخت کند.) 158 | 159 | توابعی که دستور return ندارند، به طور خودکار شیء خاص پایتون به نام `None` را برمی‌گردانند. 160 | 161 | (pos_args)= 162 | ### آرگومان‌های کلیدواژه‌ای 163 | 164 | ```{index} single: Python; keyword arguments 165 | ``` 166 | 167 | در {ref}`درس قبلی `، با عبارت زیر مواجه شدید 168 | 169 | ```{code-block} python3 170 | :class: no-execute 171 | 172 | plt.plot(x, 'b-', label="white noise") 173 | ``` 174 | 175 | در این فراخوانی تابع `plot` کتابخانه Matplotlib، توجه کنید که آخرین آرگومان با نحو `name=argument` ارسال می‌شود. 176 | 177 | این را یک *آرگومان کلیدواژه‌ای* می‌نامند، که `label` کلیدواژه است. 178 | 179 | آرگومان‌های غیر کلیدواژه‌ای را *آرگومان‌های موضعی* می‌نامند، زیرا معنای آنها با ترتیب مشخص می‌شود 180 | 181 | * `plot(x, 'b-')` با `plot('b-', x)` متفاوت است 182 | 183 | آرگومان‌های کلیدواژه‌ای به ویژه زمانی مفید هستند که یک تابع آرگومان‌های زیادی دارد، در این صورت به خاطر سپردن ترتیب صحیح سخت است. 184 | 185 | شما می‌توانید آرگومان‌های کلیدواژه‌ای را در توابع تعریف شده توسط کاربر بدون مشکل به کار ببرید. 186 | 187 | مثال بعدی نحو را نشان می‌دهد 188 | 189 | ```{code-cell} python3 190 | def f(x, a=1, b=1): 191 | return a + b * x 192 | ``` 193 | 194 | مقادیر آرگومان کلیدواژه‌ای که در تعریف `f` ارائه کردیم، به مقادیر پیش‌فرض تبدیل می‌شوند 195 | 196 | ```{code-cell} python3 197 | f(2) 198 | ``` 199 | 200 | آنها را می‌توان به شکل زیر تغییر داد 201 | 202 | ```{code-cell} python3 203 | f(2, a=4, b=5) 204 | ``` 205 | 206 | ### انعطاف‌پذیری توابع پایتون 207 | 208 | همانطور که در {ref}`درس قبلی ` بحث کردیم، توابع پایتون بسیار انعطاف‌پذیر هستند. 209 | 210 | به طور خاص 211 | 212 | * هر تعداد تابع می‌تواند در یک فایل معین تعریف شود. 213 | * توابع می‌توانند (و اغلب) در داخل توابع دیگر تعریف شوند. 214 | * هر شیء می‌تواند به عنوان آرگومان به یک تابع ارسال شود، از جمله توابع دیگر. 215 | * یک تابع می‌تواند هر نوع شیء را برگرداند، از جمله توابع. 216 | 217 | ما در بخش‌های بعدی مثال‌هایی از اینکه چقدر ساده است که یک تابع را به یک تابع دیگر ارسال کنیم، ارائه خواهیم داد. 218 | 219 | ### توابع یک خطی: `lambda` 220 | 221 | ```{index} single: Python; lambda functions 222 | ``` 223 | 224 | کلمه کلیدی `lambda` برای ایجاد توابع ساده در یک خط استفاده می‌شود. 225 | 226 | به عنوان مثال، تعریف‌های زیر 227 | 228 | ```{code-cell} python3 229 | def f(x): 230 | return x**3 231 | ``` 232 | 233 | و 234 | 235 | ```{code-cell} python3 236 | f = lambda x: x**3 237 | ``` 238 | 239 | کاملاً معادل هستند. 240 | 241 | برای اینکه ببینیم چرا `lambda` مفید است، فرض کنید می‌خواهیم $\int_0^2 x^3 dx$ را محاسبه کنیم (و حساب دبیرستانمان را فراموش کرده‌ایم). 242 | 243 | کتابخانه SciPy تابعی به نام `quad` دارد که این محاسبه را برای ما انجام می‌دهد. 244 | 245 | نحو تابع `quad` به صورت `quad(f, a, b)` است که `f` یک تابع و `a` و `b` اعداد هستند. 246 | 247 | برای ایجاد تابع $f(x) = x^3$ می‌توانیم از `lambda` به شکل زیر استفاده کنیم 248 | 249 | ```{code-cell} python3 250 | from scipy.integrate import quad 251 | 252 | quad(lambda x: x**3, 0, 2) 253 | ``` 254 | 255 | در اینجا تابع ایجاد شده توسط `lambda` *ناشناس* نامیده می‌شود زیرا هرگز نامی به آن داده نشده است. 256 | 257 | ### چرا توابع بنویسیم؟ 258 | 259 | توابع تعریف شده توسط کاربر برای بهبود وضوح کد شما از طریق موارد زیر مهم هستند: 260 | 261 | * جداسازی رشته‌های مختلف منطق 262 | * تسهیل استفاده مجدد از کد 263 | 264 | (نوشتن یک چیز دو بار [تقریباً همیشه ایده بدی است](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)) 265 | 266 | ما بعداً بیشتر در این مورد صحبت خواهیم کرد. 267 | 268 | 269 | 270 | ## کاربردها 271 | 272 | ### نمونه‌برداری تصادفی 273 | 274 | دوباره به این کد از {doc}`درس قبلی ` نگاه کنید 275 | 276 | ```{code-cell} python3 277 | ts_length = 100 278 | ϵ_values = [] # empty list 279 | 280 | for i in range(ts_length): 281 | e = np.random.randn() 282 | ϵ_values.append(e) 283 | 284 | plt.plot(ϵ_values) 285 | plt.show() 286 | ``` 287 | 288 | ما این برنامه را به دو بخش تقسیم خواهیم کرد: 289 | 290 | 1. یک تابع تعریف شده توسط کاربر که لیستی از متغیرهای تصادفی تولید می‌کند. 291 | 1. بخش اصلی برنامه که 292 | 1. این تابع را برای دریافت داده فراخوانی می‌کند 293 | 1. داده‌ها را رسم می‌کند 294 | 295 | این کار در برنامه بعدی انجام می‌شود 296 | 297 | (funcloopprog)= 298 | ```{code-cell} python3 299 | def generate_data(n): 300 | ϵ_values = [] 301 | for i in range(n): 302 | e = np.random.randn() 303 | ϵ_values.append(e) 304 | return ϵ_values 305 | 306 | data = generate_data(100) 307 | plt.plot(data) 308 | plt.show() 309 | ``` 310 | 311 | وقتی مفسر به عبارت `generate_data(100)` می‌رسد، بدنه تابع را با `n` برابر با 100 اجرا می‌کند. 312 | 313 | نتیجه خالص این است که نام `data` به لیست `ϵ_values` برگردانده شده توسط تابع *متصل* می‌شود. 314 | 315 | ### اضافه کردن شرط‌ها 316 | 317 | ```{index} single: Python; Conditions 318 | ``` 319 | 320 | تابع `generate_data()` ما نسبتاً محدود است. 321 | 322 | بیایید آن را با دادن قابلیت برگرداندن یا متغیرهای تصادفی نرمال استاندارد یا متغیرهای تصادفی یکنواخت در $(0, 1)$ بر اساس نیاز، کمی مفیدتر کنیم. 323 | 324 | این کار در قطعه کد بعدی انجام می‌شود. 325 | 326 | (funcloopprog2)= 327 | ```{code-cell} python3 328 | def generate_data(n, generator_type): 329 | ϵ_values = [] 330 | for i in range(n): 331 | if generator_type == 'U': 332 | e = np.random.uniform(0, 1) 333 | else: 334 | e = np.random.randn() 335 | ϵ_values.append(e) 336 | return ϵ_values 337 | 338 | data = generate_data(100, 'U') 339 | plt.plot(data) 340 | plt.show() 341 | ``` 342 | 343 | امیدواریم نحو عبارت if/else خود توضیح‌دهنده باشد، با تورفتگی که دوباره محدوده بلوک‌های کد را مشخص می‌کند. 344 | 345 | نکات 346 | 347 | * ما آرگومان `U` را به عنوان یک رشته ارسال می‌کنیم، به همین دلیل آن را به صورت `'U'` می‌نویسیم. 348 | * توجه کنید که برابری با نحو `==` آزمایش می‌شود، نه `=`. 349 | * به عنوان مثال، دستور `a = 10` نام `a` را به مقدار `10` اختصاص می‌دهد. 350 | * عبارت `a == 10` به `True` یا `False` ارزیابی می‌شود، بسته به مقدار `a`. 351 | 352 | حالا، چندین راه وجود دارد که می‌توانیم کد بالا را ساده کنیم. 353 | 354 | به عنوان مثال، می‌توانیم شرط‌ها را کاملاً حذف کنیم و فقط نوع تولیدکننده مورد نظر را *به عنوان یک تابع* ارسال کنیم. 355 | 356 | برای درک این موضوع، نسخه زیر را در نظر بگیرید. 357 | 358 | (test_program_6)= 359 | ```{code-cell} python3 360 | def generate_data(n, generator_type): 361 | ϵ_values = [] 362 | for i in range(n): 363 | e = generator_type() 364 | ϵ_values.append(e) 365 | return ϵ_values 366 | 367 | data = generate_data(100, np.random.uniform) 368 | plt.plot(data) 369 | plt.show() 370 | ``` 371 | 372 | حالا، وقتی تابع `generate_data()` را فراخوانی می‌کنیم، `np.random.uniform` را به عنوان آرگومان دوم ارسال می‌کنیم. 373 | 374 | این شیء یک *تابع* است. 375 | 376 | وقتی فراخوانی تابع `generate_data(100, np.random.uniform)` اجرا می‌شود، پایتون بلوک کد تابع را با `n` برابر با 100 و نام `generator_type` "متصل" به تابع `np.random.uniform` اجرا می‌کند. 377 | 378 | * در حالی که این خطوط اجرا می‌شوند، نام‌های `generator_type` و `np.random.uniform` "مترادف" هستند و می‌توانند به روش‌های یکسان استفاده شوند. 379 | 380 | این اصل به طور کلی‌تر کار می‌کند---به عنوان مثال، قطعه کد زیر را در نظر بگیرید 381 | 382 | ```{code-cell} python3 383 | max(7, 2, 4) # max() is a built-in Python function 384 | ``` 385 | 386 | ```{code-cell} python3 387 | m = max 388 | m(7, 2, 4) 389 | ``` 390 | 391 | در اینجا ما نام دیگری برای تابع داخلی `max()` ایجاد کردیم که سپس می‌توانست به روش‌های یکسان استفاده شود. 392 | 393 | در زمینه برنامه ما، توانایی اتصال نام‌های جدید به توابع به این معنی است که هیچ مشکلی در *ارسال یک تابع به عنوان آرگومان به تابع دیگر* وجود ندارد---همانطور که در بالا انجام دادیم. 394 | 395 | (recursive_functions)= 396 | ## فراخوانی‌های بازگشتی تابع (پیشرفته) 397 | 398 | ```{index} single: Python; Recursion 399 | ``` 400 | 401 | این یک موضوع پیشرفته است که می‌توانید آن را رد کنید. 402 | 403 | در عین حال، این ایده جالبی است که باید در مرحله‌ای از حرفه برنامه‌نویسی خود آن را یاد بگیرید. 404 | 405 | اساساً، یک تابع بازگشتی تابعی است که خودش را فراخوانی می‌کند. 406 | 407 | به عنوان مثال، مسئله محاسبه $x_t$ برای برخی از t را در نظر بگیرید که 408 | 409 | ```{math} 410 | :label: xseqdoub 411 | 412 | x_{t+1} = 2 x_t, \quad x_0 = 1 413 | ``` 414 | 415 | واضح است که جواب $2^t$ است. 416 | 417 | ما می‌توانیم این را به راحتی با یک حلقه محاسبه کنیم 418 | 419 | ```{code-cell} python3 420 | def x_loop(t): 421 | x = 1 422 | for i in range(t): 423 | x = 2 * x 424 | return x 425 | ``` 426 | 427 | همچنین می‌توانیم از یک راه‌حل بازگشتی استفاده کنیم، به شرح زیر 428 | 429 | ```{code-cell} python3 430 | def x(t): 431 | if t == 0: 432 | return 1 433 | else: 434 | return 2 * x(t-1) 435 | ``` 436 | 437 | آنچه در اینجا اتفاق می‌افتد این است که هر فراخوانی متوالی از *فریم* خود در *پشته* استفاده می‌کند 438 | 439 | * فریم جایی است که متغیرهای محلی یک فراخوانی تابع معین نگهداری می‌شود 440 | * پشته حافظه‌ای است که برای پردازش فراخوانی‌های تابع استفاده می‌شود 441 | * یک صف First In Last Out (FILO) 442 | 443 | این مثال تا حدودی ساختگی است، زیرا اولین راه‌حل (تکراری) معمولاً به راه‌حل بازگشتی ترجیح داده می‌شود. 444 | 445 | ما بعداً با کاربردهای کمتر ساختگی بازگشت آشنا خواهیم شد. 446 | 447 | (factorial_exercise)= 448 | ## تمرینات 449 | 450 | ```{exercise-start} 451 | :label: func_ex1 452 | ``` 453 | 454 | به یاد داشته باشید که $n!$ به عنوان "$n$ فاکتوریل" خوانده می‌شود و به صورت 455 | $n! = n \times (n - 1) \times \cdots \times 2 \times 1$ تعریف می‌شود. 456 | 457 | ما فقط $n$ را به عنوان یک عدد صحیح مثبت در نظر می‌گیریم. 458 | 459 | توابعی برای محاسبه این در ماژول‌های مختلف وجود دارد، اما بیایید به عنوان تمرین نسخه خودمان را بنویسیم. 460 | 461 | به طور خاص، تابعی به نام `factorial` بنویسید به طوری که `factorial(n)` برای هر عدد صحیح مثبت $n$ مقدار $n!$ را برگرداند. 462 | 463 | ```{exercise-end} 464 | ``` 465 | 466 | ```{solution-start} func_ex1 467 | :class: dropdown 468 | ``` 469 | 470 | در اینجا یک راه‌حل است: 471 | 472 | ```{code-cell} python3 473 | def factorial(n): 474 | k = 1 475 | for i in range(n): 476 | k = k * (i + 1) 477 | return k 478 | 479 | factorial(4) 480 | ``` 481 | 482 | ```{solution-end} 483 | ``` 484 | 485 | ```{exercise-start} 486 | :label: func_ex2 487 | ``` 488 | 489 | [متغیر تصادفی دوجمله‌ای](https://en.wikipedia.org/wiki/Binomial_distribution) $Y \sim Bin(n, p)$ نشان‌دهنده تعداد موفقیت‌ها در $n$ آزمایش دودویی است که هر آزمایش با احتمال $p$ موفق می‌شود. 490 | 491 | بدون هیچ import به جز `from numpy.random import uniform`، تابعی به نام `binomial_rv` بنویسید به طوری که `binomial_rv(n, p)` یک نمونه از $Y$ تولید کند. 492 | 493 | ```{hint} 494 | :class: dropdown 495 | 496 | اگر $U$ یکنواخت در $(0, 1)$ و $p \in (0,1)$ باشد، آنگاه عبارت `U < p` با احتمال $p$ به `True` ارزیابی می‌شود. 497 | ``` 498 | 499 | ```{exercise-end} 500 | ``` 501 | 502 | ```{solution-start} func_ex2 503 | :class: dropdown 504 | ``` 505 | 506 | در اینجا یک راه‌حل است: 507 | 508 | ```{code-cell} python3 509 | from numpy.random import uniform 510 | 511 | def binomial_rv(n, p): 512 | count = 0 513 | for i in range(n): 514 | U = uniform() 515 | if U < p: 516 | count = count + 1 # Or count += 1 517 | return count 518 | 519 | binomial_rv(10, 0.5) 520 | ``` 521 | 522 | ```{solution-end} 523 | ``` 524 | 525 | ```{exercise-start} 526 | :label: func_ex3 527 | ``` 528 | 529 | اولاً، تابعی بنویسید که یک تحقق از دستگاه تصادفی زیر را برگرداند 530 | 531 | 1. یک سکه بی‌طرفانه را 10 بار پرتاب کنید. 532 | 1. اگر شیر `k` بار یا بیشتر به طور متوالی در این دنباله حداقل یک بار رخ دهد، یک دلار پرداخت کنید. 533 | 1. در غیر این صورت، چیزی پرداخت نکنید. 534 | 535 | ثانیاً، تابع دیگری بنویسید که همان کار را انجام دهد به جز اینکه قانون دوم دستگاه تصادفی بالا به این شکل تبدیل شود 536 | 537 | - اگر شیر `k` بار یا بیشتر در این دنباله رخ دهد، یک دلار پرداخت کنید. 538 | 539 | از هیچ import به جز `from numpy.random import uniform` استفاده نکنید. 540 | 541 | ```{exercise-end} 542 | ``` 543 | 544 | ```{solution-start} func_ex3 545 | :class: dropdown 546 | ``` 547 | 548 | در اینجا تابعی برای دستگاه تصادفی اول است. 549 | 550 | ```{code-cell} python3 551 | from numpy.random import uniform 552 | 553 | def draw(k): # pays if k consecutive successes in a sequence 554 | 555 | payoff = 0 556 | count = 0 557 | 558 | for i in range(10): 559 | U = uniform() 560 | count = count + 1 if U < 0.5 else 0 561 | print(count) # print counts for clarity 562 | if count == k: 563 | payoff = 1 564 | 565 | return payoff 566 | 567 | draw(3) 568 | ``` 569 | 570 | در اینجا تابع دیگری برای دستگاه تصادفی دوم است. 571 | 572 | ```{code-cell} python3 573 | def draw_new(k): # pays if k successes in a sequence 574 | 575 | payoff = 0 576 | count = 0 577 | 578 | for i in range(10): 579 | U = uniform() 580 | count = count + ( 1 if U < 0.5 else 0 ) 581 | print(count) 582 | if count == k: 583 | payoff = 1 584 | 585 | return payoff 586 | 587 | draw_new(3) 588 | ``` 589 | 590 | ```{solution-end} 591 | ``` 592 | 593 | ## تمرینات پیشرفته 594 | 595 | در تمرینات زیر، ما با هم توابع بازگشتی خواهیم نوشت. 596 | 597 | ```{exercise-start} 598 | :label: func_ex4 599 | ``` 600 | 601 | اعداد فیبوناچی به این صورت تعریف می‌شوند 602 | 603 | ```{math} 604 | :label: fib 605 | 606 | x_{t+1} = x_t + x_{t-1}, \quad x_0 = 0, \; x_1 = 1 607 | ``` 608 | 609 | چند عدد اول در این دنباله $0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55$ هستند. 610 | 611 | تابعی برای محاسبه بازگشتی $t$امین عدد فیبوناچی برای هر $t$ بنویسید. 612 | 613 | ```{exercise-end} 614 | ``` 615 | 616 | ```{solution-start} func_ex4 617 | :class: dropdown 618 | ``` 619 | 620 | در اینجا راه‌حل استاندارد است 621 | 622 | ```{code-cell} python3 623 | def x(t): 624 | if t == 0: 625 | return 0 626 | if t == 1: 627 | return 1 628 | else: 629 | return x(t-1) + x(t-2) 630 | ``` 631 | 632 | بیایید آن را آزمایش کنیم 633 | 634 | ```{code-cell} python3 635 | print([x(i) for i in range(10)]) 636 | ``` 637 | 638 | ```{solution-end} 639 | ``` 640 | 641 | ```{exercise-start} 642 | :label: func_ex5 643 | ``` 644 | 645 | تابع `factorial()` از [تمرین 1](factorial_exercise) را با استفاده از بازگشت بازنویسی کنید. 646 | 647 | ```{exercise-end} 648 | ``` 649 | 650 | ```{solution-start} func_ex5 651 | :class: dropdown 652 | ``` 653 | 654 | در اینجا راه‌حل استاندارد است 655 | 656 | ```{code-cell} python3 657 | def recursion_factorial(n): 658 | if n == 1: 659 | return n 660 | else: 661 | return n * recursion_factorial(n-1) 662 | ``` 663 | 664 | بیایید آن را آزمایش کنیم 665 | 666 | ```{code-cell} python3 667 | print([recursion_factorial(i) for i in range(1, 10)]) 668 | ``` 669 | 670 | ```{solution-end} 671 | ``` 672 | -------------------------------------------------------------------------------- /lectures/getting_started.md: -------------------------------------------------------------------------------- 1 | --- 2 | jupytext: 3 | text_representation: 4 | extension: .md 5 | format_name: myst 6 | kernelspec: 7 | display_name: Python 3 8 | language: python 9 | name: python3 10 | --- 11 | 12 | # بیاین شروع کنیم 13 | 14 | ## مقدمه 15 | 16 | در این بخش شما خواهید آموخت که چگونه: 17 | 18 | 1. از پایتون در فضای ابری استفاده کنید 19 | 20 | 1. یک محیط محلی پایتون راه اندازی و اجرا کنید 21 | 22 | 1. دستورات ساده ی پایتون را اجرا کنید 23 | 24 | 1. یک نمونه از برنامه را اجرا کنید 25 | 26 | 1. کتابخانه های برنامه نویسی موردنیاز برای این دوره را نصب کنید 27 | 28 | 29 | ## پایتون در فضای ابری 30 | ساده ترین راه برای شروع کدنویسی در پایتون، اجرای آن در فضای ابری است. ( یعنی با استفاده از یک سرور از راه دور که از قبل روی آن پایتون نصب شده است.) 31 | یکی دیگر از گزینه های رایگان و قابل اعتماد نیز [Google Colab](https://colab.research.google.com/) است. علاوه براین Colab دارای مزیت GPU نیز هست که ما از آن در دوره های پیشرفته تر استفاده خواهیم کرد. آموزش نحوه ی استفاده از Google Colab را می توانید در اینترنت جستجو کنید و ویدیوهای مربوط به آن را پیدا کنید. 32 | 33 | بیشتر دوره های ما شامل یک دکمه «راه اندازی نوت بوک» (با یک آیکون پخش) در بالای سمت راست هستند که شما را به یک نسخه قابل اجرا در Colab متصل می کند. 34 | 35 | ## نصب محلی 36 | اگر به سیستم مناسب دسترسی دارید و قصد دارید حجم قابل توجهی برنامه نویسی با پایتون انجام دهید، نصب محلی انتخاب بهتری است. این روش به شما امکان کنترل و انعطاف پذیری بیشتری در استفاده از ابزارها را می دهد. 37 | 38 | با این حال، نصب محلی در مقایسه با گزینه های ابری مانند Colab نیاز به کار بیشتری دارند. در ادامه ی این بخش، جزئیات مرتبط با نصب محلی توضیح داده می شود. 39 | 40 | ### توزیع آناکوندا 41 | [بسته ی اصلی پایتون](https://www.python.org/downloads/) به راحتی قابل نصب است، اما برای این دوره ی آموزشی گزینه مناسبی نیست. 42 | 43 | در این مجموعه به اکوسیستم کامل برنامه نویسی علمی نیاز داریم که در بسته ی اصلی پایتون ارائه نمی شود و همچنین نصب هر بخش به صورت جداگانه بسیار زمان بر و دشوار است. 44 | 45 | بنابراین، بهترین رویکرد برای اهداف ما نصب توزیعی از پایتون است که شامل زبان اصلی پایتون و نسخه های سازگار از محبوب ترین کتابخانه های علمی باشد که بهترین توزیع برای این منظور [Anaconda Python](https://www.anaconda.com/) است. 46 | 47 | آناکوندا بسیار محبوب، کامل، جامع و دارای قابلیت اجرا بر روی چندین پلتفرم می باشد و البته هیچ ارتباطی با [آهنگی به همین نام از نیکی میناج](https://www.youtube.com/watch?v=LDZX4ooRsWs) ندارد! 48 | 49 | آناکوندا همچنین دارای سیستم مدیریت بسته نیز هست که کتابخانه های برنامه نویسی شما را سازماندهی می کند. 50 | 51 | **تمام مطالبی که در ادامه خواهید آموخت بر این فرض استوار است که شما این توصیه ها را پذیرفته اید!** 52 | 53 | ### نصب آناکوندا 54 | برای نصب آناکوندا فایل باینری را از سایت اصلی آناکوندا [دانلود](https://www.anaconda.com/download/) کرده و دستورالعمل ها را دنبال کنید. 55 | 56 | نکات: 57 | 58 | 59 | * اطمینان حاصل کنید که نسخه ی مناسب سیستم عامل خود را نصب می کنید. 60 | 61 | * اگر در طول فرایند نصب از شما پرسیده شد که آیا آناکوندا را به عنوان نصب پیش فرض پایتون انتخاب می کنید، گزینه "بله" را انتخاب کنید. 62 | 63 | 64 | ### به روزرسانی آناکوندا 65 | آناکوندا ابزاری به اسم `conda` برای مدیریت و ارتقاء بسته های آناکوندای شما فراهم می کند. یکی از دستورات `کوندا` که باید به طور منظم اجرا کنید، دستوری است که کل توزیع آناکوندا را به روز می کند. 66 | به عنوان یک تمرین، لطفا مراحل زیر را اجرا کنید: 67 | 68 | 1. یک ترمینال باز کنید 69 | 70 | 1. عبارت ` conda update anaconda ` را تایپ کنید 71 | 72 | 73 | برای اطلاعات بیشتر درباره کوندا، در ترمینال عبارت " conda help " را تایپ کنید. 74 | 75 | ## ژوپیتر نوت بوک 76 | [ژوپیتر](http://jupyter.org/) نوت بوک ها یکی از چندین راه های قابل دسترس برای ارتباط برقرار کردن با پایتون هستند. 77 | ژوپیتر نوت بوک ها از یک رابط مبتنی بر مرورگر برای دسترسی به پایتون استفاده می کنند که دارای ویژگی های زیر است: 78 | 79 | * قابلیت نوشتن و اجرای دستورات پایتون 80 | 81 | * خروجی قالب بندی شده در مرورگر، شامل جداول، نمودارها، انیمیشن ها و غیره 82 | 83 | * امکان ترکیب متن قالب بندی شده و نمایش عبارات ریاضی 84 | 85 | 86 | به دلیل این قابلیت ها، امروزه ژوپیتر یکی از ابزارهای مهم در اکوسیستم محاسبات علمی محسوب می شود. 87 | در [اینجا](http://matplotlib.org/examples/pylab_examples/hexbin_demo.html) تصویری از اجرای کد در یک ژوپیتر نوت بوک آورده شده است. 88 | 89 | ![نمونه اجرای کد](images/getting-started/jp_demo.png) 90 | 91 | درحالیکه ژوپیتر تنها روش برنامه نویسی در پایتون نیست، اما بهترین گزینه برای موقعیت هایی است که: 92 | 93 | * می خواهید برنامه نویسی با پایتون را شروع کنید 94 | 95 | * ایده های جدید را آزمایش کنید یا فقط بخش های کوچکی از کد را بررسی کنید 96 | 97 | * قصد دارید از محیط های تعاملی قدرتمند آنلاین مانند [Google Colab](https://research.google.com/colaboratory/) استفاده کنید 98 | 99 | * می خواهید ایده های علمی خود را با دانشجویان یا همکاران خود به اشتراک بگذارید و با آنها همکاری کنید 100 | 101 | این مجموعه دروس نیز برای اجرا در ژوپیتر نوت بوک ها طراحی شده اند. 102 | 103 | ### راه اندازی ژوپیتر نوت بوک 104 | 105 | بعد از نصب آناکوندا، شما می توانید ژوپیتر نوت بوک را اجرا کنید. 106 | 107 | برای اینکار می توانید: 108 | 109 | * در منوی برنامه های خود به دنبال Jupyter بگردید 110 | 111 | * یک ترمینال باز کنید و دستور `jupyter notebook`را اجرا کنید 112 | * کاربران ویندوز باید به جای "ترمینال" از "Anaconda Command Prompt" استفاده کنند. 113 | 114 | اگر روش دوم را انتخاب کنید، با چیزی مشابه تصویر زیر رو به رو خواهید شد. 115 | 116 | ![ترمینال](images/getting-started/starting_nb.png) 117 | 118 | خروجی نشان می دهد که نوت بوک در `/http://localhost:8888` در حال اجرا است. 119 | 120 | * `localhost` اسم رایانه ی محلی شماست 121 | 122 | * `8888` [شماره پورتی](https://en.wikipedia.org/wiki/Port_%28computer_networking%29) است که رایانه ی شما از آن استفاده می کند 123 | 124 | 125 | بنابراین، هسته ی ژوپیتر در حال دریافت دستورات پایتون از طریق پورت 8888 در رایانه ی محلی شماست. 126 | 127 | اگر همه چیز به درستی پیش رفته باشد، مرورگر پیش فرض شما باید به طور خودکار یک صفحه ی وب مشابه تصویر زیر را باز کرده باشد. 128 | 129 | ![ژوپیتر](images/getting-started/nb.png) 130 | 131 | 132 | آنچه در اینجا می بینید *داشبورد* ژوپیتر نام دارد. 133 | 134 | اگر به آدرس اینترنتی (URL) بالای صفحه نگاه کنید، باید چیزی مشابه `localhost:8888` وجود داشته باشد که با پیام قبلی مطابقت دارد. 135 | 136 | در صورتیکه همه چیز به درستی کار کرده باشد، اکنون می توانید روی "New" در گوشه ی بالا سمت راست کلیک کنید و `Python 3` یا چیزی مشابه آن را انتخاب کنید. 137 | 138 | در زیر تصویری که در سیستم ما نشان می دهد را میتوانید ببینید: 139 | ![ژوپیتر2](images/getting-started/nb2.png) 140 | 141 | نوت بوک یک سلول کد فعال را نشان می دهد که می توانید دستورات پایتون را در آن وارد کنید. 142 | 143 | ### اصول اولیه نوت بوک 144 | بیاید با نحوه ی ویرایش کد و اجرای برنامه های ساده شروع کنیم. 145 | 146 | #### اجرای سلول ها 147 | در تصویر قبل، سلول درون یک کادر سبز رنگ قرار دارد که نشان می دهد، سلول درحالت ویرایش قرار دارد. 148 | 149 | در این حالت، هر چیزی که تایپ کنید، درون سلول نمایش داده می شود و مکان نما چشمک می زند. 150 | 151 | وقتی آماده ی اجرای کدی که در سلول نوشتید هستید، به جای آنکه به طور معمول از "Enter" استفاده کنید، کلیدهای "Shift + Enter" را بزنید. 152 | 153 | ![ژوپیتر3](images/getting-started/nb3.png) 154 | 155 | ```{note} 156 | همچنین با کمی جستجو می توانید گزینه های منو و دکمه هایی را برای اجرای کد درون سلول پیدا کنید. 157 | ``` 158 | 159 | #### ویرایش در حالت های مختلف 160 | نکته بعدی که باید درباره ی نوت بوک ژوپیتر بدانید این است که از سیستمی برای ویرایش استفاده می کند که شامل *حالت های مختلف* است. 161 | 162 | **یعنی عملکرد صفحه کلید بسته به حالتی که در آن قرار دارید، متفاوت خواهد بود.** 163 | 164 | دوحالت اصلی وجود دارد: 165 | 166 | 1. حالت ویرایش (Edit mode) 167 | 168 | * با یک کادر سبز دور سلول و یک مکان نمای چشمک زن مشخص می شود. 169 | 170 | * هر چیزی که تایپ کنید، به همان شکل در سلول نوشته می شود. 171 | 172 | 173 | 1. حالت فرمان (Command mode) 174 | 175 | * کادر سبز با یک کادر آبی جایگزین می شود. 176 | 177 | * کلیدهای صفحه کلید به عنوان فرمان تفسیر می شوند. (مثلا با زدن کلید `b` ، یک سلول جدید در زیر سلول فعلی ایجاد می شود). 178 | 179 | 180 | برای جا به جایی بین حالت ها: 181 | 182 | * برای رفتن از حالت ویرایش به حالت فرمان: کلید `Esc` یا `Ctrl-M` را بزنید. 183 | 184 | * برای رفتن از حالت فرمان به حالت ویرایش: کلید `Enter` را فشار دهید یا درون یک سلول کلیک کنید. 185 | 186 | وقتی به این رفتار حالت محور عادت کنید، کار با ژوپیتر نوت بوک بسیار سریع و کارآمد خواهد بود. 187 | 188 | #### وارد کردن یونیکد (مثلا حروف یونانی) 189 | پایتون از [یونیکد](https://docs.python.org/3/howto/unicode.html) پشتیبانی می کند، بنابراین می توانید از کاراکترهایی مانند $\alpha$ و $\beta$ در نام گذاری کدهای خود استفاده کنید. 190 | 191 | در یک سلول، عبارت `alpha/` را تایپ کنید و سپس کلید Tab را از صفحه کیبورد خود فشار دهید. 192 | 193 | #### یک برنامه ی آزمایشی 194 | 195 | بیایید یک برنامه آزمایشی اجرا کنیم. 196 | 197 | می توانیم از این برنامه نمونه استفاده کنیم:[http://matplotlib.org/3.1.1/gallery/pie_and_polar_charts/polar_bar.html](http://matplotlib.org/3.1.1/gallery/pie_and_polar_charts/polar_bar.html). 198 | 199 | در آن صفحه، شما کد زیر را مشاهده خواهید کرد: 200 | 201 | ```{code-cell} ipython 202 | import numpy as np 203 | import matplotlib.pyplot as plt 204 | 205 | # Fixing random state for reproducibility 206 | np.random.seed(19680801) 207 | 208 | # Compute pie slices 209 | N = 20 210 | θ = np.linspace(0.0, 2 * np.pi, N, endpoint=False) 211 | radii = 10 * np.random.rand(N) 212 | width = np.pi / 4 * np.random.rand(N) 213 | colors = plt.cm.viridis(radii / 10.) 214 | 215 | ax = plt.subplot(111, projection='polar') 216 | ax.bar(θ, radii, width=width, bottom=0.0, color=colors, alpha=0.5) 217 | 218 | plt.show() 219 | ``` 220 | 221 | فعلا نگران جزئیات نباشید، بیاید فقط اجرا کنیم و ببینیم چه اتفاقی می افتد. 222 | 223 | ساده ترین راه برای اجرای این کد این است که که آن را در یک سلول از نوت بوک کپی و جایگذاری کنید. 224 | 225 | امیدواریم که نموداری مشابه دریافت کنید! 226 | 227 | ### کارکردن با نوت بوک 228 | 229 | در ادامه چند نکته درباره ی کار با ژوپیتر نوت بوک آورده شده است. 230 | 231 | 232 | #### تکمیل خودکار با کلید Tab 233 | 234 | در جلسه ی قبل این خط از کد را اجرا کردیم: `import numpy as np` 235 | 236 | 237 | * Numpy یک کتابخانه ی عددی است که به طور گسترده با آن کار خواهیم کرد. 238 | 239 | 240 | بعد از این دستور، می توانیم به توابع کتابخانه Numpy با استفاده از نحو `np.function_name`دسترسی داشته باشیم. 241 | 242 | * برای مثال بیاید دستور `np.random.randn(3)` را امتحان کنید. 243 | 244 | می توانیم ویژگی های مختلف `np` را با استفاده از کلید Tab بررسی کنیم. 245 | 246 | برای نمونه، کافی است تایپ کنیم `np.random.r` و سپس کلید Tab را فشار دهیم. 247 | 248 | ![numpy](images/getting-started/nb6.png) 249 | 250 | ژوپیتر نوت بوک چندین گزینه ی تکمیل کننده ی خودکار را برای انتخاب در اختیارتان قرار می دهد. 251 | 252 | به همین ترتیب، کلید Tab هم یادآوری می کند که چه قابلیت هایی در دسترس شما قرار دارد و هم باعث صرفه جویی در تایپ می شود. 253 | 254 | #### راهنمای آنلاین 255 | 256 | برای مشاهده ی راهنمای نحو `np.random.randn` کافی است دستور `?np.random.randn` را اجرا کنید. 257 | 258 | مستندات مربوط به این نحو در پنجره ای به طور جداگانه همانند تصویر زیر نمایش داده می شود. 259 | 260 | ![online help](images/getting-started/nb6a.png) 261 | 262 | با کلیک بر روی ضربدر در قسمت بالایی سمت راست در نیم پنجره ی ایجاد شده برای راهنمای دستور، راهنمای آنلاین بسته می شود. 263 | 264 | در ادامه، بیشتر درباره ی نحوه ی ایجاد مستندات مشابه بیشتر یادخواهیم گرفت! 265 | 266 | #### سایر محتواها 267 | 268 | ژوپیتر نوت بوک علاوه بر اجرای کد، به شما امکان می دهد تا متن، معادلات، نمودارها و حتی ویدیوها را در صفحه جایگذاری کنید. 269 | 270 | برای مثال، می توانیم به جای کد ، ترکیبی از متن ساده و لاتکس را وارد کنیم. 271 | 272 | سپس، با فشردن `Esc` وارد حالت فرمان (Command mode) می شویم و با تایپ `m` مشخص می کنیم که در حال نوشتن یک فایل [Markdown](http://daringfireball.net/projects/markdown/) هستیم، Markdown یک زبان نشانه گذاری متن شبیه به لاتکس اما ساده تر از آن است. 273 | 274 | (همچنین می توانید با استفاده از ماوس، گزینه " Markdown " را از منوی کشویی "Code" که درست زیر نوار منو قرار دارد، انتخاب کنید.) 275 | 276 | ![markdown](images/getting-started/nb7.png) 277 | 278 | حال ما کلیدهای `Shift + Enter` را میزنیم تا نتیجه ای مطابق تصویر زیر ایجاد کنیم: 279 | 280 | ![resultmd](images/getting-started/nb8.png) 281 | 282 | ### اشکال زدایی کد 283 | 284 | به فرآیند شناسایی و حذف خطاها از یک برنامه، اشکال زدایی یا Debugging می گویند. 285 | 286 | ازآنجایی که شما زمان زیادی را صرف اشکال زدایی کد خواهید کرد، بنابراین [یادگرفتن نحوه ی انجام درست](https://www.freecodecamp.org/news/what-is-debugging-how-to-debug-code/) آن ضروری است. 287 | 288 | اگر از نسخه ی جدیدتری از ژوپیتر نوت بوک استفاده می کنید، باید نماد یک حشره (bug) را در انتهای سمت راست نوار ابزار خود داشته باشید. 289 | 290 | ![dedugicon](images/getting-started/debug.png) 291 | 292 | با کلیک بر روی این آیکون، اشکال زدایی ژوپیتر فعال می شود. 293 | 294 | ```{note} 295 | ممکن است لازم باشد پنل اشکال زدایی را نیز باز کنید برای اینکار می توانید از این مسیر پیش بروید.(View -> Debugger Panel) 296 | ``` 297 | می توانید با کلیک روی شماره خط سلولی که قصد اشکال زدایی آن را دارید، نقاط توقف (breakpoints) را تنظیم کنید. 298 | 299 | وقتی سلول را اجرا می کنید، اشکال زدایی در نقطه ی توقفی که تنظیم کرده بودید، متوقف می شود. 300 | 301 | سپس می توانید خط به خط کد را با استفاده از دکمه های "Next" که در نوار ابزار CALLSTACK در پنجره ی سمت راست قرار دارد، بررسی کنید. 302 | 303 | ![degug2](images/getting-started/debugger_breakpoint.png) 304 | 305 | می توانید قابلیت های بیشتری از اشکال زدایی در ژوپیتر را در [اینجا](https://jupyterlab.readthedocs.io/en/latest/user/debugger.html) پیدا کنید. 306 | 307 | ### اشتراک گذاری نوت بوک ها 308 | 309 | فایل های نوت بوک صرفا فایل های متنی با ساختار [JSON](https://en.wikipedia.org/wiki/JSON) هستند که معمولا پسوند `.ipynb` دارند. 310 | 311 | شما می توانید آن ها را به همان شیوه که سایر فایل ها را به اشتراک می گذارید، ارسال کنید یا اینکه از سرویس های وب مانند [nbviewer](http://nbviewer.jupyter.org/) استفاده کنید. 312 | 313 | نوت بوک هایی که شما در آن سایت مشاهده می کنید، نسخه های **ایستا (static)** با فرمت HTML هستند. 314 | برای اجرای نوت بوک ها، کافی است روی آیکون دانلود در بالا سمت راست کلیک کنید و آن را با فرمت `ipynb` ذخیره کنید. 315 | 316 | سپس فایل را در جایی روی رایانه ی خودتان ذخیره کنید و از طریق داشبورد ژوپیتر آن را انتخاب کنید و طبق توضیحاتی که پیشتر گفته شد اجرا کنید. 317 | 318 | ```{note} 319 | 320 | اگر به اشتراک گذاری نوت بوک هایی با محتوای تعاملی علاقه مند هستید، پیشنهاد میکنیم [Binder](https://mybinder.org/) را بررسی کنید. 321 | 322 | همچنین برای همکاری با دیگران در نوت بوک ها، می توانید از پلتفرم های زیر استفاده کنید: 323 | 324 | - [Google Colab](https://colab.research.google.com/) 325 | - [Kaggle](https://www.kaggle.com/kernels) 326 | 327 | و اگر میخواهید کدها را به طور اختصاصی برای خود نگه دارید و همچنان از رابط کاربری آشنا مثل JupyterLab و Notenook استفاده کنید، پس نگاهی به [JupyterLab Real-Time Collaboration extension](https://jupyterlab-realtime-collaboration.readthedocs.io/en/latest/) نیز بیندازید. 328 | 329 | ``` 330 | ### سایت QuantEcon Note 331 | همچنین QuantEcon دارای یک سایت اختصاصی برای به اشتراک گذاری ژوپیتر نوت بوک های مرتبط با اقتصاد به نام [QuantEcon Notes](http://notes.quantecon.org/) می باشد. 332 | 333 | نوت بوک هایی که در QuantEcon Note ارسال می شوند، از طریق لینک قابل اشتراگ گذاری هستند و جامعه ی کاربران می توانند به آنها رأی دهند یا نظرشان را به اشتراک بگذارند. 334 | 335 | ## نصب کتابخانه ها 336 | 337 | بیشتر کتابخانه های موردنیاز ما در این دوره در آناکوندا وجود دارند. اما سایر کتابخانه ها را می توان با `conda` یا `pip` نصب کرد. 338 | 339 | یکی از کتابخانه هایی که از آن استفاده خواهیم کرد، [QuantEcon.py](http://quantecon.org/quantecon-py) است. 340 | 341 | شما می توانید با اجرای ژوپیتر و تایپ دستور زیر درون یک سلول [QuantEcon.py](http://quantecon.org/quantecon-py) را نصب کنید. 342 | 343 | ```{code-block} ipython3 344 | :class: no-execute 345 | 346 | !conda install quantecon 347 | ``` 348 | 349 | همچنین می توانید دستور زیر را درون ترمینال تایپ کنید: 350 | 351 | ```{code-block} bash 352 | :class: no-execute 353 | 354 | conda install quantecon 355 | ``` 356 | 357 | اگر به راهنمایی های بیشتری نیاز داشتید می توانید از [صفحه کتابخانه](http://quantecon.org/quantecon-py) اطلاعات موردنیاز خود را کسب کنید. 358 | 359 | همچنین برای به روزرسانی به آخرین نسخه که توصیه می شود به طور منظم انجام دهید، می توانید از دستور زیر استفاده کنید: 360 | 361 | ```{code-block} bash 362 | :class: no-execute 363 | 364 | conda upgrade quantecon 365 | ``` 366 | 367 | کتابخانه دیگری که از آن استفاده خواهیم کرد [interpolation.py](https://github.com/EconForge/interpolation.py) است. 368 | 369 | این کتابخانه را نیز می توانید با استفاده از دستور زیر در ژوپیتر نصب کرد. 370 | 371 | ```{code-block} ipython3 372 | :class: no-execute 373 | 374 | !conda install -c conda-forge interpolation 375 | ``` 376 | ## کار با فایل های پایتون 377 | 378 | تا اینجا بیشتر روی اجرای کدهای پایتون در سلول های ژوپیتر نوت بوک تمرکز کردیم. اما به صورت سنتی، بیشتر کدهای پایتون به شکل دیگری اجرا می شوند. به این شکل که ابتدا کدها در یک فایل متنی روی سیستم ذخیره می شوند که به طور قراردادی دارای پسوند `.py` هستند. 379 | 380 | برای نمونه می توانیم یک نوع از این فایل ایجاد کنیم: 381 | 382 | ```{code-cell} ipython 383 | %%writefile foo.py 384 | 385 | print("foobar") 386 | ``` 387 | 388 | دستور بالا خط `print("foobar")` را در فایلی به نام `foo.py` در مسیر فعلی ذخیره می کند. 389 | 390 | در این کد دستور `%%writefile` نمونه ای از یک جادوی سلولی ([cell magic](http://ipython.readthedocs.org/en/stable/interactive/magics.html#cell-magics)) است! 391 | 392 | ### ویرایش و اجرا 393 | 394 | اگر با کدی مواجه شدید که در یک فایل با پسوند `*.py` ذخیره شده است، لازم است به این دو سوال توجه کنید: 395 | 396 | 1. چگونه باید آن را اجرا کرد؟ 397 | 398 | 1. چگونه می توان آن را ویرایش یا تغییری در آن اعمال کرد؟ 399 | 400 | برای این کارها شما دو گزینه پیش روی خود دارید! 401 | 402 | #### گزینه اول: JupyterLab 403 | 404 | محیط [JupyterLab](https://github.com/jupyterlab/jupyterlab) یک محیط توسعه ی یکپارچه (IDE) است که بر پایه ی نوت بوک ها ژوپیتر ساخته شده است. با استفاده از JupyterLab می توانید فایل هایی با پسوند `*.py` را همانند ژوپیتر نوت بوک ها را ویرایش و اجرا کنید. 405 | 406 | برای اجرای JupyterLab می توانید آن را در فهرست برنامه ها جستجو کنید یا در ترمینال دستور `jupyter-lab` را وارد نمایید. 407 | 408 | اکنون باید بتوانید فایل `foo.py` را که در مرحله ی قبل ساخته بودید در JupyterLab بازکرده، ویرایش و اجرا کنید. 409 | 410 | برای اطلاعات بیشتر، می توانید مستندات رسمی را مطالعه کنید یا یک ویدیوی آموزشی جدید در این باره در یوتیوب تماشا کنید. 411 | 412 | #### گزینه دوم: استفاده از یک ویرایشگر متن 413 | 414 | همچنین می توانید فایل ها را با یک ویرایشگر متن ویرایش کرده و سپس آن را از طریق ژوپیتر نوت بوک اجرا کنید. 415 | 416 | به طور کلی، ویرایشگر متن برنامه ای است که به طور اختصاصی برای کار با فایل های متنی مانند برنامه های پایتون طراحی شده است. 417 | 418 | البته هیچ چیز قدرت و کارایی یک ویرایشگر متن خوب را برای کار با کدهای برنامه نویسی را ندارد. 419 | 420 | یک ویرایشگر خوب امکانات زیر را ارائه می دهد: 421 | 422 | 423 | * فرمان های کارآمد برای ویرایش متن(مثل کپی، جایگذاری، جست وجو و جایگزینی) 424 | * برجسته سازی نحوی (syntax highlighting) برای خوانایی بهتر کد و امکانات مشابه دیگر 425 | 426 | 427 | در حال حاضر، یکی از محبوب ترین ویرایشگرهای متنی برای برنامه نویسی [VS Code](https://code.visualstudio.com/) است، که کاربری بسیار آسانی دارد و افزونه های باکیفیت زیادی برای آن عرضه شده است. 428 | 429 | از طرف دیگر، اگر به دنبال یک ویرایشگر رایگان و قدرتمند هستید و با یک منحنی یادگیری عمودی، چندین روز سردرگمی و دردسر و بازسازی کامل مسیرهای عصبی مغزی خود کنار می آیید، میتوانید [Vim](http://www.vim.org/) را امتحان کنید! 430 | 431 | ## تمرینات 432 | 433 | ```{exercise-start} 434 | :label: gs_ex1 435 | ``` 436 | 437 | اگر هنوز ژوپیتر در حال اجرا است، آن را با فشردن ترکیب کلیدها `Ctrl-C` در ترمینالی که از آن شروع کرده اید، ببندید. 438 | 439 | حالا دوباره ژوپیتر را این بار با استفاده از کد دستوری `jupyter notebook --no-browser` باز کنید. 440 | 441 | با این کار، هسته ی ژوپیتز (kernel) بدون آنکه مرورگر به صورت خودکار باز شود، راه اندازی می شود. 442 | 443 | همچنین به پیامی که هنگام شروع نمایش داده می شود دقت کنید: باید یک آدرس(URL) مانند `http://localhost:8888` به شما بدهد که نوت بوک در آن درحال اجرا است. 444 | 445 | اکنون وقت آن است که: 446 | 447 | 1. مرورگر خود را اجرا کنید (یا اگر باز است، یک تب جدید باز کنید.) 448 | 449 | 1. آدرسی که در مرحله قبل داده شده (مثلا `http://localhost:8888`) را در نوار آدرس وارد کنید. 450 | 451 | اکنون باید بتوانید یک جلسه ی معمولی از نوت بوک ژوپیتر را اجرا کنید. 452 | 453 | این روش، جایگزین دیگری برای اجرای نوت بوک است که می تواند در برخی موقعیت ها مفید باشد. 454 | برای نمونه، اگر صفحه ی وب تصادفا بسته شود ولی هسته ی ژوپیتر هنوز فعال باشد، همچنان می توانید از این طریق دوباره به نوت بوک دسترسی پیدا کنید. 455 | 456 | ```{exercise-end} 457 | ``` 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | -------------------------------------------------------------------------------- /lectures/python_by_example.md: -------------------------------------------------------------------------------- 1 | --- 2 | jupytext: 3 | text_representation: 4 | extension: .md 5 | format_name: myst 6 | kernelspec: 7 | display_name: Python 3 8 | language: python 9 | name: python3 10 | --- 11 | 12 | (python_by_example)= 13 | # یک مثال مقدماتی 14 | 15 | ## مقدمه 16 | 17 | حال ما آماده ایم تا یادگیری زبان برنامه نویسی پایتون را آغاز کنیم. 18 | 19 | در این بخش، ابتدا چند کد کوتاه پایتون می نویسیم و سپس آنها را بررسی و تحلیل می کنیم. 20 | 21 | هدف این درس، آشنایی شما با نحو(syntax) پایه ای پایتون و ساختارهای داده ای آن است و با مباحث پیچیده تر در جلسات بعد آشنا خواهیم شد. 22 | 23 | پیش از شروع این درس، باید جلسه ی قبل را مطالعه کرده باشید. 24 | 25 | ## هدف:رسم یک فرآیند نویز سفید 26 | 27 | فرض کنید می خواهیم یک فرآیند نویز سفید به صورت 28 | 29 | ϵ 30 | 0 31 | 32 | , 33 | 34 | ϵ 35 | 1 36 | 37 | , 38 | 39 | , 40 | 41 | ϵ 42 | T 43 | 44 | ، شبیه سازی و رسم کنیم، که در آن هر 45 | 46 | ϵ 47 | t 48 | 49 | یک مقدار مستقل و از توزیع نرمال استاندارد است. 50 | 51 | به بیان دیگر، می خواهیم نمودارهایی همانند نمودار زیر تولید کنیم: 52 | 53 | ![نمودار فرآیند نویز سفید](images/python_by_example/test_program_1_updated.png) 54 | 55 | (در اینجا 56 | t 57 | محور افقی و 58 | 59 | ϵ 60 | t 61 | 62 | محور عمودی است.) 63 | 64 | ما این کار را به چند روش مختلف انجام خواهیم داد و هر بار نکات بیشتری درباره ی پایتون خواهیم آموخت. 65 | 66 | ## روش اول 67 | 68 | در ادامه چند خط کد آمده که کاری را که تعریف کرده بودیم، انجام می دهد. 69 | 70 | ```{code-cell} ipython 71 | import numpy as np 72 | import matplotlib.pyplot as plt 73 | 74 | ϵ_values = np.random.randn(100) 75 | plt.plot(ϵ_values) 76 | plt.show() 77 | ``` 78 | بیایید این برنامه را تجزیه و تحلیل کنیم و ببینیم چگونه کار میکند. 79 | 80 | ### Imports 81 | 82 | دو خط اول کد، قابلیت هایی را از کتابخانه های خارجی وارد می کند. 83 | 84 | خط اول NumPY را وارد می کند؛ بسته ای محبوب در پایتون برای کارهایی مانند: 85 | 86 | 87 | * کار با آرایه ها (بردارها و ماتریس ها) 88 | 89 | * توابع ریاضی رایج مانند `cos` و `sqrt` 90 | 91 | * تولید اعداد تصادفی 92 | 93 | * جبر خطی و غیره. 94 | 95 | پس از وارد کردن کتابخانه با دستور `import numpy as np`، می توانیم از طریق نحو `np.attribute` به این قابلیت ها دسترسی پیدا کنیم. 96 | 97 | در ادامه دو مثال دیگر آورده ایم: 98 | 99 | ```{code-cell} python3 100 | np.sqrt(4) 101 | ``` 102 | 103 | ```{code-cell} python3 104 | np.log(4) 105 | ``` 106 | 107 | #### چرا در برنامه نویسی پایتون، از Importهای متعددی استفاده می شود؟ 108 | 109 | برنامه های پایتون معمولا به چندین دستور `import` نیاز دارند. 110 | 111 | دلیل این موضوع این است که هسته ی زبانی پایتون عمداً کوچک نگه داشته شده تا یادگیری، نگهداری و توسعه ی آن آسان باشد. 112 | 113 | وقتی بخواهید کارهای جالب تر و پیشرفته تری با پایتون انجام دهید، تقریبا همیشه باید قابلیت های اضافی را با استفاده از `import` به برنامه اضافه کنید. 114 | 115 | #### پکیج ها(Packages) 116 | 117 | همانطور که پیشتر گفته شد، NumPy یک پکیج پایتونی است. 118 | 119 | پکیج ها ابزاری هستند که توسعه دهندگان برای سازمان دهی کدی که می خواهند به اشتراک بگذارند از آن ها استفاده می کنند. 120 | 121 | در واقع، یک **پکیج** چیزی نیست جز یک پوشه (دایرکتوری) که شامل موارد زیر است: 122 | 123 | 124 | 1. فایل هایی حاوی کد پایتون - که در اصطلاح پایتون به آن ها **ماژول** (modules)گفته می شود. 125 | 126 | 1. گاهی ممکن است شامل کدهایی کامپایل شده باشد که پایتون توانایی دسترسی به آن ها را دارد (مثلا توابعی که از زبان هایی مثل C یا FORTRAN کامپایل شده اند) 127 | 128 | 1. فایلی به نام `__init__.py` که مشخص می کند هنگامی که می نویسیم `import package_name` چه چیزی اجرا شود 129 | 130 | 131 | می توانید با اجرای کد زیر در پایتون، محل فایل `__init__.py` مربوط به NumPY را بررسی کنید: 132 | 133 | ```{code-block} ipython 134 | :class: no-execute 135 | 136 | import numpy as np 137 | 138 | print(np.__file__) 139 | ``` 140 | 141 | #### زیرپکیج ها (Subpackages) 142 | 143 | به خط حاوی `ϵ_values = np.random.randn(100)` در کد توجه کنید. 144 | 145 | در این دستور، `np` به پکیج NumPY اشاره دارد، و `random` یک زیرپکیج از NumPY است. 146 | 147 | زیرپکیج ها در واقع همان پکیج هایی هستند که به صورت زیرپوشه(ساب دایرکتوری) درون یک پکیج دیگر قرار دارند. 148 | 149 | برای مثال اگر به ساختار پکیج NumPY نگاه کنید، می توانید پوشه ای به نام `random` را درون آن پیدا کنید. 150 | 151 | ### وارد کردن مستقیم توابع یا متغیرها از یک پکیج 152 | 153 | کدی را که پیشتر دیدیم به خاطر بیاورید 154 | 155 | ```{code-cell} python3 156 | import numpy as np 157 | 158 | np.sqrt(4) 159 | ``` 160 | در اینجا روش دیگری برای دسترسی به تابع جذر در NumPY آمده است. 161 | 162 | ```{code-cell} python3 163 | from numpy import sqrt 164 | 165 | sqrt(4) 166 | ``` 167 | این روش هم کاملا درست کار می کند. 168 | 169 | مزیت این روش این است که اگر در کد خود از `sqrt` زیاد استفاده کنیم، در این صورت تایپ کمتری خواهیم داشت. 170 | 171 | اما عیب آن این است که در یک کد طولانی، ممکن است این دو خط با تعداد زیادی از خطوط دیگر از هم جدا شوند. 172 | در این صورت خوانندگان اگر بخواهند بدانند که `sqrt` از کجا آمده، برای فهمیدن منبع آن دچار مشکل خواهند شد. 173 | 174 | ### نمونه گیری تصادفی 175 | 176 | بیاید به کدی که نویز سفید رسم می کند برگردیم. سه خط بعد از دستور Import به این صورت هستند: 177 | 178 | ```{code-cell} ipython 179 | ϵ_values = np.random.randn(100) 180 | plt.plot(ϵ_values) 181 | plt.show() 182 | ``` 183 | خط اول 100 عدد نرمال استاندارد (تقریبا) مستقل تولید می کند و آن ها را در متغیر `ϵ_values` ذخیره می کند. 184 | 185 | دو خط بعدی نمودار را رسم می کنند. 186 | 187 | در ادامه، روش های مختلفی را بررسی خواهیم کرد تا بتوانیم این نمودار را بهتر تنظیم و بهینه سازی کنیم. 188 | 189 | ## روش های دیگر پیاده سازی برنامه 190 | 191 | بیایید چندتا نسخه ی جایگزین برای اولین برنامه مان بنویسیم؛ برنامه ای که مقادیر تصادفی مستقل و با توزیع یکسان (IID) از توزیع نرمال استاندارد را رسم می کرد. 192 | 193 | برنامه هایی که در ادامه می بینید، نسبت به نسخه اصلی کارایی کمتری دارند و از این نظر کمی غیرطبیعی هستند. اما آنها به ما کمک می کنند تا برخی از سینتکس ها و معانی مهم پایتون را در یک محیط آشنا نشان دهیم. 194 | 195 | ### یک نسخه با حلقه تکرار For 196 | 197 | این نسخه حلقه های `For` و لیست های پایتون را نشان می دهد. 198 | 199 | ```{code-cell} python3 200 | ts_length = 100 201 | ϵ_values = [] # empty list 202 | 203 | for i in range(ts_length): 204 | e = np.random.randn() 205 | ϵ_values.append(e) 206 | 207 | plt.plot(ϵ_values) 208 | plt.show() 209 | ``` 210 | 211 | به طور خلاصه: 212 | 213 | 214 | * خط اول طول موردنظر برای سری زمانی را تعیین می کند. 215 | 216 | * خط بعدی یک لیست خالی به نام `ϵ_values` ایجاد می کند که مقادیر تولید شده را در خود ذخیره خواهد کرد. 217 | 218 | * عبارت `# empty list` یک توضیح (کامنت) است و توسط مفسر پایتون نادیده گرفته می شود. 219 | 220 | * سه خط بعدی حلقه `For` هستند که به طور پیوسته یک عدد تصادفی جدید 221 | 222 | ϵ 223 | t 224 | 225 | تولید می کنند و آنها را به انتهای لیست `ϵ_values` اضافه می کنند. 226 | 227 | * دو خط آخر نمودار را تولید کرده و به کاربر نمایش می دهند. 228 | 229 | 230 | بیایید برخی از بخش های این کد را با جزئیات بیشتری بررسی کنیم. 231 | 232 | ### لیست ها 233 | 234 | دستور `ϵ_values = []` را در نظر بگیرید، این دستور یک لیست خالی ایجاد می کند. 235 | 236 | لیست ها یک ساختار داده داخلی در پایتون هستند که برای گروه بندی مجموعه ای از اشیا استفاده می شوند. 237 | 238 | همچنین لیست ها ترتیب عناصر را حفظ می کنند و اجازه وجود داده های تکراری را نیز می دهند. 239 | 240 | برای مثال، این کد را امتحان کنید: 241 | 242 | ```{code-cell} python3 243 | x = [10, 'foo', False] 244 | type(x) 245 | ``` 246 | 247 | عنصر اول لیست X یک [عدد صحیح (integer)](https://en.wikipedia.org/wiki/Integer_(computer_science)) است، عنصر بعدی یک [رشته متنی (string)](https://en.wikipedia.org/wiki/String_(computer_science))، و عنصر سوم یک مقدار [بولین (Boolean value)](https://en.wikipedia.org/wiki/Boolean_data_type) می باشد. 248 | 249 | برای اضافه کردن مقدار به لیست میتوانیم از دستور `list_name.append(some_value)` استفاده کنیم. 250 | 251 | ```{code-cell} python3 252 | x 253 | ``` 254 | 255 | ```{code-cell} python3 256 | x.append(2.5) 257 | x 258 | ``` 259 | در اینجا `()append` یک **متد** **(method)** محسوب می شود. متد ها توابعی هستند که به یک شیء متصل می شوند. (در اینجا به لیست X متصل شده است) 260 | 261 | ما در ادامه به طور کامل با متدها آشنا خواهیم شد، اما برای درک اولیه: 262 | 263 | 264 | * اشیاء پایتون مانند لیست ها، رشته ها و غیره همگی دارای متد هایی هستند که برای پردازش و تغییر داده های درون شیء استفاده می شوند. 265 | 266 | * هر نوع شیء در پایتون متدهای مخصوص به خود را دارد، برای مثال اشیاء رشته ای دارای [متدهای مخصوص رشته ها](https://docs.python.org/3/library/stdtypes.html#string-methods) هستند ،لیست ها [متد لیستی](https://docs.python.org/3/tutorial/datastructures.html#more-on-lists) دارند. 267 | 268 | یکی دیگر از متدهای کاربردی لیست، `()pop` است. 269 | 270 | ```{code-cell} python3 271 | x 272 | ``` 273 | 274 | ```{code-cell} python3 275 | x.pop() 276 | ``` 277 | 278 | ```{code-cell} python3 279 | x 280 | ``` 281 | 282 | در پایتون، شماره گذاری عناصر لیست ها از صفر شروع می شود یا به عبارتی zero-based هستند.(همانند زبان های C، جاوا یا Go) به این معنا که اولین عنصر لیست با `x[0]` ارجاع داده می شود. 283 | 284 | ```{code-cell} python3 285 | x[0] # first element of x 286 | ``` 287 | 288 | ```{code-cell} python3 289 | x[1] # second element of x 290 | ``` 291 | 292 | ### حلقه For 293 | 294 | حالا بیایید حلقه `for` از برنامه ای که قبلا نوشتیم را دوباره بررسی کنیم: 295 | 296 | ```{code-cell} python3 297 | for i in range(ts_length): 298 | e = np.random.randn() 299 | ϵ_values.append(e) 300 | ``` 301 | 302 | در اینجا پایتون دو خط تورفته (indented lines) را به تعداد `ts_length` بار قبل از اینکه به ادامه کد برود، اجرا می کند. 303 | 304 | این دو خط به عنوان یک **بلوک کد (code block)** شناخته می شوند، چرا که "بلوک" کدی را تشکیل می دهد که در حلقه تکرار می شوند. 305 | 306 | برخلاف اکثر زبان های برنامه نویسی دیگر، پایتون محدوده بلوک را **فقط از روی تو رفتگی** تشخصی می دهد. 307 | 308 | در برنامه ای که ما نوشته ایم، کاهش تورفتگی پس از خط `ϵ_values.append(e)` ، به پایتون می فهماند که این خط نشان دهنده انتهای بلوک کد است. 309 | 310 | بعدا بیشتر درباره تورفتگی (indentation) صحبت خواهیم کرد؛ اما حالا بیایید به مثال دیگری از حلقه For بپردازیم: 311 | 312 | ```{code-cell} python3 313 | animals = ['dog', 'cat', 'bird'] 314 | for animal in animals: 315 | print("The plural of " + animal + " is " + animal + "s") 316 | ``` 317 | 318 | این مثال به شفاف سازی نحوه عملکرد حلقه `for` کمک می کند: هنگامیکه یک حلقه با ساختار زیر اجرا می کنیم 319 | 320 | ```{code-block} python3 321 | :class: no-execute 322 | 323 | for variable_name in sequence: 324 | 325 | ``` 326 | 327 | مفسر پایتون مراحل زیر را انجام می دهد: 328 | 329 | * برای هر عنصر از دنباله `sequence`، نام متغیر `variable_name` را به آن عنصر متصل (blind) می کند و سپس بلوک کد را اجرا می کند. 330 | 331 | ### یادداشتی درباره تورفتگی (Indentation) 332 | 333 | در بحث درباره حلقه `for` توضیح دادیم که بلوک های کدی که در حلقه تکرار می شوند با تورفتگی (indentation) مشخص می شوند. 334 | 335 | در واقع در پایتون، **همه** بلوک های کد (شامل آن هایی که درون حلقه ها، شروط if، تعریف توابع و موارد مشابه قرار دارند) با تورفتگی از یکدیگر متمایز می شوند. 336 | 337 | برخلاف اکثر زبان های برنامه نویسی دیگر، فاصله های سفید (whitespace) در کد پایتون مستقیما بر خروجی برنامه تاثیر می گذارند. 338 | 339 | یکبار که از آن اساده کنید، مزایای کار با آن برایتان آشکار می شود؛ زیرا این قابلیت: 340 | 341 | * تورفتگی های تمیز و منسجم ایجاد می کند و خوانایی را بهبود می بخشد. 342 | 343 | * بی نظمی هایی مانند براکت ها یا دستورات پایانی که در زبان های دیگر استفاده می شوند را حذف می کند. 344 | 345 | از سوی دیگر، استفاده صحیح از این قابلیت به کمی دقت نیاز دارد، پس بنابراین به یادداشته باشید: 346 | 347 | 348 | * خط ماقبل شروع یک بلوک کد با یک دونقطه (:) پایان می یابد، همانند مثال های زیر : 349 | 350 | * `for i in range(10):` 351 | * `if x > y:` 352 | * `while x < 100:` 353 | 354 | * همه ی خطوط داخل یک بلوک کد باید مقدار یکسانی تورفتگی داشته باشند. 355 | 356 | * استاندارد پایتون برای تورفتگی، 4 فاصله (space) است و شما هم باید از همین مقدار استقاده کنید. 357 | 358 | 359 | ### حلقه های While 360 | 361 | حلقه `for` رایج ترین تکنیک برای تکرار در پایتون است. 362 | 363 | اما برای توضیح بهتر، اجازه دهید برنامه ای را که قبلا نوشتیم، تغییر دهیم و از یک حلقه `while` به جای آن استقاده کنیم. 364 | 365 | ```{code-cell} python3 366 | ts_length = 100 367 | ϵ_values = [] 368 | i = 0 369 | while i < ts_length: 370 | e = np.random.randn() 371 | ϵ_values.append(e) 372 | i = i + 1 373 | plt.plot(ϵ_values) 374 | plt.show() 375 | ``` 376 | 377 | حلقه while به اجرای بلوک کد (که با تورفتگی مشخص شده است)ادامه می دهد تا زمانی که شرط (```i < ts_length```) برقرار باشد. 378 | 379 | در این حالت، برنامه به افزودن مقادیر به لیست ```ϵ_values``` ادامه می دهد تا زمانی که ```i``` برابر با ```ts_length``` شود: 380 | 381 | ```{code-cell} python3 382 | i == ts_length #the ending condition for the while loop 383 | ``` 384 | 385 | توجه داشته باشید که: 386 | 387 | * بلوک کد مربوط به حلقه `while` تنها با تورفتگی (indentation) مشخص می شود. 388 | 389 | * عبارت `i = i + 1` را می توان با `i += 1` جایگزین کرد. 390 | 391 | ## یک کاربرد دیگر 392 | 393 | بیایید قبل از پرداختن به تمرینات، یک کاربرد دیگر را بررسی کنیم. 394 | 395 | در این مثال، موجودی یک حساب بانکی را در طول زمان رسم می کنیم. 396 | 397 | در این بازه زمانی هیچ برداشتی انجام نشده و تاریخ پایان دوره را با $T$ نشان می دهیم. 398 | 399 | موجودی اولیه 400 | 401 | b 402 | 0 403 | 404 | و نرخ بهره $r$ است. 405 | 406 | موجوی حساب از دوره $t$ به 407 | t 408 | + 409 | 1 410 | طبق رابطه 411 | 412 | b 413 | 414 | t 415 | + 416 | 1 417 | 418 | 419 | = 420 | ( 421 | 1 422 | + 423 | r 424 | ) 425 | 426 | b 427 | t 428 | 429 | به روزرسانی می شود. 430 | 431 | در کد زیر دنباله ی 432 | 433 | b 434 | 0 435 | 436 | , 437 | 438 | b 439 | 1 440 | 441 | , 442 | 443 | , 444 | 445 | b 446 | T 447 | 448 | را تولید و رسم می کنیم. 449 | 450 | برای ذخیره این دنباله، به جای استفاده از یک لیست پایتون، از یک آرایه NumPy استفاده خواهیم کرد. 451 | 452 | ```{code-cell} python3 453 | r = 0.025 # interest rate 454 | T = 50 # end date 455 | b = np.empty(T+1) # an empty NumPy array, to store all b_t 456 | b[0] = 10 # initial balance 457 | 458 | for t in range(T): 459 | b[t+1] = (1 + r) * b[t] 460 | 461 | plt.plot(b, label='bank balance') 462 | plt.legend() 463 | plt.show() 464 | ``` 465 | 466 | عبارت `b = np.empty(T+1)` حافظه ای برای ذخیره اعداد `T+1` (که اعداد اعشاری هستند) اختصاص می دهد. 467 | 468 | سپس این اعداد توسط حلقه ی `for` مقداردهی می شوند. 469 | 470 | اختصاص دادن حافظه در ابتدای کار کارآمدتر از استقاده از یک لیست پایتون و متد `append` است، چون در روش دوم، برنامه باید به طور مکرر از سیستم عامل درخواست فضای حافظه جدید کند. 471 | 472 | توجه کنید که ما به نمودار یک راهنما یا عنوان نمادها (legend) را اضافه کرده ایم ؛ قابلیتی که از شما خواسته خواهد شد در تمرینات استفاده کنید. 473 | 474 | ## تمرینات 475 | 476 | اکنون به سراغ تمرین ها می رویم. مهم است که آنها را قبل از اینکه به سراغ درس بعدی بروید کامل کنید، زیرا این تمرین ها مفاهیم جدیدی را معرفی می کنند که در ادامه به آن ها نیاز خواهیم داشت. 477 | 478 | ```{exercise-start} 479 | :label: pbe_ex1 480 | ``` 481 | 482 | اولین تکلیف شما شبیه سازی و رسم نمودار یک سری زمانی همبسته (correlated time series 483 | ) است. 484 | 485 | $$ 486 | x_{t+1} = \alpha \, x_t + \epsilon_{t+1} 487 | \quad \text{where} \quad 488 | x_0 = 0 489 | \quad \text{and} \quad t = 0,\ldots,T 490 | $$ 491 | 492 | فرض می شود که دنباله ی شوک ها 493 | { 494 | 495 | ϵ 496 | t 497 | 498 | } 499 | مستقل و با توزیع یکسان(IID)، و دارای توزیع نرمال استاندارد باشد. 500 | 501 | در راه حل خود، دستورات import را تنها به موارد زیر محدود و تنها از کتابخانه های زیر استفاده کنید 502 | 503 | ```{code-cell} python3 504 | import numpy as np 505 | import matplotlib.pyplot as plt 506 | ``` 507 | 508 | مقادیر $T$ و $\alpha$ را به ترتیب $T=200$ و $\alpha = 0.9$ قرار دهید. 509 | 510 | ```{exercise-end} 511 | ``` 512 | 513 | ```{solution-start} pbe_ex1 514 | :class: dropdown 515 | ``` 516 | 517 | یک راه حل این است: 518 | 519 | ```{code-cell} python3 520 | α = 0.9 521 | T = 200 522 | x = np.empty(T+1) 523 | x[0] = 0 524 | 525 | for t in range(T): 526 | x[t+1] = α * x[t] + np.random.randn() 527 | 528 | plt.plot(x) 529 | plt.show() 530 | ``` 531 | 532 | ```{solution-end} 533 | ``` 534 | 535 | ```{exercise-start} 536 | :label: pbe_ex2 537 | 538 | با استفاده از راه حل تمرین 1، یک سری زمانی شبیه سازی شده رسم کنید؛ یکی برای هر کدام از حالت های $\alpha=0$، $\alpha=0.8$ و $\alpha=0.98$. 539 | 540 | از یک حلقه `for` برای پیمایش مقادیر مختلف $\alpha$ استفاده کنید. 541 | 542 | اگر میتوانید، یک راهنما(legend) به نمودار اضافه کنید تا بتوان تفاوت بین این سه سری زمانی را تشخیص داد. 543 | 544 | ```{hint} 545 | :class: dropdown 546 | 547 | * اگر چندبار تابع `plot()` را قبل از فراخوانی `show()` اجرا کنید، تمام خطوط رسم شده در یک نمودار نمایش داده خواهند شد. 548 | 549 | * برای افزودن راهنما (legend)، توجه داشته باشید که اگر متغیر `var = 42` باشد، عبارت `f'foo{var}'` به رشته `'foo42'` تبدیل می شود. 550 | ``` 551 | 552 | ```{exercise-end} 553 | ``` 554 | 555 | 556 | ```{solution-start} pbe_ex2 557 | :class: dropdown 558 | ``` 559 | 560 | ```{code-cell} python3 561 | α_values = [0.0, 0.8, 0.98] 562 | T = 200 563 | x = np.empty(T+1) 564 | 565 | for α in α_values: 566 | x[0] = 0 567 | for t in range(T): 568 | x[t+1] = α * x[t] + np.random.randn() 569 | plt.plot(x, label=f'$\\alpha = {α}$') 570 | 571 | plt.legend() 572 | plt.show() 573 | ``` 574 | 575 | ```{note} 576 | عبارت `f'$\\alpha = {α}$'` در راه حل، نمونه ای از اف-استرینگ ([f-String](https://docs.python.org/3/tutorial/inputoutput.html#tut-f-strings)) در پایتون است. این قابلیت به شما اجازه می دهد تا از `{}` برای قراردادن یک عبارت درون رشته استفاده کنید. 577 | 578 | عبارت داخل `{}` ارزیابی (محاسبه) می شود و نتیجه ی آن درون رشته جایگزین می گردد. 579 | ``` 580 | 581 | ```{solution-end} 582 | ``` 583 | 584 | ```{exercise-start} 585 | :label: pbe_ex3 586 | 587 | همانند تمرینات قبلی، سریزمانی را رسم کنید. 588 | 589 | $$ 590 | x_{t+1} = \alpha \, |x_t| + \epsilon_{t+1} 591 | \quad \text{where} \quad 592 | x_0 = 0 593 | \quad \text{and} \quad t = 0,\ldots,T 594 | $$ 595 | 596 | همانند قبل از $T=200$، $\alpha = 0.9$ و $\{\epsilon_t\}$ استفاده کنید. 597 | 598 | به صورت آنلاین جست و جو کنید و یک تابع پیدا کنید که بتوان برای محاسبه قدرمطلق 599 | | 600 | 601 | x 602 | t 603 | 604 | | 605 | از آن استفاده کرد. 606 | ``` 607 | 608 | ```{exercise-end} 609 | ``` 610 | 611 | 612 | ```{solution-start} pbe_ex3 613 | :class: dropdown 614 | ``` 615 | 616 | یک راه حل این است: 617 | 618 | ```{code-cell} python3 619 | α = 0.9 620 | T = 200 621 | x = np.empty(T+1) 622 | x[0] = 0 623 | 624 | for t in range(T): 625 | x[t+1] = α * np.abs(x[t]) + np.random.randn() 626 | 627 | plt.plot(x) 628 | plt.show() 629 | ``` 630 | 631 | ```{solution-end} 632 | ``` 633 | 634 | ```{exercise-start} 635 | :label: pbe_ex4 636 | ``` 637 | 638 | یکی از جنبه های مهم، تقریبا در تمام زبان های برنامه نویسی، برنچینگ (branching) و شرط ها (conditions) هستند. 639 | 640 | در پایتون، شرط ها معمولا با استفاده از دستور if--else پیاده سازی می شوند. 641 | 642 | در اینجا یک مثال آورده شده است که برای هر عدد منفی در یک آرایه مقدار 1- را چاپ می کند و برای هر عدد صفر یا مثبت مقدار 1 را خروجی می دهد: 643 | 644 | ```{code-cell} python3 645 | numbers = [-9, 2.3, -11, 0] 646 | ``` 647 | 648 | ```{code-cell} python3 649 | for x in numbers: 650 | if x < 0: 651 | print(-1) 652 | else: 653 | print(1) 654 | ``` 655 | اکنون یک راه حل جدید برای تمرین 3 بنویسید که در آن از هیچ تابع آماده ای برای محاسبه قدرمطلق استفاده نشده باشد. 656 | 657 | به جای استفاده از تابع آماده، از یک دستور شرطی if--else برای محاسبه ی قدرمطلق استفاده کنید. 658 | 659 | ```{exercise-end} 660 | ``` 661 | 662 | ```{solution-start} pbe_ex4 663 | :class: dropdown 664 | ``` 665 | 666 | یک روش این است: 667 | 668 | ```{code-cell} python3 669 | α = 0.9 670 | T = 200 671 | x = np.empty(T+1) 672 | x[0] = 0 673 | 674 | for t in range(T): 675 | if x[t] < 0: 676 | abs_x = - x[t] 677 | else: 678 | abs_x = x[t] 679 | x[t+1] = α * abs_x + np.random.randn() 680 | 681 | plt.plot(x) 682 | plt.show() 683 | ``` 684 | 685 | در اینجا نیز روش کوتاه تری برای نوشتن همان برنامه وجود دارد: 686 | 687 | ```{code-cell} python3 688 | α = 0.9 689 | T = 200 690 | x = np.empty(T+1) 691 | x[0] = 0 692 | 693 | for t in range(T): 694 | abs_x = - x[t] if x[t] < 0 else x[t] 695 | x[t+1] = α * abs_x + np.random.randn() 696 | 697 | plt.plot(x) 698 | plt.show() 699 | ``` 700 | 701 | ```{solution-end} 702 | ``` 703 | 704 | 705 | 706 | ```{exercise-start} 707 | :label: pbe_ex5 708 | ``` 709 | 710 | این تمرین کمی سخت تر است و نیاز به فکر و برنامه ریزی دارد. 711 | 712 | تکلیف شما این است که با استفاده از روش [مونته کارلو](https://en.wikipedia.org/wiki/Monte_Carlo_method)، یک تقریب برای عدد 713 | π 714 | محاسبه کنید. 715 | 716 | به جز موارد زیر، از هیچ کتابخانه ای استفاده نکنید: 717 | 718 | ```{code-cell} python3 719 | import numpy as np 720 | ``` 721 | 722 | ```{hint} 723 | :class: dropdown 724 | 725 | راهنماهای شما به شرح زیر است: 726 | 727 | * اگر $U$ یک متغیرتصادفی دوبعدی یکنواخت روی مربع واحد 728 | ( 729 | 0 730 | , 731 | 1 732 | 733 | ) 734 | 2 735 | 736 | باشد، آنگاه احتمال اینکه $U$ در زیرمجموعه ای $B$ از 737 | ( 738 | 0 739 | , 740 | 1 741 | 742 | ) 743 | 2 744 | 745 | قرار گیرد، برابر با مساحت ناحیه ی $B$ است. 746 | 747 | * اگر 748 | 749 | U 750 | 1 751 | 752 | , 753 | 754 | , 755 | 756 | U 757 | n 758 | 759 | نسخه های مستقل و با توزیع یکسان از $U$ باشند، آنگاه با بزرگ شدن $n$، نسبت نقاطی که در ناحیه $B$ قرار میگیرند، به احتمال قرارگرفتن در $B$ همگرا می شوند. 760 | 761 | * برای یک دایره ، 762 | $مساحت = \pi * شعاع^2$ 763 | ``` 764 | 765 | ```{exercise-end} 766 | ``` 767 | 768 | 769 | ```{solution-start} pbe_ex5 770 | :class: dropdown 771 | ``` 772 | 773 | دایره ای با قطر یک را درون یک مربع درنظر بگیرید. 774 | 775 | فرض کنید 776 | A 777 | مساحت آن باشد و 778 | r 779 | = 780 | 1 781 | 782 | / 783 | 784 | 2 785 | شعاع آن است. 786 | 787 | اگر مقدار 788 | π 789 | را بدانیم، میتوانیم مساحت 790 | A 791 | را از طریق رابطه 792 | A 793 | = 794 | π 795 | 796 | r 797 | 2 798 | 799 | محاسبه کنیم. 800 | 801 | اما در اینجا هدف محاسبه ی 802 | π 803 | است، که میتوانیم از رابطه 804 | π 805 | = 806 | A 807 | 808 | / 809 | 810 | 811 | r 812 | 2 813 | 814 | به دست آوریم. 815 | 816 | خلاصه: اگر بتوانیم مساحت دایره ای با قطر 1 را تخمین بزنیم، آنگاه تقسیم کردن آن بر 817 | 818 | r 819 | 2 820 | 821 | = 822 | ( 823 | 1 824 | 825 | / 826 | 827 | 2 828 | 829 | ) 830 | 2 831 | 832 | = 833 | 1 834 | 835 | / 836 | 837 | 4 838 | تخمینی برای 839 | π 840 | به ما می دهد. 841 | 842 | ما این مساحت را با نمونه گیری از توزیع یکواخت دومتغیره و بررسی کسری از نقاط که درون دایره می افتند، تخمین میزنیم: 843 | 844 | ```{code-cell} python3 845 | n = 1000000 # sample size for Monte Carlo simulation 846 | 847 | count = 0 848 | for i in range(n): 849 | 850 | # drawing random positions on the square 851 | u, v = np.random.uniform(), np.random.uniform() 852 | 853 | # check whether the point falls within the boundary 854 | # of the unit circle centred at (0.5,0.5) 855 | d = np.sqrt((u - 0.5)**2 + (v - 0.5)**2) 856 | 857 | # if it falls within the inscribed circle, 858 | # add it to the count 859 | if d < 0.5: 860 | count += 1 861 | 862 | area_estimate = count / n 863 | 864 | print(area_estimate * 4) # dividing by radius**2 865 | ``` 866 | 867 | ```{solution-end} 868 | ``` -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/pandas/data/ticker_data.csv: -------------------------------------------------------------------------------- 1 | Date,INTC,MSFT,IBM,BHP,TM,AAPL,AMZN,BA,QCOM,KO,GOOG,SNE,PTR 2 | 2013-01-02,21.379999,27.620001,196.350006,79.93,95.989998,549.029976,257.309998,77.07,64.75,37.599998,723.25123,11.51,145.78999299999995 3 | 2013-01-03,21.32,27.25,195.270004,79.029999,95.370003,542.099991,258.480011,77.470001,64.449997,37.599998,723.671256,11.49,145.800003 4 | 2013-01-04,21.16,26.74,193.990005,79.400002,97.339996,526.999992,259.149994,77.690002,63.5,37.66,737.971262,11.14,145.649994 5 | 2013-01-07,21.25,26.690001,193.139999,79.68,95.529999,523.900002,268.459991,76.129997,64.010002,37.299999,734.751286,10.97,142.919998 6 | 2013-01-08,21.09,26.549999,192.869995,78.529999,93.93,525.31002,266.380005,74.129997,63.91,37.040001,733.3012269999998,10.72,141.279999 7 | 2013-01-09,21.450001,26.700001,192.320007,78.959999,95.660004,517.100006,266.350006,76.760002,64.879997,37.029999,738.1212370000002,10.74,141.820007 8 | 2013-01-10,21.799999,26.459999,192.880005,78.690002,96.860001,523.509979,265.339996,77.089996,64.779999,36.959999,741.481263,11.05,142.300003 9 | 2013-01-11,22.0,26.83,194.449997,76.660004,96.110001,520.300026,267.940002,75.160004,64.900002,36.91,739.99126,11.09,141.059998 10 | 2013-01-14,22.0,26.889999,192.619995,76.949997,96.800003,501.750015,272.730011,76.550003,64.239998,36.990002,723.25123,11.28,141.860001 11 | 2013-01-15,21.879999,27.209999,192.5,76.83000200000002,96.43,485.920013,271.899994,76.940002,64.440002,37.32,724.931273,11.23,141.119995 12 | 2013-01-16,22.110001,27.040001,192.589996,76.400002,94.639999,506.089981,268.929993,74.339996,64.790001,37.32,715.1912110000002,11.2,142.009995 13 | 2013-01-17,22.68,27.25,193.649994,76.709999,96.779999,502.68002300000006,270.480011,75.260002,65.139999,37.509998,711.321223,11.91,142.649994 14 | 2013-01-18,21.25,27.25,194.470001,76.870003,95.889999,500.000015,272.119995,75.040001,64.68,37.700001,704.5112349999998,12.7,144.28999299999995 15 | 2013-01-22,21.17,27.15,196.080002,77.93,94.830002,504.770004,270.190002,74.160004,64.68,37.130001,702.8711969999998,13.35,144.520004 16 | 2013-01-23,21.110001,27.610001,204.720001,77.879997,94.449997,514.010002,268.109985,74.290001,64.889999,37.130001,741.501296,13.25,143.330002 17 | 2013-01-24,20.950001,27.629999,204.419998,77.699997,95.739998,450.499977,273.459991,75.32,64.400002,37.110001,754.211317,13.52,144.070007 18 | 2013-01-25,20.959999,27.879999,204.970001,77.339996,96.099998,439.880001,283.98999,75.029999,63.66,37.049999,753.671274,14.41,143.029999 19 | 2013-01-28,21.049999,27.91,204.929993,77.339996,94.779999,449.830002,276.040009,74.0,63.669998,37.009998,750.731274,15.12,142.029999 20 | 2013-01-29,21.280001,28.01,203.899994,78.400002,95.599998,458.269981,260.350006,73.650002,63.450001,37.419998,753.681322,15.14,144.100006 21 | 2013-01-30,21.370001,27.85,203.520004,77.91999799999998,95.599998,456.830002,272.76001,74.589996,63.529999,37.5,753.831296,14.99,142.830002 22 | 2013-01-31,21.040001,27.450001,203.070007,78.720001,95.370003,455.48999800000007,265.5,73.870003,66.019997,37.240002,755.691272,14.94,142.199997 23 | 2013-02-01,21.360001,27.93,205.179993,79.389999,98.129997,453.619995,265.0,74.870003,66.730003,37.540001,775.601349,15.13,143.839996 24 | 2013-02-04,21.16,27.440001,203.789993,77.959999,97.830002,442.320004,259.980011,75.209999,65.639999,37.349998,759.021279,15.48,136.979996 25 | 2013-02-05,21.18,27.5,202.789993,77.93,98.860001,457.840012,266.890015,75.889999,66.949997,38.139999,765.741331,15.83,138.520004 26 | 2013-02-06,20.99,27.34,201.020004,77.849998,102.800003,457.350014,262.220001,76.290001,67.18,38.310001,770.171333,15.82,137.839996 27 | 2013-02-07,20.809999,27.280001,199.740005,77.290001,102.800003,468.220009,260.230011,77.43,66.540001,38.91,773.951324,15.13,137.389999 28 | 2013-02-08,21.0,27.549999,201.679993,77.940002,104.449997,474.980003,261.950012,76.559998,66.949997,38.77,785.3713690000002,14.92,137.380005 29 | 2013-02-11,21.030001,27.860001,200.160004,77.480003,105.93,479.93002300000006,257.209991,75.870003,67.18,38.610001,782.4213219999998,14.99,136.550003 30 | 2013-02-12,21.190001,27.879999,200.039993,77.529999,104.830002,467.900002,258.700012,75.989998,65.889999,37.560001,780.701335,14.68,136.970001 31 | 2013-02-13,21.25,28.030001,200.089996,78.529999,104.209999,467.009995,269.470001,74.779999,65.449997,37.209999,782.861321,14.21,137.220001 32 | 2013-02-14,21.23,28.040001,199.649994,80.190002,102.639999,466.590012,269.23999,74.93,65.529999,36.84,787.82138,14.23,137.110001 33 | 2013-02-15,21.120001,28.01,200.979996,79.559998,102.599998,460.16001100000005,265.089996,75.029999,65.43,37.419998,792.891346,14.34,136.860001 34 | 2013-02-19,21.09,28.049999,200.320007,80.459999,102.519997,459.990021,269.75,74.650002,65.66999799999999,37.669998,806.851398,14.65,135.990005 35 | 2013-02-20,20.73,27.870001,199.309998,77.059998,102.589996,448.850006,266.410004,74.779999,65.269997,37.73,792.461334,14.47,136.410004 36 | 2013-02-21,20.25,27.49,198.330002,74.970001,101.099998,446.060009,265.940002,76.010002,64.82,37.709999,795.531336,14.08,136.080002 37 | 2013-02-22,20.42,27.76,201.089996,75.769997,102.339996,450.80999800000006,265.420013,76.660004,64.940002,38.52,799.711381,14.07,138.259995 38 | 2013-02-25,20.23,27.370001,197.509995,74.410004,99.419998,442.799988,259.869995,75.029999,64.800003,37.720001,790.7713650000002,13.79,135.850006 39 | 2013-02-26,20.58,27.370001,199.139999,74.58000200000002,102.459999,448.970009,259.359985,75.650002,65.269997,38.110001,790.13134,14.04,136.589996 40 | 2013-02-27,20.93,27.809999,202.330002,75.540001,101.610001,444.569988,263.25,77.360001,65.639999,38.450001,799.781345,14.34,138.139999 41 | 2013-02-28,20.879999,27.799999,200.830002,74.860001,102.599998,441.400009,264.269989,76.900002,65.639999,38.720001,801.201384,14.58,136.979996 42 | 2013-03-01,21.030001,27.950001,202.910004,73.93,102.690002,430.470013,265.73999,77.279999,66.300003,38.700001,806.1914009999998,15.23,135.880005 43 | 2013-03-04,21.27,28.15,205.190002,73.620003,102.440002,420.049988,273.109985,77.089996,66.629997,38.82,821.501406,15.57,133.610001 44 | 2013-03-05,21.51,28.35,206.529999,74.209999,103.300003,431.139988,275.589996,78.660004,67.970001,38.68,838.6014240000002,15.51,135.880005 45 | 2013-03-06,21.75,28.09,208.380005,73.809998,104.449997,425.659996,273.790009,79.08000200000002,66.66999799999999,39.02,831.381396,15.84,137.630005 46 | 2013-03-07,21.889999,28.139999,209.419998,73.839996,103.260002,430.580002,273.880005,81.050003,66.790001,39.119999,832.601408,15.56,137.759995 47 | 2013-03-08,21.58,28.0,210.380005,73.58000200000002,103.690002,431.720001,274.190002,81.230003,66.650002,39.220001,831.521445,15.59,139.21000700000002 48 | 2013-03-11,21.690001,27.870001,210.080002,74.07,104.190002,437.869995,271.23999,82.940002,66.699997,39.310001,834.821433,15.96,139.949997 49 | 2013-03-12,21.639999,27.91,210.550003,73.790001,102.760002,428.429993,274.130005,84.160004,67.040001,38.959999,827.611391,15.55,138.410004 50 | 2013-03-13,21.66,27.92,212.059998,73.209999,102.949997,428.349991,275.100006,84.75,66.75,38.59,825.311416,15.73,137.470001 51 | 2013-03-14,21.65,28.139999,215.800003,72.459999,103.540001,432.499992,265.73999,84.620003,66.57,39.02,821.541411,16.030001000000002,138.149994 52 | 2013-03-15,21.379999,28.040001,214.919998,72.959999,103.93,443.660007,261.820007,86.43,64.970001,38.830002,814.301411,17.26,135.669998 53 | 2013-03-18,21.26,28.1,213.210007,72.029999,102.870003,455.720016,257.890015,85.18,64.559998,38.759998,807.791372,16.809998999999998,134.649994 54 | 2013-03-19,21.139999,28.18,213.440002,70.059998,103.150002,454.489975,256.410004,85.510002,64.720001,39.330002,811.3214059999998,17.17,133.360001 55 | 2013-03-20,21.18,28.32,215.059998,70.010002,104.279999,452.079987,257.27999900000003,85.370003,65.739998,39.869999,814.71139,17.709999,134.800003 56 | 2013-03-21,21.040001,28.110001,212.25999500000003,69.690002,103.529999,452.729988,253.389999,84.33000200000002,65.349998,40.07,811.261367,17.309998999999998,132.110001 57 | 2013-03-22,21.33,28.25,212.080002,69.639999,103.989998,461.91001100000005,257.75,84.82,65.91999799999999,40.040001,810.311407,17.68,131.910004 58 | 2013-03-25,21.15,28.16,210.740005,69.010002,103.309998,463.580009,256.019989,84.849998,65.66999799999999,40.119999,809.641362,17.77,130.399994 59 | 2013-03-26,21.77,28.16,212.360001,69.459999,103.599998,461.140007,260.309998,86.620003,66.620003,40.689999,812.421402,17.49,132.130005 60 | 2013-03-27,21.83,28.370001,210.889999,69.58000200000001,103.099998,452.079987,265.299988,86.199997,66.68,40.220001,802.661367,17.639999,131.940002 61 | 2013-03-28,21.84,28.610001,213.300003,68.43,102.639999,442.66001100000005,266.48999,85.849998,66.940002,40.439999,794.191369,17.4,131.820007 62 | 2013-04-01,21.43,28.610001,212.380005,67.949997,101.220001,428.910004,261.609985,85.25,66.0,40.450001,801.191398,16.6,130.470001 63 | 2013-04-02,21.459999,28.799999,214.360001,68.269997,99.949997,429.789997,263.320007,84.089996,66.25,40.720001,813.0413940000002,17.0,131.869995 64 | 2013-04-03,21.049999,28.559999,212.660004,66.57,100.879997,431.989994,259.02999900000003,84.360001,65.970001,40.169998,806.2013870000002,16.43,129.440002 65 | 2013-04-04,21.139999,28.6,211.309998,67.040001,105.629997,427.71999000000005,259.079987,84.949997,65.809998,40.540001,795.071366,17.0,130.110001 66 | 2013-04-05,20.940001,28.700001,209.410004,67.260002,106.5,423.199993,255.479996,86.16999799999998,65.160004,40.080002,783.051362,16.690001000000002,127.650002 67 | 2013-04-08,21.09,28.59,209.320007,68.050003,108.709999,426.209995,258.950012,86.75,65.860001,40.860001,774.851354,17.02,127.790001 68 | 2013-04-09,21.75,29.610001,209.220001,71.089996,107.519997,426.98,261.140015,87.209999,65.959999,40.709999,777.651304,16.790001,129.279999 69 | 2013-04-10,22.26,30.280001,212.0,70.610001,108.779999,435.689999,264.769989,87.82,67.290001,41.07,790.181331,16.93,129.779999 70 | 2013-04-11,21.83,28.940001,212.919998,70.139999,113.279999,434.32999400000006,269.850006,88.529999,67.029999,41.18,790.391345,16.9,128.240005 71 | 2013-04-12,21.68,28.790001,211.380005,69.07,113.099998,429.800011,272.869995,88.889999,66.68,41.080002,790.051329,16.67,126.849998 72 | 2013-04-15,21.379999,28.690001,209.259995,64.769997,111.089996,419.85001,267.720001,86.769997,65.489998,40.09,781.931333,16.48,122.0 73 | 2013-04-16,21.92,28.969999,212.0,66.629997,112.510002,426.240009,272.339996,86.889999,65.809998,42.369999,793.37135,16.559998999999998,123.760002 74 | 2013-04-17,21.93,28.83,209.669998,64.120003,111.660004,402.800007,267.399994,86.690002,64.230003,42.549999,782.561372,16.41,119.889999 75 | 2013-04-18,22.24,28.790001,207.149994,64.050003,110.550003,392.049988,259.420013,86.120003,63.639999,42.099998,765.911339,16.18,120.360001 76 | 2013-04-19,22.440001,29.77,190.0,64.190002,112.260002,390.530006,260.320007,87.959999,63.93,42.66,799.871342,16.65,123.300003 77 | 2013-04-22,22.879999,30.83,187.830002,64.43,112.230003,398.670006,263.549988,86.940002,64.58000200000001,42.720001,800.1113740000002,16.52,123.349998 78 | 2013-04-23,23.379999,30.6,191.610001,64.5,112.940002,406.12999,268.899994,88.18,65.349998,42.700001,807.9014030000002,16.67,123.199997 79 | 2013-04-24,23.66,31.76,191.710007,66.220001,113.690002,405.459988,268.77999900000003,90.830002,66.0,42.150002,813.451373,16.49,124.239998 80 | 2013-04-25,23.379999,31.940001,193.949997,66.559998,115.839996,408.380001,274.700012,91.669998,62.439999,42.349998,809.101381,17.200001,126.839996 81 | 2013-04-26,23.4,31.790001,194.309998,66.199997,115.480003,417.199989,254.809998,92.849998,61.52,42.099998,801.421383,16.48,126.150002 82 | 2013-04-29,23.76,32.610001000000004,199.149994,67.519997,116.540001,430.119991,249.740005,91.900002,61.610001,42.240002,819.061382,16.559998999999998,127.290001 83 | 2013-04-30,23.950001,33.099998,202.539993,67.220001,116.300003,442.779987,253.809998,91.410004,61.599998,42.330002,824.571408,16.43,127.860001 84 | 2013-05-01,23.99,32.720001,199.630005,65.849998,113.720001,439.290001,248.229996,91.18,61.919998,42.209999,820.431429,16.25,125.610001 85 | 2013-05-02,24.110001,33.16,202.389999,65.709999,114.379997,445.519997,252.550003,92.209999,62.889999,41.959999,829.611416,16.790001,125.589996 86 | 2013-05-03,23.959999,33.490002000000004,204.509995,67.589996,114.919998,449.980019,258.049988,93.739998,63.77,42.240002,845.721469,17.16,124.949997 87 | 2013-05-06,23.91,33.75,202.779999,68.110001,115.029999,460.709984,255.720001,94.190002,63.860001,42.080002,861.551483,17.129998999999998,126.190002 88 | 2013-05-07,24.15,33.310001,203.630005,68.68,116.080002,458.660004,257.730011,94.790001,63.970001,42.700001,857.231449,17.700001,129.020004 89 | 2013-05-08,24.25,32.990002000000004,204.820007,70.379997,119.699997,463.839989,258.679993,94.040001,64.120003,42.459999,873.631526,17.940001000000006,132.029999 90 | 2013-05-09,24.360001,32.66,203.240005,69.66999799999999,118.139999,456.7699740000001,260.160004,94.610001,64.110001,42.119999,871.4814640000002,18.08,131.110001 91 | 2013-05-10,24.5,32.689999,204.470001,69.260002,121.279999,452.969994,263.630005,94.239998,64.639999,42.150002,880.2315,17.92,130.869995 92 | 2013-05-13,24.08,33.029999,202.470001,68.349998,124.830002,454.740021,264.51001,94.760002,64.82,42.189999,877.531533,18.889999,128.800003 93 | 2013-05-14,23.84,33.529999,203.210007,68.269997,124.150002,443.860012,268.329987,96.110001,65.32,42.52,887.1015269999998,20.76,128.880005 94 | 2013-05-15,24.200001,33.849998,203.320007,67.099998,126.599998,428.850002,266.559998,97.019997,65.540001,42.919998,915.89158,20.450001,128.690002 95 | 2013-05-16,23.940001,34.080002,204.690002,67.0,125.120003,434.580013,264.119995,96.580002,65.639999,43.09,903.871576,20.1,125.93 96 | 2013-05-17,24.040001,34.869999,208.440002,67.660004,127.32,433.26001,269.899994,98.919998,66.610001,42.970001,909.181575,20.34,126.870003 97 | 2013-05-20,24.08,35.080002,207.600006,68.07,128.649994,442.930004,267.630005,98.720001,66.099998,42.380001,908.531564,20.969999,128.259995 98 | 2013-05-21,24.15,34.849998,208.649994,69.16999799999999,129.720001,439.659996,268.859985,98.75,65.760002,42.34,906.971536,22.91,127.190002 99 | 2013-05-22,24.07,34.610001000000004,206.990005,68.339996,127.839996,441.349995,262.959991,97.93,65.230003,42.25,889.421534,22.15,124.139999 100 | 2013-05-23,24.049999,34.150002,206.160004,67.529999,124.660004,442.1399990000001,261.799988,99.75,63.91,41.93,882.79154,21.629999,122.099998 101 | 2013-05-24,23.92,34.27,205.720001,66.730003,120.529999,445.150002,261.73999,100.0,64.260002,42.240002,873.321468,20.959999,119.209999 102 | 2013-05-28,24.08,35.02,207.779999,66.0,123.18,441.44001,267.290009,100.110001,64.07,42.549999,881.271518,20.67,120.300003 103 | 2013-05-29,24.27,34.880001,207.919998,66.160004,119.57,444.949997,265.52999900000003,99.089996,64.110001,41.400002,868.311479,20.1,119.0 104 | 2013-05-30,24.209999,35.029999,209.360001,67.32,120.459999,451.580002,266.829987,100.540001,64.18,40.77,870.7614890000001,20.84,119.160004 105 | 2013-05-31,24.280001,34.900002,208.020004,65.32,117.550003,449.730026,269.200012,99.019997,63.48,39.990002,871.221521,20.15,115.68 106 | 2013-06-03,25.24,35.59,208.949997,66.809998,116.209999,450.720009,266.880005,100.739998,63.23,40.810001,867.6315099999998,19.540001,117.07 107 | 2013-06-04,25.360001,34.990002000000004,206.190002,66.25,118.260002,449.30999,265.700012,99.610001,63.709999,41.419998,859.101473,19.82,117.370003 108 | 2013-06-05,24.700001,34.779999,202.740005,64.41999799999999,114.870003,445.110001,267.170013,98.489998,63.150002,40.650002,859.7014929999998,19.0,114.709999 109 | 2013-06-06,24.65,34.959999,203.800003,64.839996,114.480003,438.459995,267.829987,99.760002,62.970001,40.790001,864.6414570000002,18.959999,115.550003 110 | 2013-06-07,24.59,35.669998,206.350006,64.209999,117.059998,441.810005,276.869995,102.489998,62.099998,41.41,879.731524,19.559999,115.199997 111 | 2013-06-10,25.01,35.470001,205.020004,63.630001,121.150002,438.889992,281.070007,102.239998,62.029999,41.18,890.2215199999998,20.110001,113.0 112 | 2013-06-11,24.709999,34.84,203.979996,62.450001,119.919998,437.600002,274.77999900000003,101.75,61.66,40.790001,879.8115349999998,20.299999,111.150002 113 | 2013-06-12,24.459999,35.0,201.199997,61.990002,119.129997,432.189999,271.670013,100.879997,61.110001,40.389999,871.981501,20.280001,110.300003 114 | 2013-06-13,24.99,34.720001,203.770004,63.599998,121.300003,435.959991,275.790009,102.160004,61.959999,40.41,877.001476,21.030001,110.050003 115 | 2013-06-14,24.92,34.400002,202.199997,62.779999,117.379997,430.050003,273.98999,101.830002,61.380001,40.34,875.041517,19.879999,105.75 116 | 2013-06-17,25.1,35.0,203.039993,63.27,120.379997,432.000008,278.059998,103.029999,62.07,40.68,886.2515490000002,20.719999,109.449997 117 | 2013-06-18,25.469999,34.98,204.869995,62.599998,122.290001,431.769989,281.76001,104.080002,62.380001,40.93,900.6215189999998,21.4,110.699997 118 | 2013-06-19,25.0,34.59,201.940002,60.860001,120.779999,422.999989,278.160004,102.25,61.91,40.41,900.681558,20.49,106.5 119 | 2013-06-20,24.190001,33.490002000000004,197.350006,58.279999,117.059998,416.840008,273.440002,99.639999,60.919998,39.130001,884.741513,20.040001,103.059998 120 | 2013-06-21,24.200001,33.27,195.460007,58.919998,119.550003,413.500011,273.359985,99.980003,60.669998,39.759998,880.9315029999998,20.379999,103.489998 121 | 2013-06-24,23.58,33.720001,193.539993,57.380001,116.529999,402.540001,270.609985,97.849998,59.880001,39.529999,869.791496,19.940001,101.470001 122 | 2013-06-25,23.879999,33.669998,194.979996,58.099998,117.290001,402.62999,272.089996,98.669998,61.810001,39.720001,866.2014839999998,20.4,102.449997 123 | 2013-06-26,24.01,34.349998,194.860001,57.959999,118.059998,398.069992,277.570007,100.75,61.27,40.330002,873.6514980000002,20.84,103.089996 124 | 2013-06-27,24.049999,34.619999,195.649994,58.439999,121.739998,393.779987,277.549988,103.150002,61.080002,40.259998,877.071501,21.200001,103.580002 125 | 2013-06-28,24.23,34.540001000000004,191.110001,57.66,120.660004,396.53001,277.690002,102.440002,61.09,40.110001,880.3714880000001,21.190001,110.669998 126 | 2013-07-01,23.889999,34.360001000000004,191.279999,57.860001,123.019997,409.219994,282.100006,103.239998,60.959999,40.459999,887.8815400000002,21.469999,110.010002 127 | 2013-07-02,23.719999,33.939999,191.5,57.830002,124.470001,418.490005,283.730011,101.470001,60.919998,40.369999,882.3115369999998,21.809999,112.720001 128 | 2013-07-03,23.76,34.009998,193.25,56.580002,124.519997,420.799992,284.0299990000001,102.889999,60.91,40.490002,886.4315429999998,21.65,113.5 129 | 2013-07-05,24.059999,34.209999,194.929993,56.32,125.269997,417.419994,285.880005,104.199997,60.950001,40.52,893.4915490000002,21.76,113.830002 130 | 2013-07-08,23.190001,34.330002,194.979996,56.41,124.900002,415.050007,290.589996,104.370003,59.990002,40.540001,905.091527,21.610001,114.010002 131 | 2013-07-09,23.139999,34.349998,191.300003,58.689999,126.199997,422.349987,291.5299990000001,104.68,59.389999,40.830002,905.241563,21.780001,115.669998 132 | 2013-07-10,23.25,34.700001,192.25,58.259998,126.769997,420.730003,292.329987,105.5,60.439999,40.68,905.991557,21.77,116.279999 133 | 2013-07-11,23.99,35.689999,192.800003,61.790001,129.28999299999998,427.289993,299.660004,106.879997,61.299999,41.029999,920.241572,22.200001,120.57 134 | 2013-07-12,23.9,35.669998,192.070007,60.68,129.690002,426.51000199999993,307.549988,101.870003,62.02,41.029999,923.001578,22.190001,118.639999 135 | 2013-07-15,23.940001,36.169998,194.0,60.880001,129.639999,427.44001,306.570007,105.660004,61.279999,41.009998,924.691608,22.24,117.699997 136 | 2013-07-16,24.25,36.27,193.850006,62.599998,128.910004,430.199993,306.869995,104.230003,61.849998,40.23,919.611594,21.959999,117.739998 137 | 2013-07-17,24.15,35.74000200000001,194.550003,63.450001,130.839996,430.310009,308.690002,104.790001,62.650002,40.84,918.551603,22.1,118.559998 138 | 2013-07-18,23.24,35.439999,197.990005,63.16,130.800003,431.76000199999993,304.109985,107.629997,61.119999,40.810001,910.681564,22.139999,119.480003 139 | 2013-07-19,23.040001,31.4,193.539993,62.599998,130.360001,424.949993,305.230011,106.959999,61.459999,41.09,896.6015570000002,22.110001,118.650002 140 | 2013-07-22,22.77,32.009998,194.089996,64.0,130.300003,426.30999800000006,303.480011,106.860001,62.209999,40.84,910.701536,22.59,120.07 141 | 2013-07-23,22.75,31.82,194.979996,64.849998,129.479996,418.98999,301.059998,107.790001,62.299999,40.959999,903.801551,23.01,121.290001 142 | 2013-07-24,22.93,31.959999,196.610001,63.299999,128.429993,440.51000199999993,298.940002,106.949997,61.389999,40.860001,902.901521,22.809999,118.160004 143 | 2013-07-25,23.059999,31.389999,197.220001,63.799999,127.550003,438.499996,303.399994,106.699997,63.419998,40.84,887.7015470000001,22.110001,118.790001 144 | 2013-07-26,23.26,31.620001,197.350006,64.290001,124.489998,440.990013,312.01001,105.599998,64.610001,40.639999,885.3515189999998,21.58,118.919998 145 | 2013-07-29,23.24,31.540001,196.210007,64.050003,120.25,447.790009,306.100006,104.809998,64.239998,40.279999,882.2715310000002,21.24,117.220001 146 | 2013-07-30,23.379999,31.85,196.009995,62.990002,122.589996,453.320015,302.410004,105.730003,64.510002,40.32,890.9215230000002,21.629999,116.980003 147 | 2013-07-31,23.34,31.84,195.039993,62.73,121.900002,452.529984,301.220001,105.099998,64.559998,40.080002,887.7515380000001,21.040001,116.580002 148 | 2013-08-01,23.200001,31.67,195.809998,63.610001,126.239998,456.679985,305.570007,106.699997,65.269997,40.57,904.221578,21.959999,119.110001 149 | 2013-08-02,23.219999,31.889999,195.160004,63.48,134.330002,462.53998600000006,304.209991,107.900002,66.75,40.220001,906.571544,21.620001,117.870003 150 | 2013-08-05,22.92,31.700001,195.5,63.540001,129.509995,469.449997,300.98999,107.5,66.25,40.290001,905.00153,21.76,116.809998 151 | 2013-08-06,22.799999,31.58,190.990005,63.279999,129.699997,465.250008,300.75,107.040001,65.589996,40.369999,896.5715369999998,20.719999,115.199997 152 | 2013-08-07,22.700001,32.060001,188.559998,63.049999,127.559998,464.979988,296.910004,106.419998,65.209999,40.150002,890.651532,20.129999,113.32 153 | 2013-08-08,22.450001,32.889999,187.929993,65.959999,128.029999,461.010017,295.73999,105.839996,66.349998,40.200001,892.6615439999998,20.200001,114.900002 154 | 2013-08-09,22.51,32.700001,187.820007,67.68,127.57,454.449974,297.26001,105.330002,66.269997,40.16,890.4115,20.15,115.269997 155 | 2013-08-12,22.639999,32.869999,189.089996,67.620003,128.320007,467.360016,296.690002,104.239998,66.459999,39.830002,885.511541,20.0,117.779999 156 | 2013-08-13,22.52,32.23,188.419998,67.459999,130.199997,489.569977,293.970001,106.230003,67.25,39.650002,881.251485,20.129999,119.790001 157 | 2013-08-14,22.57,32.349998,187.529999,67.849998,129.270004,498.500008,291.339996,104.160004,66.959999,39.529999,869.811468,20.08,119.540001 158 | 2013-08-15,22.030001,31.790001,185.789993,68.040001,127.449997,497.909981,286.470001,102.730003,66.949997,39.09,859.661487,19.860001,118.25 159 | 2013-08-16,21.91,31.799999,185.339996,67.540001,128.880005,502.330002,284.820007,103.470001,66.900002,39.049999,856.911467,19.98,116.43 160 | 2013-08-19,22.280001,31.389999,184.229996,66.970001,128.199997,507.740005,285.570007,104.720001,66.33000200000001,38.779999,865.651456,19.92,114.440002 161 | 2013-08-20,22.52,31.620001,184.559998,65.599998,126.769997,501.07,287.089996,104.629997,66.709999,38.650002,865.4214710000001,19.950001,111.949997 162 | 2013-08-21,22.17,31.610001,184.860001,63.459999,122.860001,502.360016,284.570007,103.910004,66.57,38.279999,869.3314640000001,19.66,110.57 163 | 2013-08-22,22.26,32.389999,185.190002,64.620003,124.769997,502.959976,289.730011,105.139999,67.129997,38.310001,873.711475,19.709999,109.980003 164 | 2013-08-23,22.440001,34.75,185.419998,64.550003,127.010002,501.020012,290.01001,105.480003,67.150002,38.52,870.2115220000002,20.209999,109.360001 165 | 2013-08-26,22.27,34.150002,184.740005,64.08000200000001,125.190002,502.970016,286.209991,105.529999,66.949997,38.119999,866.391464,20.1,111.739998 166 | 2013-08-27,22.190001,33.259998,182.740005,62.82,124.040001,488.589981,280.929993,103.209999,66.019997,38.150002,850.1514710000001,20.379999,111.739998 167 | 2013-08-28,22.290001,33.02,182.160004,62.98,123.910004,490.89999400000005,281.579987,103.269997,66.559998,38.349998,848.5514380000002,20.16,107.82 168 | 2013-08-29,22.059999,33.549999,182.639999,62.860001,123.889999,491.700012,283.980011,104.93,66.709999,38.099998,855.4314509999998,20.18,107.449997 169 | 2013-08-30,21.98,33.400002,182.270004,63.279999,120.790001,487.220016,280.980011,103.919998,66.279999,38.18,846.901475,19.959999,108.800003 170 | 2013-09-03,22.07,31.879999,183.960007,65.550003,124.300003,488.57999400000006,288.799988,105.010002,66.75,37.900002,860.3814619999998,20.41,111.080002 171 | 2013-09-04,22.639999,31.200001,183.130005,65.0,125.839996,498.690025,293.640015,106.370003,67.279999,38.540001,871.6315,20.809999,109.410004 172 | 2013-09-05,22.6,31.23,184.149994,64.58000200000001,125.639999,495.2699740000001,294.100006,106.650002,67.83000200000001,38.240002,879.561517,21.09,111.300003 173 | 2013-09-06,22.67,31.15,183.029999,64.93,125.550003,498.220001,295.859985,106.07,68.019997,38.349998,879.581489,21.02,112.68 174 | 2013-09-09,22.91,31.66,184.979996,66.33000200000001,126.800003,506.169983,299.709991,107.190002,69.300003,38.52,888.051548,21.610001,114.0 175 | 2013-09-10,22.98,32.389999,186.600006,67.239998,127.379997,494.6399990000001,300.359985,108.169998,70.089996,38.630001,888.67154,21.719999,114.510002 176 | 2013-09-11,22.809999,32.740002000000004,190.699997,67.709999,127.559998,467.709984,299.640015,109.230003,68.089996,38.779999,896.191517,21.42,110.650002 177 | 2013-09-12,22.629999,32.689999,190.729996,66.989998,125.910004,472.690018,298.859985,109.800003,68.809998,38.439999,893.0615369999998,21.16,111.0 178 | 2013-09-13,23.440001,33.029999,192.169998,66.58000200000001,126.800003,464.899986,297.920013,111.330002,68.58000200000001,38.689999,889.071533,21.18,112.400002 179 | 2013-09-16,23.389999,32.799999,193.149994,67.209999,127.75,450.119995,296.059998,115.669998,68.089996,38.860001,887.761524,21.459999,112.709999 180 | 2013-09-17,23.74,32.93,192.160004,67.459999,126.779999,455.320007,304.170013,117.110001,69.41999799999999,38.790001,886.1115,21.66,112.699997 181 | 2013-09-18,23.9,33.32,194.419998,70.019997,130.929993,464.680008,312.0299990000001,118.400002,69.639999,39.59,903.321548,21.879999,115.230003 182 | 2013-09-19,23.91,33.639999,193.389999,68.370003,130.199997,472.299995,312.059998,119.040001,69.459999,39.310001,898.391569,21.629999,113.910004 183 | 2013-09-20,23.77,32.790001000000004,190.020004,67.370003,129.449997,467.410004,316.339996,116.629997,69.059998,39.400002,903.111535,21.360001,112.089996 184 | 2013-09-23,23.620001,32.740002000000004,190.990005,67.480003,129.779999,490.64001500000006,311.48999,117.510002,68.980003,38.630001,886.5015070000002,21.290001,113.199997 185 | 2013-09-24,23.700001,32.450001,189.970001,66.910004,130.559998,489.100006,314.130005,119.0,68.510002,38.529999,886.841522,21.370001,111.639999 186 | 2013-09-25,23.700001,32.509998,189.470001,67.58000200000001,129.850006,481.530006,312.649994,118.510002,68.75,38.330002,877.231523,21.110001,111.110001 187 | 2013-09-26,23.41,32.77,190.220001,67.790001,131.979996,486.219994,318.119995,119.379997,68.870003,38.740002,878.171497,21.299999,111.870003 188 | 2013-09-27,22.98,33.27,186.919998,67.150002,130.259995,482.750008,316.01001,118.739998,67.379997,38.400002,876.391532,21.290001,112.18 189 | 2013-09-30,22.92,33.279999,185.179993,66.5,128.029999,476.749977,312.640015,117.5,67.32,37.880001,875.911528,21.52,109.949997 190 | 2013-10-01,22.83,33.580002,186.380005,66.400002,127.32,487.960007,320.950012,117.75,67.489998,37.950001,887.001544,21.4,111.470001 191 | 2013-10-02,22.889999,33.919998,184.960007,66.839996,127.660004,489.55999,320.51001,117.839996,67.68,37.43,887.991509,21.200001,111.040001 192 | 2013-10-03,22.6,33.860001000000004,183.860001,66.089996,127.75,483.409996,314.76001,115.239998,67.110001,37.16,876.091522,20.91,110.690002 193 | 2013-10-04,22.809999,33.880001,184.100006,66.510002,128.009995,483.030014,319.040009,117.199997,68.019997,37.200001,872.351475,20.870001,111.720001 194 | 2013-10-07,22.83,33.299999,182.009995,65.720001,125.339996,487.750015,310.0299990000001,116.690002,67.190002,37.049999,865.741514,20.27,111.010002 195 | 2013-10-08,22.48,33.009998,178.720001,65.0,123.68,480.93998,303.230011,115.440002,66.349998,37.279999,853.671458,19.610001,111.800003 196 | 2013-10-09,22.59,33.07,181.320007,65.379997,128.089996,486.589989,298.230011,114.470001,65.709999,37.080002,855.8614630000002,19.75,114.400002 197 | 2013-10-10,23.1,33.759998,184.770004,66.449997,131.0,489.639992,305.170013,118.900002,66.839996,37.779999,868.241516,19.57,116.760002 198 | 2013-10-11,23.26,34.130001,186.160004,67.150002,131.649994,492.80999800000006,310.890015,117.980003,67.550003,37.77,871.9914869999999,19.959999,116.150002 199 | 2013-10-14,23.450001,34.450001,186.970001,67.699997,130.75,496.039978,310.700012,119.459999,67.75,37.91,876.111494,19.93,116.849998 200 | 2013-10-15,23.389999,34.490002000000004,184.660004,67.900002,129.610001,498.679985,306.399994,118.18,68.16999799999999,37.66,882.011527,19.700001,115.529999 201 | 2013-10-16,23.700001,34.639999,186.729996,68.269997,130.240005,501.110001,310.48999,120.339996,68.870003,38.0,898.0315210000001,19.76,118.080002 202 | 2013-10-17,23.92,34.919998,174.830002,69.18,130.100006,504.499985,310.769989,122.290001,68.699997,38.549999,888.7914949999998,20.030001,117.099998 203 | 2013-10-18,23.879999,34.959999,173.779999,69.599998,129.520004,508.889992,328.929993,122.519997,68.400002,38.779999,1011.411708,19.610001,118.199997 204 | 2013-10-21,24.139999,34.990002000000004,172.860001,70.379997,129.380005,521.3600230000002,326.440002,121.470001,68.769997,38.82,1003.301698,19.68,117.080002 205 | 2013-10-22,24.07,34.580002,174.970001,72.389999,130.71000700000002,519.870003,332.540009,122.480003,68.91999799999999,39.09,1007.001739,19.790001,118.459999 206 | 2013-10-23,23.74,33.759998,175.770004,71.389999,129.25,524.959999,326.76001,129.020004,67.040001,39.09,1031.411782,19.48,115.639999 207 | 2013-10-24,23.780001,33.720001,177.800003,71.900002,129.820007,531.910011,332.209991,128.979996,66.940002,38.799999,1025.5517539999996,19.139999,114.239998 208 | 2013-10-25,24.24,35.73,176.850006,71.93,128.690002,525.960022,363.390015,131.190002,68.269997,39.029999,1015.201747,19.26,113.699997 209 | 2013-10-28,24.360001,35.57,177.350006,72.099998,128.369995,529.880005,358.160004,129.880005,68.540001,39.610001,1015.001719,19.51,113.589996 210 | 2013-10-29,24.52,35.52,182.119995,71.739998,128.949997,516.680023,362.700012,129.660004,68.93,39.799999,1036.241716,19.48,113.800003 211 | 2013-10-30,24.5,35.54000100000001,180.149994,71.129997,130.199997,524.900024,361.079987,129.679993,69.040001,39.619999,1030.421755,19.42,115.470001 212 | 2013-10-31,24.469999,35.41,179.21000700000005,70.690002,129.419998,522.699974,364.029999,130.5,69.489998,39.57,1030.581776,17.25,113.269997 213 | 2013-11-01,24.33,35.529999,179.229996,70.959999,129.759995,520.030006,359.0,133.029999,69.900002,39.610001,1027.041757,16.75,113.440002 214 | 2013-11-04,24.26,35.939999,180.270004,71.720001,129.630005,526.75,358.73999,132.78999299999998,69.57,39.509998,1026.111769,17.08,113.300003 215 | 2013-11-05,24.030001,36.639999,177.850006,72.18,128.589996,525.4499969999998,358.890015,133.570007,69.010002,39.5,1021.521745,16.85,111.330002 216 | 2013-11-06,24.25,38.18,179.190002,72.809998,129.199997,520.920013,356.179993,133.089996,69.739998,40.049999,1022.751743,17.07,111.309998 217 | 2013-11-07,24.059999,37.5,180.0,71.410004,125.919998,512.490021,343.559998,131.509995,67.089996,39.830002,1007.951699,16.860001,109.760002 218 | 2013-11-08,24.09,37.779999,179.990005,71.860001,127.370003,520.5600049999998,350.309998,133.490005,67.449997,40.049999,1016.031752,16.74,111.18 219 | 2013-11-11,24.17,37.59,182.880005,70.980003,126.669998,519.050011,354.380005,132.529999,67.620003,39.869999,1010.59175,16.610001,112.699997 220 | 2013-11-12,24.43,37.360001,183.070007,70.269997,127.300003,520.009979,349.5299990000001,132.330002,68.510002,39.880001,1011.781743,17.23,111.059998 221 | 2013-11-13,24.6,38.16,183.550003,70.309998,127.660004,520.6300200000002,356.220001,133.169998,70.029999,40.119999,1032.471772,17.940001000000006,110.580002 222 | 2013-11-14,24.389999,38.02,182.210007,70.589996,127.480003,528.160019,367.399994,135.089996,71.220001,40.209999,1035.231717,18.65,111.400002 223 | 2013-11-15,24.52,37.84,183.190002,71.370003,127.980003,524.990013,369.170013,136.080002,72.16999799999998,40.220001,1033.561782,18.5,116.910004 224 | 2013-11-18,24.6,37.200001,184.470001,70.980003,127.650002,518.6299740000002,366.179993,138.360001,71.940002,40.169998,1031.551709,18.719999,120.68 225 | 2013-11-19,24.700001,36.740002,185.25,70.75,126.239998,519.549995,364.940002,136.979996,71.839996,40.139999,1025.2017529999996,18.700001,122.919998 226 | 2013-11-20,24.559999,37.080002,185.190002,70.190002,126.050003,514.9999849999998,362.570007,132.449997,71.029999,40.060001,1022.311744,18.530001,122.919998 227 | 2013-11-21,25.23,37.400002,184.130005,69.58000200000001,125.610001,521.139992,368.920013,132.929993,71.709999,40.43,1034.071744,18.65,122.440002 228 | 2013-11-22,23.870001,37.57,181.300003,69.040001,126.309998,519.799988,372.309998,135.970001,72.959999,40.43,1031.891724,18.299999,122.269997 229 | 2013-11-25,23.75,37.639999,178.940002,69.029999,125.599998,523.739998,376.640015,133.0,72.489998,40.369999,1045.931848,18.17,119.190002 230 | 2013-11-26,23.65,37.349998,177.309998,68.43,124.93,533.399979,381.369995,134.779999,73.650002,40.25,1058.411823,18.16,118.470001 231 | 2013-11-27,23.9,37.599998,178.970001,67.83000200000001,125.209999,545.959999,386.709991,134.720001,73.559998,40.189999,1063.111877,18.530001,119.059998 232 | 2013-11-29,23.84,38.130001,179.679993,68.220001,125.050003,556.069977,393.619995,134.25,73.58000200000002,40.189999,1059.591768,18.299999,119.040001 233 | 2013-12-02,23.700001,38.450001,177.479996,66.910004,124.099998,551.230026,392.299988,134.160004,73.440002,40.080002,1054.481857,18.6,117.68 234 | 2013-12-03,23.549999,38.310001,176.080002,66.550003,123.610001,566.319984,384.660004,132.0,73.309998,40.349998,1053.261845,18.41,116.690002 235 | 2013-12-04,23.74,38.939999,175.740005,67.050003,123.110001,565.000008,385.959991,131.5,73.18,40.369999,1058.181837,17.889999,115.360001 236 | 2013-12-05,24.26,38.0,176.080002,66.620003,121.599998,567.899994,384.48999,132.729996,73.230003,39.830002,1057.341785,17.790001,115.860001 237 | 2013-12-06,24.82,38.360001,177.669998,67.529999,122.739998,560.019974,386.950012,135.179993,73.760002,40.459999,1069.871873,18.1,119.07 238 | 2013-12-09,24.93,38.709999,177.46000700000005,67.339996,122.43,566.43,384.890015,134.679993,73.370003,40.400002,1078.1419050000004,17.969998999999994,117.089996 239 | 2013-12-10,24.82,38.110001,177.119995,66.809998,121.699997,565.54998,387.779999,133.699997,73.379997,39.849998,1084.661869,17.620001000000006,116.410004 240 | 2013-12-11,24.42,37.610001,175.199997,65.279999,120.339996,561.3599780000002,382.190002,132.559998,73.010002,40.130001,1077.291806,17.440001000000002,111.349998 241 | 2013-12-12,24.469999,37.220001,173.369995,63.950001,120.339996,560.539986,381.25,132.96000700000002,72.730003,39.209999,1069.961809,17.67,111.309998 242 | 2013-12-13,24.290001,36.689999,172.800003,63.740002,119.220001,554.429993,384.23999,133.830002,72.58000200000002,39.23,1060.791808,17.51,112.010002 243 | 2013-12-16,24.450001,36.889999,177.850006,64.199997,118.650002,557.500023,388.970001,134.720001,72.790001,39.27,1072.9818810000004,17.5,111.760002 244 | 2013-12-17,24.66,36.52,175.759995,63.73,118.629997,554.990005,387.649994,135.880005,72.91999799999998,39.099998,1069.861826,17.25,109.269997 245 | 2013-12-18,25.15,36.580002,178.699997,64.699997,121.040001,550.769989,395.959991,135.490005,73.18,40.02,1084.751805,17.549999,111.370003 246 | 2013-12-19,25.139999,36.25,180.220001,65.040001,118.709999,544.4599910000002,395.190002,135.169998,72.43,39.860001,1086.221897,17.48,109.559998 247 | 2013-12-20,25.059999,36.799999,180.020004,65.989998,118.75,549.019989,402.200012,136.669998,72.910004,40.040001,1100.621886,17.559998999999998,108.839996 248 | 2013-12-23,25.32,36.619999,182.229996,66.309998,119.269997,570.090004,402.920013,136.399994,72.839996,40.16,1115.101886,17.76,108.989998 249 | 2013-12-24,25.43,37.080002,183.220001,67.059998,118.610001,567.669975,399.200012,136.830002,73.040001,40.189999,1111.841904,17.450001,109.669998 250 | 2013-12-26,25.700001,37.439999,185.350006,66.779999,121.690002,563.900009,404.390015,138.270004,73.480003,40.490002,1117.461899,17.309998999999998,109.470001 251 | 2013-12-27,25.6,37.290001,185.080002,67.410004,121.879997,560.089989,398.079987,136.899994,73.800003,40.66,1118.401934,17.09,110.019997 252 | 2013-12-30,25.85,37.290001,186.410004,67.730003,121.360001,554.5199809999998,393.369995,135.919998,73.57,41.09,1109.461919,17.459999,109.730003 253 | 2013-12-31,25.959999,37.41,187.570007,68.199997,121.919998,561.019997,398.790009,136.490005,74.25,41.310001,1120.711956,17.290001,109.739998 254 | -------------------------------------------------------------------------------- /lectures/_static/lecture_specific/pandas_panel/countries.csv: -------------------------------------------------------------------------------- 1 | "Country (en)";"Country (de)";"Country (local)";"Country code";"Continent";"Capital";"Population";"Area";"Coastline";"Government form";"Currency";"Currency code";"Dialing prefix";"Birthrate";"Deathrate";"Life expectancy";"Url" 2 | "Afghanistan";"Afghanistan";"Afganistan/Afqanestan";"AF";"Asia";;33332025;652230;0;"Presidential islamic republic";"Afghani";"AFN";93;38.3;13.7;51.3;"https://www.laenderdaten.info/Asien/Afghanistan/index.php" 3 | "Egypt";"Ägypten";"Misr";"EG";"Africa";;94666993;1001450;2450;"Presidential republic";"Pfund";"EGP";20;30.3;4.7;72.7;"https://www.laenderdaten.info/Afrika/Aegypten/index.php" 4 | "Åland Islands";"Ålandinseln";"Åland";"AX";"Europe";;29013;1580;0;"Autonomous region of Finland";"Euro";"EUR";358;0;0;0;"https://www.laenderdaten.info/Europa/Aland/index.php" 5 | "Albania";"Albanien";"Shqipëria";"AL";"Europe";;3038594;28748;362;"parliamentary republic";"Lek";"ALL";355;13.1;6.7;78.3;"https://www.laenderdaten.info/Europa/Albanien/index.php" 6 | "Algeria";"Algerien";"Al-Jaza’ir/Algérie";"DZ";"Africa";;40263711;2381741;998;"Presidential republic";"Dinar";"DZD";213;23;4.3;76.8;"https://www.laenderdaten.info/Afrika/Algerien/index.php" 7 | "American Samoa";"Amerikanisch Samoa";"Amerika Samoa";"AS";"Oceania";;54194;199;116;"Presidential democracy (self-governing territory of the US)";"Dollar";"USD";"1-684";22.9;4.8;75.4;"https://www.laenderdaten.info/Ozeanien/Amerikanisch-Samoa/index.php" 8 | "Andorra";"Andorra";"Andorra";"AD";"Europe";;85660;468;0;"parliamentary democracy";"Euro";"EUR";376;7.8;7.1;82.8;"https://www.laenderdaten.info/Europa/Andorra/index.php" 9 | "Angola";"Angola";"Angola";"AO";"Africa";;20172332;1246700;1600;"Presidential republic";"Kwanza";"AOA";244;38.6;11.3;56;"https://www.laenderdaten.info/Afrika/Angola/index.php" 10 | "Anguilla";"Anguilla";"Anguilla";"AI";"North America";;16752;91;61;"Parliamentary democracy (self-governing territory of the UK)";"Dollar";"XCD";1809;12.7;4.6;81.4;"https://www.laenderdaten.info/Amerika/Anguilla/index.php" 11 | "Antarctica";"Antarktis";"–";"AQ";"Antarctica";;0;14000000;17968;"foreign-administrated territory";;;;0;0;0;"https://www.laenderdaten.info/Antarktis/Antarktis/index.php" 12 | "Antigua and Barbuda";"Antigua und Barbuda";"Antigua and Barbuda";"AG";"North America";;93581;443;153;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"XCD";1809;15.8;5.7;76.5;"https://www.laenderdaten.info/Amerika/Antigua-Barbuda/index.php" 13 | "Equatorial Guinea";"Äquatorialguinea";"Guinea Ecuatorial";"GQ";"Africa";;759451;28051;296;"Presidential republic";"Franc";"XAF";240;32.8;8;64.2;"https://www.laenderdaten.info/Afrika/Aequatorialguinea/index.php" 14 | "Argentina";"Argentinien";"Argentina";"AR";"South America";;43886748;2780400;4989;"Presidential republic";"Peso";"ARS";54;17;7.5;77.1;"https://www.laenderdaten.info/Amerika/Argentinien/index.php" 15 | "Armenia";"Armenien";"Hajastan";"AM";"Asia";;3051250;29743;0;"Semi-presidential republic";"Dram";"AMD";374;13.3;9.4;74.6;"https://www.laenderdaten.info/Asien/Armenien/index.php" 16 | "Aruba";"Aruba";"Aruba";"AW";"North America";;113648;180;69;"Parliamentary democracy (territory of the Kingdom of the Netherlands)";"Florin";"AWG";297;12.5;8.3;76.8;"https://www.laenderdaten.info/Amerika/Aruba/index.php" 17 | "Azerbaijan";"Aserbaidschan";"Azärbaycan";"AZ";"Asia";;9872765;86600;0;"Presidential republic";"Manat";"AZN";994;16.2;7.1;72.5;"https://www.laenderdaten.info/Asien/Aserbaidschan/index.php" 18 | "Ethiopia";"Äthiopien";"YeItyop´iya";"ET";"Africa";;102374044;1104300;0;"Federal parliamentary republic";"Birr";"ETB";251;36.9;7.9;62.2;"https://www.laenderdaten.info/Afrika/Aethiopien/index.php" 19 | "Australia";"Australien";"Australia";"AU";"Australia";;22992654;7741220;25760;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"AUD";61;12.1;7.2;82.2;"https://www.laenderdaten.info/Australien/Australien/index.php" 20 | "Bahamas";"Bahamas";"The Bahamas";"BS";"North America";;327316;13880;3542;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"BSD";1809;15.4;7.1;72.4;"https://www.laenderdaten.info/Amerika/Bahamas/index.php" 21 | "Bahrain";"Bahrain";"Al-Bahrayn";"BH";"Asia";;1378904;760;161;"constitutional monarchy";"Dinar";"BHD";973;13.5;2.7;78.9;"https://www.laenderdaten.info/Asien/Bahrain/index.php" 22 | "Bangladesh";"Bangladesch";"Bangladesh";"BD";"Asia";;156186882;143998;580;"parliamentary republic";"Taka";"BDT";880;19;5.3;73.2;"https://www.laenderdaten.info/Asien/Bangladesch/index.php" 23 | "Barbados";"Barbados";"Barbados";"BB";"North America";;291495;430;97;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"BBD";1809;11.8;8.5;75.3;"https://www.laenderdaten.info/Amerika/Barbados/index.php" 24 | "Belarus";"Belarus";"Belarus";"BY";"Europe";;9570376;207600;0;"Presidential republic (in fact a dictatorship)";"Rubel";"BYR";375;10.5;13.3;72.7;"https://www.laenderdaten.info/Europa/Belarus/index.php" 25 | "Belgium";"Belgien";"België/Belgique";"BE";"Europe";;11409077;30528;67;"Federal parliamentary republic (under constitutional monarchy)";"Euro";"EUR";32;11.4;9.7;81;"https://www.laenderdaten.info/Europa/Belgien/index.php" 26 | "Belize";"Belize";"Belize";"BZ";"Central America";;353858;22966;386;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"BZD";501;24.3;6;68.7;"https://www.laenderdaten.info/Amerika/Belize/index.php" 27 | "Benin";"Benin";"Bénin";"BJ";"Africa";;10741458;112622;121;"Presidential republic";"Franc";"XOF";229;35.5;8;61.9;"https://www.laenderdaten.info/Afrika/Benin/index.php" 28 | "Bermuda";"Bermuda";"Bermuda";"BM";"North America";;70537;54;103;"Parliamentary democracy (self-governing territory of the UK)";"Dollar";"BMD";1809;11.3;8.4;81.3;"https://www.laenderdaten.info/Amerika/Bermuda/index.php" 29 | "Bhutan";"Bhutan";"Druk-Yul";"BT";"Asia";;750125;38394;0;"constitutional monarchy";"Ngultrum";"BTN";975;17.5;6.6;70.1;"https://www.laenderdaten.info/Asien/Bhutan/index.php" 30 | "Bolivia";"Bolivien";"Bolivia";"BO";"South America";;10969649;1098581;0;"Presidential republic";"Boliviano";"BOB";591;22.4;6.5;69.2;"https://www.laenderdaten.info/Amerika/Bolivien/index.php" 31 | "Bosnia and Herzegovina";"Bosnien und Herzegowina";"Bosna i Hercegovina";"BA";"Europe";;3861912;51197;20;"parliamentary republic";"Konvertible Mark";"BAM";387;8.8;9.9;76.7;"https://www.laenderdaten.info/Europa/Bosnien-und-Herzegowina/index.php" 32 | "Botswana";"Botswana";"Botswana";"BW";"Africa";;2209208;581730;0;"parliamentary republic";"Pula";"BWP";267;20.7;13.3;54.5;"https://www.laenderdaten.info/Afrika/Botswana/index.php" 33 | "Bouvet Island";"Bouvetinsel";"Bouvetøya";"BV";"Antarctica";;0;49;30;"territory of Norway";"Krone";"NOK";;0;0;0;"https://www.laenderdaten.info/Antarktis/Bouvetinsel/index.php" 34 | "Brazil";"Brasilien";"Brasil";"BR";"South America";;205823665;8514877;7491;"Federal presidential republic";"Real";"BRL";55;14.3;6.6;73.8;"https://www.laenderdaten.info/Amerika/Brasilien/index.php" 35 | "British Indian Ocean Territory";"Britisches Territorium im Indischen Ozean";"British Indian Ocean Territory";"IO";"Africa";;0;54400;698;"British overseas territory";"Dollar";"USD";246;0;0;0;"https://www.laenderdaten.info/Afrika/Britisches-Territorium-im-Indischen-Ozean/index.php" 36 | "Brunei";"Brunei";"Brunei Darussalam";"BN";"Asia";;436620;5765;161;"Absolute monarchy/sultanate";"Dollar";"BND";673;17.2;3.6;77.2;"https://www.laenderdaten.info/Asien/Brunei/index.php" 37 | "Bulgaria";"Bulgarien";"Balgarija";"BG";"Europe";;7144653;110879;354;"parliamentary republic";"Lew";"BGN";359;8.8;14.5;74.5;"https://www.laenderdaten.info/Europa/Bulgarien/index.php" 38 | "Burkina Faso";"Burkina Faso";"Burkina Faso";"BF";"Africa";;19512533;274200;0;"Presidential republic";"Franc";"XOF";226;41.6;11.5;55.5;"https://www.laenderdaten.info/Afrika/Burkina-Faso/index.php" 39 | "Burundi";"Burundi";"Burundi/Uburundi";"BI";"Africa";;11099298;27830;0;"Presidential republic";"Franc";"BIF";257;41.7;9;60.5;"https://www.laenderdaten.info/Afrika/Burundi/index.php" 40 | "Chile";"Chile";"Chile";"CL";"South America";;17650114;756102;6435;"Presidential republic";"Peso";"CLP";56;13.7;6.1;78.8;"https://www.laenderdaten.info/Amerika/Chile/index.php" 41 | "China";"China";"Zhongquo";"CN";"Asia";;1373541278;9596960;14500;"People's republic (communist one-party system)";"Yuan";"CNY";86;12.4;7.7;75.5;"https://www.laenderdaten.info/Asien/China/index.php" 42 | "Cook Islands";"Cookinseln";"The Cook Islands";"CK";"Oceania";;9556;236;120;"parliamentary democracy";"Dollar";"NZD";682;14.1;8.3;75.8;"https://www.laenderdaten.info/Ozeanien/Cookinseln/index.php" 43 | "Costa Rica";"Costa Rica";"Costa Rica";"CR";"Central America";;4872543;51100;1290;"Presidential republic";"Colón";"CRC";506;15.7;4.6;78.6;"https://www.laenderdaten.info/Amerika/Costa-Rica/index.php" 44 | "Curacao";"Curaçao";"Kòrsou";"CW";"America";;149035;444;364;"parliamentary republic";"Gulden";"ANG";"599-9";13.8;8.3;78.3;"https://www.laenderdaten.info/Amerika/Curacao/index.php" 45 | "Denmark";"Dänemark";"Danmark";"DK";"Europe";;5593785;43094;7314;"Parliamentary constitutional monarchy";"Krone";"DKK";45;10.4;10.3;79.4;"https://www.laenderdaten.info/Europa/Daenemark/index.php" 46 | "Democratic Republic of the Congo";"Demokratische Republik Kongo";"République Démocratique du Congo";"CD";"Africa";;81331050;2344858;37;"Semi-presidential republic";"Franc";"CDF";242;34.2;9.9;57.3;"https://www.laenderdaten.info/Afrika/Kongo-Kinshasa/index.php" 47 | "Germany";"Deutschland";"Deutschland";"DE";"Europe";;80722792;357022;2389;"Federal parliamentary republic";"Euro";"EUR";49;8.5;11.6;80.7;"https://www.laenderdaten.info/Europa/Deutschland/index.php" 48 | "Dominica";"Dominica";"Dominica";"DM";"North America";;73757;751;148;"parliamentary republic";"Dollar";"XCD";1809;15.2;7.9;77;"https://www.laenderdaten.info/Amerika/Dominica/index.php" 49 | "Dominican Republic";"Dominikanische Republik";"República Dominicana";"DO";"North America";;10606865;48670;1288;"Presidential republic";"Peso";"DOP";1809;18.6;4.6;78.1;"https://www.laenderdaten.info/Amerika/Dominikanische-Republik/index.php" 50 | "Djibouti";"Dschibuti";"Djibouti/Jibuti";"DJ";"Africa";;846687;23200;314;"Semi-presidential republic";"Franc";"DJF";253;23.6;7.6;63.2;"https://www.laenderdaten.info/Afrika/Dschibuti/index.php" 51 | "Ecuador";"Ecuador";"Ecuador";"EC";"South America";;16080778;283561;2237;"Presidential republic";"Dollar";"USD";593;18.2;5.1;76.8;"https://www.laenderdaten.info/Amerika/Ecuador/index.php" 52 | "El Salvador";"El Salvador";"El Salvador";"SV";"Central America";;6156670;21041;307;"Presidential republic";"Dollar";"USD";503;16.3;5.7;74.7;"https://www.laenderdaten.info/Amerika/El-Salvador/index.php" 53 | "Ivory Coast";"Elfenbeinküste";"Côte d’Ivoire";"CI";"Africa";;23740424;322463;515;"Presidential republic";"Franc";"XOF";225;28.2;9.5;58.7;"https://www.laenderdaten.info/Afrika/Elfenbeinkueste/index.php" 54 | "Eritrea";"Eritrea";"Ertra";"ER";"Africa";;5869869;117600;2234;"Presidential republic";"Nakfa";"ERN";291;30.1;7.3;64.9;"https://www.laenderdaten.info/Afrika/Eritrea/index.php" 55 | "Estonia";"Estland";"Eesti";"EE";"Europe";;1258545;45228;3794;"parliamentary republic";"Euro";"EUR";372;10.3;12.5;76.7;"https://www.laenderdaten.info/Europa/Estland/index.php" 56 | "Falkland Islands";"Falklandinseln";"Falkland Islands";"FK";"South America";;2931;12173;1288;"Parliamentary democracy (self-governing territory of the UK)";"Pfund";"FKP";500;10.9;4.9;0;"https://www.laenderdaten.info/Amerika/Falklandinseln/index.php" 57 | "Faroe Islands";"Färöer-Inseln";"Føroyar";"FO";"Europe";;50456;1393;1117;"Parliamentary democracy (territory of the Kingdom of Denmark)";"Krone";"DKK";298;14;8.7;80.4;"https://www.laenderdaten.info/Europa/Faeroeer-Inseln/index.php" 58 | "Fiji";"Fidschi";"Fiji Islands";"FJ";"Oceania";;915303;18274;1129;"parliamentary republic";"Dollar";"FJD";679;19;6.1;72.7;"https://www.laenderdaten.info/Ozeanien/Fidschi/index.php" 59 | "Finland";"Finnland";"Suomi";"FI";"Europe";;5498211;338145;1250;"parliamentary republic";"Euro";"EUR";358;10.7;9.9;80.9;"https://www.laenderdaten.info/Europa/Finnland/index.php" 60 | "France";"Frankreich";"France";"FR";"Europe";;66836154;643801;3427;"Semi-presidential republic";"Euro";"EUR";33;12.3;9.3;81.8;"https://www.laenderdaten.info/Europa/Frankreich/index.php" 61 | "French Guiana";"Französisch-Guayana";"Guyane française";"GF";"South America";;181000;83534;0;"overseas territory of France";"Euro";"EUR";594;0;0;76.1;"https://www.laenderdaten.info/Amerika/Franzoesisch-Guayana/index.php" 62 | "French Polynesia";"Französisch-Polynesien";"Polynésie française";"PF";"Oceania";;285321;4167;2525;"Parliamentary democracy (territory of France)";"Franc";"XPF";689;15;5.1;77.2;"https://www.laenderdaten.info/Ozeanien/Franzoesisch-Polynesien/index.php" 63 | "French Southern and Antarctic Lands";"Französische Süd- und Antarktisgebiete";"Terres australes françaises";"TF";"Antarctica";;0;439672;2800;"overseas territory of France";"Euro";"EUR";;0;0;0;"https://www.laenderdaten.info/Antarktis/Franzoesische-Antarktis/index.php" 64 | "Gabon";"Gabun";"Le Gabon";"GA";"Africa";;1738541;267667;885;"Presidential republic";"Franc";"XAF";241;34.3;13.1;52.1;"https://www.laenderdaten.info/Afrika/Gabun/index.php" 65 | "Gambia";"Gambia";"The Gambia";"GM";"Africa";;2009648;11295;80;"Presidential republic";"Dalasi";"GMD";220;30.1;7.1;64.9;"https://www.laenderdaten.info/Afrika/Gambia/index.php" 66 | "Georgia";"Georgien";"Sakartvelo";"GE";"Asia";;4928052;69700;310;"Semi-presidential republic";"Lari";"GEL";995;12.5;10.9;76.2;"https://www.laenderdaten.info/Asien/Georgien/index.php" 67 | "Ghana";"Ghana";"Ghana";"GH";"Africa";;26908262;238533;539;"Presidential republic";"Ghana Cedi";"GHS";233;30.8;7.1;66.6;"https://www.laenderdaten.info/Afrika/Ghana/index.php" 68 | "Gibraltar";"Gibraltar";"Gibraltar";"GI";"Europe";;29328;7;12;"Parliamentary democracy (self-governing territory of the UK)";"Pfund";"GIP";350;14.1;8.4;79.4;"https://www.laenderdaten.info/Europa/Gibraltar/index.php" 69 | "Grenada";"Grenada";"Grenada";"GD";"North America";;111219;344;121;"parliamentary democracy";"Dollar";"XCD";1809;15.8;8.1;74.3;"https://www.laenderdaten.info/Amerika/Grenada/index.php" 70 | "Greece";"Griechenland";"Elláda";"GR";"Europe";;10773253;131957;13676;"parliamentary republic";"Euro";"EUR";30;8.5;11.2;80.5;"https://www.laenderdaten.info/Europa/Griechenland/index.php" 71 | "Greenland";"Grönland";"Kalaallit Nunaat/Grønland";"GL";"North America";;57728;2166086;44087;"Parliamentary democracy (territory of the Kingdom of Denmark)";"Krone";"DKK";299;14.4;8.6;72.4;"https://www.laenderdaten.info/Amerika/Groenland/index.php" 72 | "Guadeloupe";"Guadeloupe";"Guadeloupe";"GP";"North America";;456000;1628;0;"overseas territory of France";"Euro";"EUR";590;0;0;77;"https://www.laenderdaten.info/Amerika/Guadeloupe/index.php" 73 | "Guam";"Guam";"Guam";"GU";"Oceania";;162742;544;126;"Presidential democracy (self-governing unincorporated territory of the US)";"Dollar";"USD";671;16.7;5.2;79.1;"https://www.laenderdaten.info/Ozeanien/Guam/index.php" 74 | "Guatemala";"Guatemala";"Guatemala";"GT";"Central America";;15189958;108889;400;"Presidential republic";"Quetzal";"GTQ";502;24.5;4.7;72.3;"https://www.laenderdaten.info/Amerika/Guatemala/index.php" 75 | "Guernsey";"Guernsey";"Bailiwick of Guernsey";"GG";"Europe";;66297;78;50;"Parliamentary democracy (autonomous Crown dependency of the UK)";"Pfund";"GGP";44;9.8;8.9;82.5;"https://www.laenderdaten.info/Europa/Guernsey/index.php" 76 | "Guinea";"Guinea";"Guinée";"GN";"Africa";;12093349;245857;320;"Presidential republic";"Franc";"GNF";224;35.4;9.2;60.6;"https://www.laenderdaten.info/Afrika/Guinea/index.php" 77 | "Guinea-Bissau";"Guinea-Bissau";"Guiné-Bissau";"GW";"Africa";;1759159;36125;350;"Semi-presidential republic";"Franc";"XOF";245;32.9;14.1;50.6;"https://www.laenderdaten.info/Afrika/Guinea-Bissau/index.php" 78 | "Guyana";"Guyana";"Guyana";"GY";"South America";;735909;214969;459;"parliamentary republic";"Dollar";"GYD";592;15.5;7.4;68.4;"https://www.laenderdaten.info/Amerika/Guyana/index.php" 79 | "Haiti";"Haiti";"Haïti/Dayti";"HT";"North America";;10485800;27750;1771;"Semi-presidential republic";"Gourde";"HTG";509;23.3;7.7;63.8;"https://www.laenderdaten.info/Amerika/Haiti/index.php" 80 | "Heard Island and McDonald Islands";"Heard und McDonaldinseln";"Heard and McDonald Islands";"HM";"Antarctica";;0;412;102;"territory of Australia";"Dollar";"AUD";;0;0;0;"https://www.laenderdaten.info/Antarktis/Heard-und-McDonaldinseln/index.php" 81 | "Honduras";"Honduras";"Honduras";"HN";"Central America";;8893259;112090;669;"Presidential republic";"Lempira";"HNL";504;22.8;5.2;71.1;"https://www.laenderdaten.info/Amerika/Honduras/index.php" 82 | "Hong Kong";"Hongkong";"Xianggang/Hong Kong";"HK";"Asia";;7167403;1108;733;"Presidential limited democracy (special administrative region of China)";"Dollar";"HKD";852;9.1;7.2;82.9;"https://www.laenderdaten.info/Asien/Hongkong/index.php" 83 | "India";"Indien";"Bharat/India";"IN";"Asia";;1266883598;3287263;7000;"Federal parliamentary republic";"Rupie";"INR";91;19.3;7.3;68.5;"https://www.laenderdaten.info/Asien/Indien/index.php" 84 | "Indonesia";"Indonesien";"Indonesia";"ID";"Asia";;258316051;1904569;54716;"Presidential republic";"Rupiah";"IDR";62;16.4;6.4;72.7;"https://www.laenderdaten.info/Asien/Indonesien/index.php" 85 | "Isle of Man";"Insel Man";"Isle of Man";"IM";"Europe";;88195;572;160;"Parliamentary democracy (autonomous Crown dependency of the UK)";"Pfund";"IMP";"44-1624";11;10.1;81.2;"https://www.laenderdaten.info/Europa/Insel-Man/index.php" 86 | "Iraq";"Irak";"Al-´Iraq";"IQ";"Asia";;38146025;438317;58;"Federal parliamentary republic";"Dinar";"IQD";964;30.9;3.8;74.9;"https://www.laenderdaten.info/Asien/Irak/index.php" 87 | "Iran";"Iran";"Iran";"IR";"Asia";;82801633;1648195;2440;"islamic republic";"Rial";"IRR";98;17.8;5.9;71.4;"https://www.laenderdaten.info/Asien/Iran/index.php" 88 | "Ireland";"Irland";"Ireland/Éire";"IE";"Europe";;4952473;70273;1448;"parliamentary republic";"Euro";"EUR";353;14.5;6.5;80.8;"https://www.laenderdaten.info/Europa/Irland/index.php" 89 | "Iceland";"Island";"Ísland";"IS";"Europe";;335878;103000;4970;"parliamentary republic";"Krone";"ISK";354;13.8;6.3;83;"https://www.laenderdaten.info/Europa/Island/index.php" 90 | "Israel";"Israel";"Yisra’el/Isra’il";"IL";"Asia";;8174527;20770;273;"parliamentary democracy";"Schekel";"ILS";972;18.3;5.2;82.4;"https://www.laenderdaten.info/Asien/Israel/index.php" 91 | "Italy";"Italien";"Italia";"IT";"Europe";;62007540;301340;7600;"parliamentary republic";"Euro";"EUR";39;8.7;10.3;82.2;"https://www.laenderdaten.info/Europa/Italien/index.php" 92 | "Jamaica";"Jamaika";"Jamaica";"JM";"North America";;2970340;10991;1022;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"JMD";1876;18;6.7;73.6;"https://www.laenderdaten.info/Amerika/Jamaika/index.php" 93 | "Japan";"Japan";"Nihon/Nippon";"JP";"Asia";;126702133;377915;29751;"Parliamentary constitutional monarchy";"Yen";"JPY";81;7.8;9.6;85;"https://www.laenderdaten.info/Asien/Japan/index.php" 94 | "Yemen";"Jemen";"Al-Yaman";"YE";"Asia";;27392779;527968;1906;"republic";"Rial";"YER";967;29.2;6.1;65.5;"https://www.laenderdaten.info/Asien/Jemen/index.php" 95 | "Jersey";"Jersey";"Bailiwick of Jersey";"JE";"Europe";;98069;116;70;"Parliamentary democracy (autonomous Crown dependency of the UK)";"Pfund-Sterling";"JEP";44;12.1;7.7;81.9;"https://www.laenderdaten.info/Europa/Jersey/index.php" 96 | "Jordan";"Jordanien";"Al-Urdunn";"JO";"Asia";;8185384;89342;26;"Parliamentary constitutional monarchy";"Dinar";"JOD";962;25.5;3.8;74.6;"https://www.laenderdaten.info/Asien/Jordanien/index.php" 97 | "British Virgin Islands";"Jungferninseln (UK)";"British Virgin Islands";"VG";"North America";;34232;151;80;"Parliamentary democracy (self-governing territory of the UK)";"Dollar";"USD";"1-284";11;5.1;78.6;"https://www.laenderdaten.info/Amerika/Jungferninseln-UK/index.php" 98 | "Virgin Islands";"Jungferninseln (US)";"Virgin Islands of the United States";"VI";"North America";;102951;1910;188;"Presidential democracy (self-governing territory of the US)";"Dollar";"USD";1809;10.2;8.9;80;"https://www.laenderdaten.info/Amerika/Jungferninseln-US/index.php" 99 | "Cayman Islands";"Kaimaninseln";"Cayman Islands";"KY";"North America";;57268;264;160;"Parliamentary democracy (self-governing territory of the UK)";"Cayman-Dollar";"KYD";1809;12.1;5.7;81.2;"https://www.laenderdaten.info/Amerika/Kaimaninseln/index.php" 100 | "Cambodia";"Kambodscha";"Kâmpuchéa";"KH";"Asia";;15957223;181035;443;"Parliamentary constitutional monarchy";"Riel";"KHR";855;23.4;7.6;64.5;"https://www.laenderdaten.info/Asien/Kambodscha/index.php" 101 | "Cameroon";"Kamerun";"Cameroun/Cameroon";"CM";"Africa";;24360803;475440;402;"Presidential republic";"Franc";"XAF";237;35.8;9.8;58.5;"https://www.laenderdaten.info/Afrika/Kamerun/index.php" 102 | "Canada";"Kanada";"Canada";"CA";"North America";;35362905;9984670;202080;"Federal parliamentary republic (under constitutional monarchy)";"Dollar";"CAD";1;10.3;8.5;81.9;"https://www.laenderdaten.info/Amerika/Kanada/index.php" 103 | "Cape Verde";"Kap Verde";"Cabo Verde";"CV";"Africa";;553432;4033;965;"parliamentary republic";"Escudo";"CVE";238;20.2;6.1;72.1;"https://www.laenderdaten.info/Afrika/Kap-Verde/index.php" 104 | "Kazakhstan";"Kasachstan";"Qazaqstan";"KZ";"Asia";;18360353;2724900;0;"Presidential republic";"Tenge";"KZT";7;18.7;8.2;70.8;"https://www.laenderdaten.info/Asien/Kasachstan/index.php" 105 | "Qatar";"Katar";"Qatar";"QA";"Asia";;2258283;11586;563;"absolute monarchy";"Dollar";"QAR";974;9.7;1.5;78.7;"https://www.laenderdaten.info/Asien/Katar/index.php" 106 | "Kenya";"Kenia";"Kenya";"KE";"Africa";;46790758;580367;536;"Presidential republic";"Schilling";"KES";254;25.1;6.8;64;"https://www.laenderdaten.info/Afrika/Kenia/index.php" 107 | "Kyrgyzstan";"Kirgisistan";"Kyrgyzstan";"KG";"Asia";;5727553;199951;0;"parliamentary republic";"Som";"KGS";996;22.6;6.6;70.7;"https://www.laenderdaten.info/Asien/Kirgisistan/index.php" 108 | "Kiribati";"Kiribati";"Kiribati";"KI";"Oceania";;106925;811;1143;"Presidential republic";"Dollar";"AUD";686;21.3;7.1;66.2;"https://www.laenderdaten.info/Ozeanien/Kiribati/index.php" 109 | "Cocos Islands";"Kokosinseln";"Cocos (Keeling) Islands";"CC";"Australia";;596;14;26;"(non-self-governing territory of Australia)";"Dollar";"AUD";891;0;0;0;"https://www.laenderdaten.info/Australien/Kokosinseln/index.php" 110 | "Colombia";"Kolumbien";"Colombia";"CO";"South America";;47220856;1138910;3208;"Presidential republic";"Peso";"COP";57;16.3;5.4;75.7;"https://www.laenderdaten.info/Amerika/Kolumbien/index.php" 111 | "Comoros";"Komoren";"Komori/Comores";"KM";"Africa";;794678;2235;340;"Federal presidential republic";"Franc";"KMF";269;26.9;7.4;64.2;"https://www.laenderdaten.info/Afrika/Komoren/index.php" 112 | "Republic of the Congo";"Kongo";"Congo";"CG";"Africa";;4852412;342000;169;"Presidential republic";"Franc";"CDF";242;35.1;9.7;59.3;"https://www.laenderdaten.info/Afrika/Kongo-Brazzaville/index.php" 113 | "Kosovo";"Kosovo";"Kosova";"XK";"Europe";;1883018;10887;0;"parliamentary republic";"Euro";"EUR";383;0;0;69;"https://www.laenderdaten.info/Europa/Kosovo/index.php" 114 | "Croatia";"Kroatien";"Hrvatska";"HR";"Europe";;4313707;56594;5835;"parliamentary republic";"Kuna";"HRK";385;9;12.1;75.9;"https://www.laenderdaten.info/Europa/Kroatien/index.php" 115 | "Cuba";"Kuba";"Cuba";"CU";"North America";;11179995;110860;3735;"Republic (communist one-party system)";"Peso";"CUP";53;10.8;8.6;78.7;"https://www.laenderdaten.info/Amerika/Kuba/index.php" 116 | "Kuwait";"Kuwait";"Al-Kuwayt";"KW";"Asia";;2832776;17818;499;"constitutional monarchy";"Dinar";"KWD";965;19.6;2.2;78;"https://www.laenderdaten.info/Asien/Kuwait/index.php" 117 | "Laos";"Laos";"Lao";"LA";"Asia";;7019073;236800;0;"Republic (communist one-party system)";"Kip";"LAK";856;23.9;7.5;64.3;"https://www.laenderdaten.info/Asien/Laos/index.php" 118 | "Lesotho";"Lesotho";"Lesotho";"LS";"Africa";;1953070;30355;0;"Parliamentary constitutional monarchy";"Loti";"LSL";266;25.1;14.9;53;"https://www.laenderdaten.info/Afrika/Lesotho/index.php" 119 | "Latvia";"Lettland";"Latvija";"LV";"Europe";;1965686;64589;498;"parliamentary republic";"Euro";"EUR";371;9.9;14.4;74.5;"https://www.laenderdaten.info/Europa/Lettland/index.php" 120 | "Lebanon";"Libanon";"Lubnan";"LB";"Asia";;6237738;10400;225;"parliamentary republic";"Pfund";"LBP";961;14.4;4.9;77.6;"https://www.laenderdaten.info/Asien/Libanon/index.php" 121 | "Liberia";"Liberia";"Liberia";"LR";"Africa";;4299944;111369;579;"Presidential republic";"Dollar";"LRD";231;33.9;9.5;59;"https://www.laenderdaten.info/Afrika/Liberia/index.php" 122 | "Libya";"Libyen";"Libiya";"LY";"Africa";;6541948;1759540;1770;"Republic (transitional government after dictatorship)";"Dinar";"LYD";218;17.8;3.6;76.5;"https://www.laenderdaten.info/Afrika/Libyen/index.php" 123 | "Liechtenstein";"Liechtenstein";"Liechtenstein";"LI";"Europe";;37937;160;0;"constitutional monarchy";"Franken";"CHF";423;10.4;7.3;81.9;"https://www.laenderdaten.info/Europa/Liechtenstein/index.php" 124 | "Lithuania";"Litauen";"Lietuva";"LT";"Europe";;2854235;65300;90;"Semi-presidential republic";"Litas";"LTL";370;10;14.5;74.9;"https://www.laenderdaten.info/Europa/Litauen/index.php" 125 | "Luxembourg";"Luxemburg";"Luxembourg/Lëtzebuerg";"LU";"Europe";;582291;2586;0;"constitutional monarchy";"Euro";"EUR";352;11.4;7.3;82.3;"https://www.laenderdaten.info/Europa/Luxemburg/index.php" 126 | "Macau";"Macau";"Macau/Aomen";"MO";"Asia";;597425;28;41;"Presidential limited democracy (special administrative region of China)";"Pataca";"MOP";853;8.8;4.4;84.5;"https://www.laenderdaten.info/Asien/Macau/index.php" 127 | "Madagascar";"Madagaskar";"Madagasikara/Madagascar";"MG";"Africa";;24430325;587041;4828;"Semi-presidential republic";"Ariary";"MGA";261;32.1;6.7;65.9;"https://www.laenderdaten.info/Afrika/Madagaskar/index.php" 128 | "Malawi";"Malawi";"Malawi";"MW";"Africa";;18570321;118484;0;"Presidential republic";"Kwacha";"MWK";265;41.3;8.1;61.2;"https://www.laenderdaten.info/Afrika/Malawi/index.php" 129 | "Malaysia";"Malaysia";"Malaysia";"MY";"Asia";;30949962;329847;4675;"Federal constitutional monarchy";"Ringgit";"MYR";60;19.4;5.1;75;"https://www.laenderdaten.info/Asien/Malaysia/index.php" 130 | "Maldives";"Malediven";"Dhivehi Raajje/Maldives";"MV";"Asia";;392960;298;644;"Presidential republic";"Rufiyaa";"MVR";960;16;3.9;75.6;"https://www.laenderdaten.info/Asien/Malediven/index.php" 131 | "Mali";"Mali";"Mali";"ML";"Africa";;17467108;1240192;0;"Semi-presidential republic";"Franc";"XOF";223;44.4;12.6;55.8;"https://www.laenderdaten.info/Afrika/Mali/index.php" 132 | "Malta";"Malta";"Malta";"MT";"Europe";;415196;316;197;"parliamentary republic";"Euro";"EUR";356;10.1;9.2;80.4;"https://www.laenderdaten.info/Europa/Malta/index.php" 133 | "Morocco";"Marokko";"Al-Maghrib";"MA";"Africa";;33655786;446550;1835;"Parliamentary constitutional monarchy";"Dirham";"MAD";212;18;4.8;76.9;"https://www.laenderdaten.info/Afrika/Marokko/index.php" 134 | "Marshall Islands";"Marshallinseln";"Marshall Islands/Majol";"MH";"Oceania";;73376;181;370;"Presidential republic";"Dollar";"USD";692;25;4.2;73.1;"https://www.laenderdaten.info/Ozeanien/Marshallinseln/index.php" 135 | "Martinique";"Martinique";"Martinique";"MQ";"North America";;395000;1128;0;"overseas territory of France";"Euro";"EUR";596;0;0;78.3;"https://www.laenderdaten.info/Amerika/Martinique/index.php" 136 | "Mauritania";"Mauretanien";"Muritaniya/Mauritanie";"MR";"Africa";;3677293;1030700;754;"Presidential republic";"Ouguiya";"MRO";222;30.9;8.1;63;"https://www.laenderdaten.info/Afrika/Mauretanien/index.php" 137 | "Mauritius";"Mauritius";"Mauritius";"MU";"Africa";;1348242;2040;177;"parliamentary republic";"Rupie";"MUR";230;13.1;7;75.6;"https://www.laenderdaten.info/Afrika/Mauritius/index.php" 138 | "Mayotte";"Mayotte";"Mayotte";"YT";"Africa";;223765;374;0;"overseas territory of France";"Euro";"EUR";269;39.3;0;62.9;"https://www.laenderdaten.info/Afrika/Mayotte/index.php" 139 | "Macedonia";"Mazedonien";"Makedonija";"MK";"Europe";;2100025;25713;0;"parliamentary republic";"Denar";"MKD";389;11.5;9.1;76.2;"https://www.laenderdaten.info/Europa/Mazedonien/index.php" 140 | "Mexico";"Mexiko";"México";"MX";"North America";;123166749;1964375;9330;"Federal presidential republic";"Peso";"MXN";52;18.5;5.3;75.9;"https://www.laenderdaten.info/Amerika/Mexiko/index.php" 141 | "Micronesia, Federated States of";"Mikronesien";"Micronesia";"FM";"Oceania";;104719;702;6112;"Federal republic";"Dollar";"USD";691;20.3;4.2;72.9;"https://www.laenderdaten.info/Ozeanien/Mikronesien/index.php" 142 | "Moldova";"Moldawien";"Moldova";"MD";"Europe";;3510485;33851;0;"parliamentary republic";"Leu";"MDL";373;11.8;12.6;70.7;"https://www.laenderdaten.info/Europa/Moldau/index.php" 143 | "Monaco";"Monaco";"Monaco";"MC";"Europe";;30581;2;4;"constitutional monarchy";"Euro";"EUR";3393;6.6;9.6;89.5;"https://www.laenderdaten.info/Europa/Monaco/index.php" 144 | "Mongolia";"Mongolei";"Mongol Uls";"MN";"Asia";;3031330;1564116;0;"Semi-presidential republic";"Tögrög";"MNT";976;19.6;6.3;69.6;"https://www.laenderdaten.info/Asien/Mongolei/index.php" 145 | "Montenegro";"Montenegro";;"ME";"Europe";;644578;13812;294;"parliamentary republic";"Euro";"EUR";382;10.2;9.6;0;"https://www.laenderdaten.info/Europa/Montenegro/index.php" 146 | "Montserrat";"Montserrat";"Montserrat";"MS";"North America";;5267;102;40;"Parliamentary democracy (self-governing territory of the UK)";"Dollar";"XCD";1809;11;6.3;74.4;"https://www.laenderdaten.info/Amerika/Montserrat/index.php" 147 | "Mozambique";"Mosambik";"Moçambique";"MZ";"Africa";;25930150;799380;2470;"Presidential republic";"Metical";"MZN";258;38.3;11.9;53.3;"https://www.laenderdaten.info/Afrika/Mosambik/index.php" 148 | "Burma";"Myanmar";"Myanma Pye";"MM";"Asia";;56890418;676578;1930;"parliamentary republic";"Kyat";"MMK";95;18.2;7.9;66.6;"https://www.laenderdaten.info/Asien/Myanmar/index.php" 149 | "Namibia";"Namibia";"Namibia";"NA";"Africa";;2436469;824292;1572;"Presidential republic";"Dollar";"NAD";264;27.9;8.1;63.6;"https://www.laenderdaten.info/Afrika/Namibia/index.php" 150 | "Nauru";"Nauru";"Naoero/Nauru";"NR";"Oceania";;9591;21;30;"parliamentary republic";"Dollar";"AUD";674;24.4;5.9;67.1;"https://www.laenderdaten.info/Ozeanien/Nauru/index.php" 151 | "Nepal";"Nepal";"Nepal";"NP";"Asia";;29033914;147181;0;"Federal parliamentary republic";"Rupie";"NPR";977;19.9;5.7;70.7;"https://www.laenderdaten.info/Asien/Nepal/index.php" 152 | "New Caledonia";"Neukaledonien";"Nouvelle-Calédonie";"NC";"Oceania";;275355;18575;2254;"Parliamentary democracy (territory of France)";"Franc";"XPF";687;15.2;5.6;77.7;"https://www.laenderdaten.info/Ozeanien/Neukaledonien/index.php" 153 | "New Zealand";"Neuseeland";"New Zealand/Aotearoa";"NZ";"Australia";;4474549;267710;15134;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"NZD";64;13.3;7.4;81.2;"https://www.laenderdaten.info/Australien/Neuseeland/index.php" 154 | "Nicaragua";"Nicaragua";"Nicaragua";"NI";"Central America";;5966798;130370;910;"Presidential republic";"Córdoba Oro";"NIO";505;17.9;5.1;73.2;"https://www.laenderdaten.info/Amerika/Nicaragua/index.php" 155 | "Netherlands";"Niederlande";"Nederland";"NL";"Europe";;17016967;41543;451;"Parliamentary constitutional monarchy";"Euro";"EUR";31;10.9;8.8;81.3;"https://www.laenderdaten.info/Europa/Niederlande/index.php" 156 | "Netherlands Antilles";"Niederländische Antillen";"Nederlandse Antillen";"AN";"North America";;227049;800;0;"territory of the Netherlands";"Gulden";"ANG";599;14.2;0;76.7;"https://www.laenderdaten.info/Amerika/Niederlaendische-Antillen/index.php" 157 | "Niger";"Niger";"Niger";"NE";"Africa";;18638600;1267000;0;"Semi-presidential republic";"Franc";"XOF";227;44.8;12.1;55.5;"https://www.laenderdaten.info/Afrika/Niger/index.php" 158 | "Nigeria";"Nigeria";"Nigeria";"NG";"Africa";;186053386;923768;853;"Federal presidential republic";"Naira";"NGN";234;37.3;12.7;53.4;"https://www.laenderdaten.info/Afrika/Nigeria/index.php" 159 | "Niue";"Niue";"Niue";"NU";"Oceania";;1190;260;64;"parliamentary democracy";"Dollar";"NZD";683;0;0;0;"https://www.laenderdaten.info/Ozeanien/Niue/index.php" 160 | "North Korea";"Nordkorea";"Choson Minjujuui In´min Konghwaguk (Bukhan)";"KP";"Asia";;25115311;120538;2495;"People's republic (communist one-party system)";"Won";"KPW";850;14.6;9.3;70.4;"https://www.laenderdaten.info/Asien/Nordkorea/index.php" 161 | "Northern Mariana Islands";"Nördliche Marianen";"Northern Mariana Islands";"MP";"Oceania";;53467;464;1482;"Presidential democracy";"Dollar";"USD";"1-670";17.2;3.8;78;"https://www.laenderdaten.info/Ozeanien/Noerdliche-Marianen/index.php" 162 | "Norfolk Island";"Norfolkinsel";"Norfolk Island";"NF";"Australia";;2210;36;32;"Parliamentary democracy (territory of Australia)";"Dollar";"AUD";6723;0;0;0;"https://www.laenderdaten.info/Australien/Norfolkinsel/index.php" 163 | "Norway";"Norwegen";"Norge";"NO";"Europe";;5265158;323802;25148;"Parliamentary constitutional monarchy";"Krone";"NOK";47;12.2;8.1;81.8;"https://www.laenderdaten.info/Europa/Norwegen/index.php" 164 | "Oman";"Oman";"´Uman";"OM";"Asia";;3355262;309500;2092;"absolute monarchy";"Rial";"OMR";968;24.3;3.3;75.5;"https://www.laenderdaten.info/Asien/Oman/index.php" 165 | "Austria";"Österreich";"Österreich";"AT";"Europe";;8711770;83871;0;"Federal parliamentary republic";"Euro";"EUR";43;9.5;9.5;81.5;"https://www.laenderdaten.info/Europa/Oesterreich/index.php" 166 | "Timor-Leste";"Osttimor";"Timor Timur";"TL";"Asia";;1261072;14874;706;"Semi-presidential republic";"Dollar";"USD";670;33.8;6;68.1;"https://www.laenderdaten.info/Asien/Osttimor/index.php" 167 | "Pakistan";"Pakistan";"Pakistan";"PK";"Asia";;201995540;796095;1046;"Federal parliamentary republic";"Rupie";"PKR";92;22.3;6.4;67.7;"https://www.laenderdaten.info/Asien/Pakistan/index.php" 168 | "Palestine";"Palästina";"Filastin";"PS";"Asia";;2731052;5860;0;"autonomous region";"Schekel";"ILS";970;23.4;3.5;75.7;"https://www.laenderdaten.info/Asien/Palaestina/index.php" 169 | "Palau";"Palau";"Belau/Palau";"PW";"Oceania";;21347;459;1519;"Presidential republic";"Dollar";"USD";680;11.2;8;73.1;"https://www.laenderdaten.info/Ozeanien/Palau/index.php" 170 | "Panama";"Panama";"Panamá";"PA";"Central America";;3705246;75420;2490;"Presidential republic";"Balboa";"PAB";507;18.1;4.9;78.6;"https://www.laenderdaten.info/Amerika/Panama/index.php" 171 | "Papua New Guinea";"Papua-Neuguinea";"Papua New Guinea/Papua Niugini";"PG";"Oceania";;6791317;462840;5152;"Parliamentary democracy (under constitutional monarchy)";"Kina";"PGK";675;24;6.5;67.2;"https://www.laenderdaten.info/Ozeanien/Papua-Neuguinea/index.php" 172 | "Paraguay";"Paraguay";"Paraguay";"PY";"South America";;6862812;406752;0;"Presidential republic";"Guaraní";"PYG";595;16.5;4.7;77.2;"https://www.laenderdaten.info/Amerika/Paraguay/index.php" 173 | "Peru";"Peru";"Perú/Piruw";"PE";"South America";;30741062;1285216;2414;"Presidential republic";"Nuevo Sol";"PEN";51;18;6;73.7;"https://www.laenderdaten.info/Amerika/Peru/index.php" 174 | "Philippines";"Philippinen";"Pilipinas";"PH";"Asia";;102624209;300000;36289;"Presidential republic";"Peso";"PHP";63;24;6.1;69.2;"https://www.laenderdaten.info/Asien/Philippinen/index.php" 175 | "Pitcairn Islands";"Pitcairninseln";"Pitcairn";"PN";"Oceania";;54;47;51;"Parliamentary democracy (territory of the US)";"Pfund";"GBP";649;0;0;0;"https://www.laenderdaten.info/Ozeanien/Pitcairninseln/index.php" 176 | "Poland";"Polen";"Polska";"PL";"Europe";;38523261;312685;440;"parliamentary republic";"Zloty";"PLN";48;9.6;10.3;77.6;"https://www.laenderdaten.info/Europa/Polen/index.php" 177 | "Portugal";"Portugal";"Portugal";"PT";"Europe";;10833816;92090;1793;"Semi-presidential republic";"Euro";"EUR";351;9.1;11.1;79.3;"https://www.laenderdaten.info/Europa/Portugal/index.php" 178 | "Puerto Rico";"Puerto Rico";"Puerto Rico";"PR";"North America";;3578056;13790;501;"Presidential democracy";"Dollar";"USD";1809;10.8;8.8;79.4;"https://www.laenderdaten.info/Amerika/Puerto-Rico/index.php" 179 | "Reunion";"Réunion";"Réunion";"RE";"Africa";;699000;2512;0;"overseas territory of France";"Euro";"EUR";262;0;0;72.7;"https://www.laenderdaten.info/Afrika/Reunion/index.php" 180 | "Rwanda";"Ruanda";"Rwanda/Urwanda";"RW";"Africa";;12988423;26338;0;"Presidential republic";"Franc";"RWF";250;33.3;8.8;60.1;"https://www.laenderdaten.info/Afrika/Ruanda/index.php" 181 | "Romania";"Rumänien";"România";"RO";"Europe";;21599736;238391;225;"Semi-presidential republic";"Leu";"RON";40;9;11.9;75.1;"https://www.laenderdaten.info/Europa/Rumaenien/index.php" 182 | "Russia";"Russland";"Rossija";"RU";"Europe";;142355415;17098242;37653;"Federal republic";"Rubel";"RUB";7;11.3;13.6;70.8;"https://www.laenderdaten.info/Europa/Russland/index.php" 183 | "Solomon Islands";"Salomonen";"Solomon Islands";"SB";"Oceania";;635027;28896;5313;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"SBD";677;25.3;3.8;75.3;"https://www.laenderdaten.info/Ozeanien/Salomonen/index.php" 184 | "Zambia";"Sambia";"Zambia";"ZM";"Africa";;15510711;752618;0;"Presidential republic";"Kwacha";"ZMK";260;41.8;12.4;52.5;"https://www.laenderdaten.info/Afrika/Sambia/index.php" 185 | "Samoa";"Samoa";"Samoa";"WS";"Oceania";;198926;2831;403;"parliamentary republic";"Tala";"WST";685;20.6;5.3;73.7;"https://www.laenderdaten.info/Ozeanien/Samoa/index.php" 186 | "San Marino";"San Marino";"San Marino";"SM";"Europe";;33285;61;0;"parliamentary republic";"Euro";"EUR";378;8.6;8.6;83.3;"https://www.laenderdaten.info/Europa/San-Marino/index.php" 187 | "Saint Barthelemy";"Sankt Bartholomäus";"Saint-Barthélemy";"BL";"America";;7209;21;0;"territory of France";"Euro";"EUR";590;0;0;0;"https://www.laenderdaten.info/Amerika/Sankt-Bartholomaeus/index.php" 188 | "Sao Tome and Principe";"São Tomé und Príncipe";"São Tomé e Príncipe";"ST";"Africa";;197541;964;209;"Semi-presidential republic";"Dobra";"STD";239;33.3;7;64.9;"https://www.laenderdaten.info/Afrika/Sao-Tome-und-Principe/index.php" 189 | "Saudi Arabia";"Saudi-Arabien";"Al-´Arabiya as-Sa´udiya";"SA";"Asia";;28160273;2149690;2640;"absolute monarchy";"Riyal";"SAR";966;18.4;3.3;75.3;"https://www.laenderdaten.info/Asien/Saudi-Arabien/index.php" 190 | "Sweden";"Schweden";"Sverige";"SE";"Europe";;9880604;450295;3218;"Parliamentary constitutional monarchy";"Krone";"SEK";46;12;9.4;82.1;"https://www.laenderdaten.info/Europa/Schweden/index.php" 191 | "Switzerland";"Schweiz";"Schweiz/Suisse/Svizzera/Svizra";"CH";"Europe";;8179294;41277;0;"Federal republic";"Franken";"CHF";41;10.5;8.2;82.6;"https://www.laenderdaten.info/Europa/Schweiz/index.php" 192 | "Senegal";"Senegal";"Sénégal/Sounougal";"SN";"Africa";;14320055;196722;531;"Presidential republic";"Franc";"XOF";221;34;8.3;61.7;"https://www.laenderdaten.info/Afrika/Senegal/index.php" 193 | "Serbia";"Serbien";;"RS";"Europe";;7143921;77474;0;"parliamentary republic";"Dinar";"RSD";381;9;13.6;75.5;"https://www.laenderdaten.info/Europa/Serbien/index.php" 194 | "Seychelles";"Seychellen";"Sesel/Seychelles";"SC";"Africa";;93186;455;491;"Presidential republic";"Rupie";"SCR";248;13.9;6.9;74.7;"https://www.laenderdaten.info/Afrika/Seychellen/index.php" 195 | "Sierra Leone";"Sierra Leone";"Sierra Leone";"SL";"Africa";;6018888;71740;402;"Presidential republic";"Leone";"SLL";232;36.7;10.6;58.2;"https://www.laenderdaten.info/Afrika/Sierra-Leone/index.php" 196 | "Zimbabwe";"Simbabwe";"Zimbabwe";"ZW";"Africa";;14546961;390757;0;"Semi-presidential republic";"Dollar";"ZWL";263;31.9;9.9;58;"https://www.laenderdaten.info/Afrika/Simbabwe/index.php" 197 | "Singapore";"Singapur";"Singapore/Singapura/Xinjiapo/Singapur";"SG";"Asia";;5781728;697;193;"parliamentary republic";"Dollar";"SGD";65;8.4;3.5;85;"https://www.laenderdaten.info/Asien/Singapur/index.php" 198 | "Saint Martin";"Sint Maarten";"Sint Maarten";"SX";"America";;31949;54;59;"Republic (autonomous territory of the Kingdom of the Netherlands)";"Gulden";"ANG";"1-721";13.1;5;78.1;"https://www.laenderdaten.info/Amerika/Sint-Maarten/index.php" 199 | "Slovakia";"Slowakei";"Slovensko";"SK";"Europe";;5445802;49035;0;"parliamentary republic";"Euro";"EUR";42;9.8;9.8;77.1;"https://www.laenderdaten.info/Europa/Slowakei/index.php" 200 | "Slovenia";"Slowenien";"Slovenija";"SI";"Europe";;1978029;20273;47;"parliamentary republic";"Euro";"EUR";386;8.3;11.5;78.2;"https://www.laenderdaten.info/Europa/Slowenien/index.php" 201 | "Somalia";"Somalia";"Soomaaliya";"SO";"Africa";;10817354;637657;3025;"Federal parliamentary republic";"Schilling";"SOS";252;40;13.3;52.4;"https://www.laenderdaten.info/Afrika/Somalia/index.php" 202 | "Spain";"Spanien";"España";"ES";"Europe";;48563476;505370;4964;"Parliamentary constitutional monarchy";"Euro";"EUR";34;9.4;9.1;81.7;"https://www.laenderdaten.info/Europa/Spanien/index.php" 203 | "Sri Lanka";"Sri Lanka";"Sri Lanka/Ilankai";"LK";"Asia";;22235000;65610;1340;"Presidential republic";"Rupie";"LKR";94;15.5;6.2;76.8;"https://www.laenderdaten.info/Asien/Sri-Lanka/index.php" 204 | "Saint Helena, Ascension and Tristan da Cunha";"St. Helena";"Saint Helena";"SH";"Africa";;7795;308;60;"Parliamentary democracy (limited self-governing territory of the UK)";"Pfund";"SHP";290;9.7;7.7;79.5;"https://www.laenderdaten.info/Afrika/St-Helena/index.php" 205 | "Saint Kitts and Nevis";"St. Kitts und Nevis";"Saint Kitts and Nevis";"KN";"North America";;52329;261;135;"Federal parliamentary republic (under constitutional monarchy)";"Dollar";"XCD";1809;13.3;7.1;75.7;"https://www.laenderdaten.info/Amerika/St-Kitts-Nevis/index.php" 206 | "Saint Lucia";"St. Lucia";"Saint Lucia";"LC";"North America";;164464;616;158;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"XCD";1809;13.5;7.6;77.8;"https://www.laenderdaten.info/Amerika/St-Lucia/index.php" 207 | "Saint Pierre and Miquelon";"St. Pierre und Miquelon";"Saint-Pierre-et-Miquelon";"PM";"North America";;5595;242;120;"Parliamentary democracy (territory of France)";"Euro";"EUR";508;7.2;9.8;80.5;"https://www.laenderdaten.info/Amerika/St-Pierre-Miquelon/index.php" 208 | "Saint Vincent and the Grenadines";"St. Vincent und die Grenadinen";"Saint Vincent and the Grenadines";"VC";"North America";;102350;389;84;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"XCD";1809;13.4;7.3;75.3;"https://www.laenderdaten.info/Amerika/St-Vincent-Grenadinen/index.php" 209 | "South Africa";"Südafrika";"South Africa";"ZA";"Africa";;54300704;1219090;2798;"parliamentary republic";"Rand";"ZAR";27;20.5;9.6;63.1;"https://www.laenderdaten.info/Afrika/Suedafrika/index.php" 210 | "Sudan";"Sudan";"As-Sudan";"SD";"Africa";;36729501;1861484;853;"Presidential republic";"Pfund";"SDG";249;28.5;7.5;64.1;"https://www.laenderdaten.info/Afrika/Sudan/index.php" 211 | "South Georgia and South Sandwich Islands";"Südgeorgien und die Südlichen Sandwichinseln";"South Georgia and the South Sandwich Islands";"GS";"Antarctica";;30;3903;0;"British overseas territory";"Pfund";"GBP";500;0;0;0;"https://www.laenderdaten.info/Antarktis/Suedgeorgien-Sandwichinseln/index.php" 212 | "South Korea";"Südkorea";"Taehan Min’guk (Namhan)";"KR";"Asia";;50924172;99720;2413;"Presidential republic";"Won";"KRW";82;8.4;5.8;82.4;"https://www.laenderdaten.info/Asien/Suedkorea/index.php" 213 | "South Sudan";"Südsudan";"Republic of South Sudan";"SS";"Africa";;12530717;644329;0;"Presidential republic";"Pfund";"SSP";211;36.2;8;0;"https://www.laenderdaten.info/Afrika/Suedsudan/index.php" 214 | "Suriname";"Suriname";"Suriname";"SR";"South America";;585824;163820;386;"Presidential republic";"Dollar";"SRD";597;16;6.1;72.2;"https://www.laenderdaten.info/Amerika/Suriname/index.php" 215 | "Svalbard";"Svalbard und Jan Mayen";"Svalbard og Jan Mayen";"SJ";"Europe";;1872;377;124;"territory of Norway";"Krone";"NOK";47;0;0;0;"https://www.laenderdaten.info/Europa/Svalbard-und-Jan-Mayen/index.php" 216 | "Swaziland";"Swasiland";"kaNgwane";"SZ";"Africa";;1451428;17364;0;"absolute monarchy";"Lilangeni";"SZL";268;24.3;13.4;51.6;"https://www.laenderdaten.info/Afrika/Swasiland/index.php" 217 | "Syria";"Syrien";"Suriya";"SY";"Asia";;17185170;185180;193;"Presidential republic";"Pfund";"SYP";963;21.7;4;74.9;"https://www.laenderdaten.info/Asien/Syrien/index.php" 218 | "Tajikistan";"Tadschikistan";"Toçikiston";"TJ";"Asia";;8330946;143100;0;"Presidential republic";"Somoni";"TJS";992;23.8;6.1;67.7;"https://www.laenderdaten.info/Asien/Tadschikistan/index.php" 219 | "Taiwan";"Taiwan";"T’ai-wan";"TW";"Asia";;23464787;35980;1566;"Semi-presidential republic";"Dollar";"TWD";886;8.4;7.3;80.1;"https://www.laenderdaten.info/Asien/Taiwan/index.php" 220 | "Tanzania";"Tansania";"Tanzania";"TZ";"Africa";;52482726;947300;1424;"Presidential republic";"Schilling";"TZS";255;36;7.8;62.2;"https://www.laenderdaten.info/Afrika/Tansania/index.php" 221 | "Thailand";"Thailand";"Prathet Thai";"TH";"Asia";;68200824;513120;3219;"Constitutional monarchy (interim military-government since May 2014)";"Baht";"THB";66;11.1;7.9;74.7;"https://www.laenderdaten.info/Asien/Thailand/index.php" 222 | "Togo";"Togo";"Togo";"TG";"Africa";;7756937;56785;56;"Presidential republic";"Franc";"XOF";228;33.7;7.1;65;"https://www.laenderdaten.info/Afrika/Togo/index.php" 223 | "Tokelau";"Tokelau";"Tokelau";"TK";"Oceania";;1337;12;101;"Parliamentary democracy (territory of New Zealand)";"Dollar";"NZD";690;0;0;0;"https://www.laenderdaten.info/Ozeanien/Tokelau/index.php" 224 | "Tonga";"Tonga";"Tonga";"TO";"Oceania";;106513;747;419;"constitutional monarchy";"Pa'anga";"TOP";676;22.6;4.9;76.2;"https://www.laenderdaten.info/Ozeanien/Tonga/index.php" 225 | "Trinidad and Tobago";"Trinidad und Tobago";"Trinidad and Tobago";"TT";"North America";;1220479;5128;362;"parliamentary republic";"Dollar";"TTD";296;13.1;8.7;72.9;"https://www.laenderdaten.info/Amerika/Trinidad-und-Tobago/index.php" 226 | "Chad";"Tschad";"Tchad/Tshad";"TD";"Africa";;11852462;1284000;0;"Presidential republic";"Franc";"XAF";235;36.1;14;50.2;"https://www.laenderdaten.info/Afrika/Tschad/index.php" 227 | "Czech Republic";"Tschechien";;"CZ";"Europe";;10644842;78867;0;"parliamentary republic";"Krone";"CZK";42;9.5;10.4;78.6;"https://www.laenderdaten.info/Europa/Tschechien/index.php" 228 | "Tunisia";"Tunesien";"Tunis/Tunisie";"TN";"Africa";;11134588;163610;1148;"parliamentary republic";"Dinar";"TND";216;16.4;6;76.1;"https://www.laenderdaten.info/Afrika/Tunesien/index.php" 229 | "Turkey";"Türkei";"Türkiye";"TR";"Asia";;80274604;783562;7200;"parliamentary republic";"Lira";"TRY";90;16;5.9;74.8;"https://www.laenderdaten.info/Asien/Tuerkei/index.php" 230 | "Turkmenistan";"Turkmenistan";"Türkmenostan";"TM";"Asia";;5291317;488100;0;"Presidential republic";"Manat";"TMT";993;19.3;6.1;70.1;"https://www.laenderdaten.info/Asien/Turkmenistan/index.php" 231 | "Turks and Caicos Islands";"Turks und Caicosinseln";"The Turks and Caicos Islands";"TC";"North America";;51430;948;389;"Parliamentary democracy (self-governing territory of the UK)";"Dollar";"USD";"1-649";15.7;3.2;79.8;"https://www.laenderdaten.info/Amerika/Turks-und-Caicosinseln/index.php" 232 | "Tuvalu";"Tuvalu";"Tuvalu";"TV";"Oceania";;10959;26;24;"Parliamentary democracy (under constitutional monarchy)";"Dollar";"AUD";688;23.8;8.6;66.5;"https://www.laenderdaten.info/Ozeanien/Tuvalu/index.php" 233 | "Uganda";"Uganda";"Uganda";"UG";"Africa";;38319241;241038;0;"Presidential republic";"Schilling";"UGX";256;43.4;10.4;55.4;"https://www.laenderdaten.info/Afrika/Uganda/index.php" 234 | "Ukraine";"Ukraine";"Ukrajina";"UA";"Europe";;44209733;603550;2782;"Semi-presidential republic";"Hrywnja";"UAH";380;10.5;14.4;71.8;"https://www.laenderdaten.info/Europa/Ukraine/index.php" 235 | "Hungary";"Ungarn";"Magyarország";"HU";"Europe";;9874784;93028;0;"parliamentary republic";"Forint";"HUF";36;9.1;12.8;75.9;"https://www.laenderdaten.info/Europa/Ungarn/index.php" 236 | "Uruguay";"Uruguay";"Uruguay";"UY";"South America";;3351016;176215;660;"Presidential republic";"Peso";"UYU";598;13;9.4;77.2;"https://www.laenderdaten.info/Amerika/Uruguay/index.php" 237 | "Uzbekistan";"Usbekistan";"Uzbekiston";"UZ";"Asia";;29473614;447400;0;"Presidential republic";"So'm";"UZS";998;16.9;5.3;73.8;"https://www.laenderdaten.info/Asien/Usbekistan/index.php" 238 | "Vanuatu";"Vanuatu";"Vanuatu";"VU";"Oceania";;277554;12189;2528;"parliamentary republic";"Vatu";"VUV";678;24.5;4.1;73.4;"https://www.laenderdaten.info/Ozeanien/Vanuatu/index.php" 239 | "Holy See (Vatican City)";"Vatikanstadt";"Santa Sede/Città del Vaticano";"VA";"Europe";;1000;0;0;"absolute monarchy";"Euro";"EUR";396;0;0;0;"https://www.laenderdaten.info/Europa/Vatikan/index.php" 240 | "Venezuela";"Venezuela";"Venezuela";"VE";"South America";;30912302;912050;2800;"Federal presidential republic";"Bolívar Fuerte";"VEF";58;19.2;5.2;75.8;"https://www.laenderdaten.info/Amerika/Venezuela/index.php" 241 | "United Arab Emirates";"Vereinigte Arabische Emirate";"Al-Imarat al-´Arabiya al-Muttahida";"AE";"Asia";;5927482;83600;1318;"Federation of autonomous monarchies";"Dirham";"AED";971;15.3;2;77.5;"https://www.laenderdaten.info/Asien/Arabische-Emirate/index.php" 242 | "United States";"Vereinigte Staaten von Amerika";"United States";"US";"North America";;323995528;9826675;19924;"Federal presidential republic";"Dollar";"USD";1;12.5;8.2;79.8;"https://www.laenderdaten.info/Amerika/USA/index.php" 243 | "United Kingdom";"Vereinigtes Königreich";"United Kingdom";"GB";"Europe";;64430428;243610;12429;"Parliamentary constitutional monarchy";"Pfund";"GBP";44;12.1;9.4;80.7;"https://www.laenderdaten.info/Europa/Vereinigtes-Koenigreich/index.php" 244 | "Vietnam";"Vietnam";"Viêt Nam";"VN";"Asia";;95261021;331210;3444;"Republic (communist one-party system)";"Dong";"VND";84;15.7;5.9;73.4;"https://www.laenderdaten.info/Asien/Vietnam/index.php" 245 | "Wallis and Futuna";"Wallis und Futuna";"Wallis-et-Futuna";"WF";"Oceania";;15664;142;129;"Parliamentary democracy (territory of France)";"Franc";"XPF";681;13.3;5.2;79.7;"https://www.laenderdaten.info/Ozeanien/Wallis-und-Futuna/index.php" 246 | "Christmas Island";"Weihnachtsinsel";"Christmas Island";"CX";"Australia";;2205;135;139;"(non-self-governing territory of Australia)";"Dollar";"AUD";6724;0;0;0;"https://www.laenderdaten.info/Australien/Weihnachtsinsel/index.php" 247 | "Western Sahara";"Westsahara";"As-Sahrawiya";"EH";"Africa";;587020;266000;1110;"republic";"Dirham";"MAD";;29.8;8.2;63;"https://www.laenderdaten.info/Afrika/Westsahara/index.php" 248 | "Central African Republic";"Zentralafrikanische Republik";"Centrafrique/Bê-Afrîka";"CF";"Africa";;5507257;622984;0;"Presidential republic";"Franc";"XAF";236;34.7;13.5;52.3;"https://www.laenderdaten.info/Afrika/Zentralafrikanische-Republik/index.php" 249 | "Cyprus";"Zypern";"Kýpros/Kibris";"CY";"Asia";;1205575;9251;648;"Presidential democracy";"Euro";"EUR";357;11.4;6.7;78.7;"https://www.laenderdaten.info/Asien/Zypern/index.php" 250 | --------------------------------------------------------------------------------