From 1a3ef8482ead2e3a2ef4e4c4853408b71a48eab4 Mon Sep 17 00:00:00 2001 From: Phlake Date: Sun, 28 Nov 2021 23:39:09 +0200 Subject: [PATCH 1/3] Added files. --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 84b53db..529f7a5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,17 @@ -# Algorithms +# Lab-3 Discount program +Task code: DISCNT + +The fashion store has started a seasonal sale, and offers customers a discount +for every 3rd purchased product. You have chosen the goods you want to buy and want +take advantage of this offer to save money as much as possible. +Of course, the amount you have to pay depends on how much +order you will buy the goods. Knowing the price of each product, as well as the percentage +discounts, calculate the most advantageous amount for which you can buy all the goods. +Input data +The input file discnt .in consists of two lines. +• The first line contains a list of integers from 0 to 1,000,000,000 inclusive, separated by a space - the prices of individual products you want to buy. The total number of goods is from 1 to 10,000. +• The second line contains a discount - an integer from 0 to 100 inclusive, which means the percentage of the discount for every third product. + +Imprint +The source discnt .out file must contain one number - the minimum amount that must be spent to purchase all products. The number must always have two fractional signs, and be rounded to the second decimal place. From 07cdc4f74eb84deaba491b9d5d6714d661039ec3 Mon Sep 17 00:00:00 2001 From: Phlake Date: Thu, 2 Dec 2021 04:51:06 +0200 Subject: [PATCH 2/3] Added lab_3 files --- discount.in | 2 ++ discount.out | 1 + main.py | 41 +++++++++++++++++++++++++++++++++++++++++ test.py | 20 ++++++++++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 discount.in create mode 100644 discount.out create mode 100644 main.py create mode 100644 test.py diff --git a/discount.in b/discount.in new file mode 100644 index 0000000..12c6f56 --- /dev/null +++ b/discount.in @@ -0,0 +1,2 @@ +1 2 3 4 5 6 7 +100 \ No newline at end of file diff --git a/discount.out b/discount.out new file mode 100644 index 0000000..3d3be3c --- /dev/null +++ b/discount.out @@ -0,0 +1 @@ +15.0 \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..d418aac --- /dev/null +++ b/main.py @@ -0,0 +1,41 @@ +def count_discount(): + input_prices = open_file("discount.in") + discount_pers = (input_prices.pop(-1) / 100) + sorted_prices_list = sort_prices(input_prices, discount_pers) + final_sum = sum(sorted_prices_list) + return round(final_sum, 2) + + +def sort_prices(prices: list, discount): + prices.sort() + for i in range(len(prices) // 3): + max_price = prices.pop(-1) + max_price = max_price - (max_price * discount) + prices.insert((i * 3 + 2), round(max_price, 2)) + return prices + + +def insert_in(prices, discount_num): + file = open("discount.in", 'w') + for elem in prices: + file.write(str(elem) + " ") + file.write("\n" + str(discount_num)) + + +def insert_out(result): + file = open("discount.out", 'w') + file.write(str(result)) + + +def open_file(url): + price_data = [] + with open(url) as file: + for line in file: + price_data.extend([float(item) for item in line.split()]) + return price_data + + +if __name__ == '__main__': + insert_in([1, 2, 3, 4, 5, 6, 7], 100) + print(count_discount()) + insert_out(count_discount()) diff --git a/test.py b/test.py new file mode 100644 index 0000000..1d47129 --- /dev/null +++ b/test.py @@ -0,0 +1,20 @@ +import unittest +from main import insert_in, count_discount + + +class TestDiscount(unittest.TestCase): + def test_1(self): + insert_in([1, 2, 3, 4, 5, 6, 7], 100) + self.assertEqual(count_discount(), 15.00) + + def test_2(self): + insert_in([65, 45, 34, 45, 53, 61, 37.5, 87.6], 45) + self.assertEqual(count_discount(), 359.43) + + def test_3(self): + insert_in([1, 1, 1], 33) + self.assertEqual(count_discount(), 2.67) + + +if __name__ == '__main__': + unittest.main() From 88cc93a5531ce4108456ed94b6f12b634c90163b Mon Sep 17 00:00:00 2001 From: Phlake Date: Fri, 3 Jun 2022 19:10:27 +0300 Subject: [PATCH 3/3] minor changes --- .gitignore | 522 +++++++++++++++++++++++++++++++++++++++++++---------- main.py | 11 +- 2 files changed, 433 insertions(+), 100 deletions(-) diff --git a/.gitignore b/.gitignore index 510c73d..b02d695 100644 --- a/.gitignore +++ b/.gitignore @@ -1,114 +1,446 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates -# C extensions -*.so +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs -# Distribution / packaging -.Python +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - -# Django stuff: +bld/ +[Bb]in/ +[Oo]bj/ +out/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj *.log -local_settings.py -db.sqlite3 +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html -# Flask stuff: -instance/ -.webassets-cache +# Click-Once directory +# publish/ -# Scrapy stuff: -.scrapy +# Publish Web Output +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj -# Sphinx documentation -docs/_build/ +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config -# PyBuilder -target/ +# Windows Azure Build Output +csx/ +*.build.csdef -# Jupyter Notebook -.ipynb_checkpoints +# Windows Store app package directory +AppPackages/ -# IPython -profile_default/ -ipython_config.py +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ -# pyenv -.python-version +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs -# celery beat schedule file -celerybeat-schedule +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ -# SageMath parsed files -*.sage.py +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ +# RIA/Silverlight projects +Generated_Code/ -# Spyder project settings -.spyderproject -.spyproject +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm -# Rope project settings -.ropeproject +# SQL Server files +*.mdf +*.ldf +*.ndf -# mkdocs documentation -/site +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Typescript v1 declaration files +typings/ +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +/build +/Build +/deploy +/package +bin/ +obj/ +sql/ +*/obj/debug +**/Debug +#ignore thumbnails created by windows +Thumbs.db +#Ignore files build by Visual Studio +*.obj +*.pdb +*.user +*.aps +*.pch +*.docstates +*.vspscc +*_i.c +*_p.c +*.ncb +*.suo +*.tlb +*.dbmdl +*.schemaview +*.tlh +*.cache +*.ilk +*.log +[Bb]in +[Dd]ebug*/ +*.lib +*.sbr +obj/ +[Rr]elease*/ +_ReSharper*/ +[Tt]est[Rr]esult* +*.docstates +*.swp +*.*~ +*.gpState +*.ReSharper* +*.preflight +*.nocommit +#Ignore Recovery Files made by Excel +~$*.xlsx +*.rdl.data + +*.jfm + +#====================================================================================== +# The below section could possibly be removed as these should be ignored by the above. +#====================================================================================== + +samples/in-memory/ticket-reservations/DemoWorkload/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.nupkg +samples/in-memory/ticket-reservations/packages/CircularGauge.1.0.0/CreatePackageFile.bat +*.suo +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.exe +*.pdb +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.vshost.exe +*.Cache +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.exe.config +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.exe +samples/features/in-memory/iot-smart-grid/ConsoleClient/bin/Release/DataGenerator.dll +samples/features/in-memory/iot-smart-grid/ConsoleClient/bin/Release/Reports/PowerDashboard.pbix +samples/databases/wide-world-importers/wwi-integration-etl/Daily ETL/bin/Development/Daily ETL.ispac +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/PopulateAlwaysEncryptedData.csproj.FileListAbsolute.txt +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Release/PopulateAlwaysEncryptedData.vshost.exe.config +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.dll +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Release/DemoWorkload.FrmConfig.resources +samples/features/in-memory/ticket-reservations/DemoWorkload/bin/Release/DemoWorkload.vshost.exe.config +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/PopulateAlwaysEncryptedData.csproj.FileListAbsolute.txt +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.vshost.exe.config +*.zip +samples/features/in-memory/ticket-reservations/packages/CircularGauge.1.0.0/CreatePackageFile.bat +samples/features/in-memory/ticket-reservations/TicketReservations/TicketReservations.dbmdl +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Debug/MultithreadedInMemoryTableInsert.csproj.FileListAbsolute.txt +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/PopulateAlwaysEncryptedData.Properties.Resources.resources +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/PopulateAlwaysEncryptedData.PopulateAlwaysEncryptedDataMain.resources +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.vshost.exe.manifest +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/PopulateAlwaysEncryptedData.PopulateAlwaysEncryptedDataMain.resources +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Release/MultithreadedInMemoryTableInsert.Properties.Resources.resources +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/PopulateAlwaysEncryptedData.Properties.Resources.resources +samples/features/in-memory/ticket-reservations/packages/CircularGauge.1.0.0/ReadMe.txt +*.dacpac +samples/features/in-memory/ticket-reservations/TicketReservations/obj/Release/Model.xml +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.dat + +*.user +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs +samples/features/in-memory/ticket-reservations/DemoWorkload/bin/Debug/DemoWorkload.vshost.exe.config +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Release/DemoWorkload.Properties.Resources.resources +samples/databases/wide-world-importers/wwi-integration-etl/Daily ETL/obj/Development/Project.params +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Debug/DemoWorkload.csproj.FileListAbsolute.txt +samples/features/in-memory/iot-smart-grid/Db/obj/Release/Model.xml +samples/applications/iot-smart-grid/DataGenerator/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/bin/Debug/MultithreadedOrderInsert.exe.config +samples/features/in-memory/iot-smart-grid/ConsoleClient/bin/Release/ConsoleClient.exe.config +*.jfm +samples/features/in-memory/ticket-reservations/TicketReservations/bin/Release/TicketReservations.publish.sql +samples/applications/iot-smart-grid/ConsoleClient/bin/Release/ConsoleClient.exe.config +samples/applications/iot-smart-grid/Db/Db.dbmdl +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/wwi-dw-ssdt/wwi-dw-ssdt/obj/Debug/Model.xml +samples/databases/wide-world-importers/wwi-dw-ssdt/wwi-dw-ssdt/WideWorldImportersDW.dbmdl +samples/features/in-memory/iot-smart-grid/WinFormsClient/bin/Release/Reports/PowerDashboard.pbix +samples/databases/wide-world-importers/wwi-ssdt/wwi-ssdt/WideWorldImporters.dbmdl +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs +samples/databases/wide-world-importers/wwi-ssasmd/wwi-ssasmd/bin/WWI-SSASMD.asdatabase +samples/applications/iot-smart-grid/Db/obj/Release/Db.sqlproj.FileListAbsolute.txt +*.manifest +samples/applications/iot-smart-grid/WinFormsClient/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/wwi-ssasmd/wwi-ssasmd/obj/Development/IncrementalShapshot.xml +samples/applications/iot-smart-grid/ConsoleClient/bin/Release/Reports/PowerDashboard.pbix +samples/applications/iot-smart-grid/Db/obj/Release/Model.xml +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Release/MultithreadedOrderInsert.csproj.FileListAbsolute.txt +samples/applications/iot-smart-grid/ConsoleClient/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +samples/applications/iot-smart-grid/WinFormsClient/bin/Release/Client.exe.config +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/bin/Release/MultithreadedOrderInsert.exe.config +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Debug/MultithreadedInMemoryTableInsert.MultithreadedOrderInsertMain.resources +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyEvaluationErrors.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyEvaluationErrorDetails.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyEvaluationDetails.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDetails.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDashboard.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/bin/Debug +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDashboard - Backup.rdl +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDashboardFiltered.rdl.data +samples/features/sql-management-objects/src/out/CodeCoverage/CodeCoverage.config -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json +# Certificates +*.pem +*.p12 -# Pyre type checker -.pyre/ +# Composer +/vendor/ \ No newline at end of file diff --git a/main.py b/main.py index d418aac..2a3346a 100644 --- a/main.py +++ b/main.py @@ -1,17 +1,16 @@ def count_discount(): input_prices = open_file("discount.in") discount_pers = (input_prices.pop(-1) / 100) - sorted_prices_list = sort_prices(input_prices, discount_pers) - final_sum = sum(sorted_prices_list) + final_sum = sum(sort_prices(input_prices, discount_pers)) return round(final_sum, 2) def sort_prices(prices: list, discount): prices.sort() for i in range(len(prices) // 3): - max_price = prices.pop(-1) - max_price = max_price - (max_price * discount) - prices.insert((i * 3 + 2), round(max_price, 2)) + price = prices.pop(-1) + price -= (price * discount) + prices.insert((i * 3 + 2), round(price, 2)) return prices @@ -20,11 +19,13 @@ def insert_in(prices, discount_num): for elem in prices: file.write(str(elem) + " ") file.write("\n" + str(discount_num)) + file.close() def insert_out(result): file = open("discount.out", 'w') file.write(str(result)) + file.close() def open_file(url):