Сценарий Python, обеспечивающий ввод для других программ Python - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь автоматизировать некоторые процессы оценки для начинающего класса Python.Студенты предоставляют программу Python, которая предлагает пользователю 5 предметов и ежемесячную сумму за эти 5 предметов.Затем учащиеся отображают бюджет с указанием пунктов, месячной суммы и годовой суммы.Я хотел бы написать скрипт на python, который будет выполнять все 65 программ для студентов, и программа предоставит данные для этих 5 предметов и ежемесячную сумму.Я хотел бы, чтобы входные переменные были случайными из списка и случайного количества с плавающей точкой.Кажется ли это возможным сделать из программы или переменные и месячные суммы должны быть предоставлены из командной строки?Общая цель состоит в том, чтобы предоставить автоматические входные значения для 5 предметов и суммы, а затем выписки студента будут распечатаны на консоли, что ускорит предоставление оценки на основе результатов студента.

Прямо сейчас мой код запрашивает у учителя путь к каталогу, в котором хранятся задания ученика, и сохраняет каждый путь к файлу в списке.Теперь я пытаюсь выяснить, как выполнить каждый файл Python из списка, и когда программа каждого студента запрашивает ввод пользователя, мой скрипт автоматически предоставит ввод.Строки подсказки являются специфическими, что позволяет мне указывать элемент в зависимости от количества.НАПРИМЕР.«Пожалуйста, введите элемент 1:» (введите имя элемента), «Пожалуйста, введите сумму элемента:» (введите значение с плавающей запятой)

Это мой псевдокод:

import os

list_files = ["student1.py", "student2.py" ,....]

list_items = ["mortgage", "groceries", "insurance"]

list_amounts = [123.34, 1024.11, 32.3]

Теперь мне нужно выяснить, как выполнить каждый файл, и чтобы программа предоставляла входные данные из list_items и list_amounts.Я ищу совет о том, как лучше подойти к этому.Я бы предпочел, чтобы программа предоставляла входные данные из этих списков, а не указала тип учителя в значениях, как это делается в аргументах.

Например, python student1.py mortgage 123.34 groceries 32.3 insurance 1024.11.

Как я могу это сделать?Желательно не через argv []

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Я предполагаю, что проблема в вызове программы на python из python, а не в mortgage 123.34 groceries 32.3 insurance 1024.11 part.

Вот один из вариантов:

import subprocess
import shlex

for script in ["student1.py", "student2.py"]:
    command = 'python {} mortgage 123.34 groceries 32.3 insurance 1024.11'.format(script)
    proc = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = proc.communicate()
    print stdout
    print stderr

См. Еще много опций вhttps://stackoverflow.com/a/92395/6352677.

0 голосов
/ 12 февраля 2019

Я не знаю, если это то, что вы ищете, но я дам вам 2 предложения ...

1) с пользовательским вводом Это решение может быть добавленок вашему коду, и не имеет значения, что пользователь вводит в приглашение, переменная ввода будет присвоена случайному значению списка:

import random
mylist = [i for i in range(0,20)]

amount1 = input("amount1")
if amount1:
    amount1 = random.sample(mylist, 1)

print(amount1)

2) без ввода пользователя Просто удалите необходимость для пользователя вводить какое-то значение во время тестирования и назначить случайное значение из вашего списка напрямую, без необходимости ввода пользователем:

import random
mylist = [i for i in range(0,20)]

amount1 = random.sample(mylist, 1)

print(amount1)

3) JSON-файл? Как насчет того, если ваш учитель хранит данные о количестве и количестве в файле json и исполняемый скрипт обращается к нему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...