我正在尝试使初学者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 []
答案 0 :(得分:2)
我认为问题是从python调用python程序,而不是mortgage 123.34 groceries 32.3 insurance 1024.11
部分。
这里是一种选择:
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
答案 1 :(得分:0)
我不知道这是否是您要寻找的东西,但我会为您提供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文件中,并且执行的脚本可以访问它,该怎么办?