我正在做一个学校项目,我们必须制作一个剧本。 基本上,每当我在IDLE中,我按F5运行脚本一切正常,但当我双击python文件本身并进入命令行时,我只能输入一个东西(R或L)和然后窗口关闭。为什么是这样 ?我认为分配的一个要求是它需要在命令行中执行,所以这就是我要问的原因。 这是我的剧本(它还没有完成)
import os
import csv
import sys
def main():
menu()
def menu():
print ("******MAIN MENU******")
print()
veryFirstChoice = input("Would you like to register an account, or log in? Type R to register and L to log in ").upper()
if veryFirstChoice == "R":
register()
elif veryFirstChoice == "L":
login()
def login():
username = input("Please enter your username")
password = input("Please enter your password")
for line in open("accountfile.txt","r").readlines():
login_info = line.split()
if username == login_info[0] and password == login_info[1]:
print("Correct credentials!")
return quiz()
print("Incorrect credentials,please try again. ")
return login()
def register():
username = input("Please input the first 3 letters of your first name and your age ")
password = input("Please input your desired password ")
file = open("accountfile.txt","a")
file.write(username)
file.write(" ")
file.write(password)
file.write("\n")
file.close()
menu()
def quiz():
choice1 = input ("""Would you like to take the Chemistry Quiz,or the Computer Science quiz ? Type in CH for Chemistry or CS for Computer Science """).upper()
score = 0
if choice1 == "CH":
choice2 = input ("Would you like to do the easy, medium or hard questions ?").lower()
if choice2 == "easy":
load_profile = open("chemistryquiz.txt","r")
lines = load_profile.read().splitlines()
question1 = lines[4]
question2 = lines[5]
question3 = lines[6]
question4 = lines[7]
question5 = lines[8]
print (question1)
answer1 = input("Please enter your answer ").upper()
if answer1 != "A":
print ("You got the wrong answer, your score is", score)
else:
score1 = (score+1)
print ("Your score is", score1)
print (question2)
answer2 = input("Please enter your answer ").upper()
if answer2 != "A":
score1 = score1
print ("You got the wrong answer, your score is", score1)
else:
score2 = (score1+1)
print ("Your score is", score2)
print (question3)
answer3 = input("Please enter your answer ").upper()
score2 = score1
if answer3 != "A":
score3 = score2
print ("You got the wrong answer, your score is", score3)
else:
score3 = (score2+1)
print ("Your score is", score3)
print (question4)
answer4 = input("Please enter your answer ").upper()
if answer4 != "A":
score4 = score3
print ("Wrong answer, your score is ", score4)
else:
score4 = (score3+1)
print ("Your score is", score4)
print (question5)
answer5 = input("Please enter your answer ").upper()
if answer5 != "A":
score5 = score4
print ("You got the wrong answer, your score is ", score5)
else:
score5 = (score4+1)
print ("Well done, your score is ", score5)
if choice2 == "medium":
load_profile = open("chemistryquiz.txt","r")
lines = load_profile.read().splitlines()
question1 = lines[13]
question2 = lines[14]
print (question1)
answer1 = input("Please enter answer ").upper()
if answer1 != "A":
score1 = score
print ("Wrong answer ", score1)
else:
score1 = (score+1)
print ("Noice, score is ", score1)
main()
答案 0 :(得分:1)
我假设你在Windows上?
这是窗口控制台工作的方式;一旦其中运行的程序退出,它就会关闭。我猜你的程序以错误结束或者只是正常结束,在任何一种情况下,windows都会立即关闭控制台窗口(yay)。
避免这种情况的一种方法是在程序结束时添加input("press enter to exit.")
。如果程序崩溃,这没有任何帮助,在这种情况下,Vinny上面的评论是要走的路:手动打开命令窗口,然后通过键入python
然后通过路径来手动启动程序你的.py文件。如果您的程序出现错误,它将被打印出来,您将退回到cmd shell提示符。
答案 1 :(得分:0)
如果文件扩展名与python解释器关联,则可以通过双击运行它,问题是在脚本完成执行后立即关闭终端/ cmd窗口。要解决此问题,您有两个选择:
在input('Press enter to exit.')
执行后,最后在脚本中添加一个阻止语句,例如main()
。这样,在按下某个键后,脚本不会立即终止。
从脚本执行后将保留的终端/ cmd实例运行您的脚本