我目前正在为我的GCSE课程编写一个代码,而且我仍然坚持使用我的for循环,它也包含一个if-else语句。 我已经在程序中做了类似于此的代码,它的工作完全正常,但由于某种原因,这部分没有,我想知道是否有人可以帮助我。
我要做的是制作一个测验类型程序,我需要帮助的部分是选择用户想要做的主题。 用户必须键入他们的首选主题,但如果他们输入错误的主题,或键入无效的内容,则程序应允许用户再次输入。 到目前为止,如果您第一次正确输入主题,程序将进入下一阶段。 但是,如果您第一次输入错误,它会要求用户再试一次。但如果您第二次输入正确,它将再次要求用户再试一次。而不是让程序让用户再次输入主题,即使它在正确输入的时候应该是有效的,我希望程序进入下一阶段。
可用科目:
subjects = []
algebra = ("algebra")
computing = ("computing")
subjects.append(algebra)
subjects.append(computing)
我需要帮助的部分:
with open("student_file.csv", "a+") as studentfile:
studentfileReader = csv.reader(studentfile, delimiter = ',')
studentfileWriter = csv.writer(studentfile, delimiter = ',')
print("Available subjects:\n-Algebra\n-Computing\n")
ChosenSubject = input("What subject would you like to do? ")
ChosenSubject.lower()
for i in range(2):
if ChosenSubject in subjects:
print("\n")
break
else:
print("\nPlease try again.")
ChosenSubject == input("What subject would you like to do?")
ChosenSubject.lower()
if ChosenSubject in subjects:
print("working")
else:
print("You keep typing in something incorrect.\nPlease restart the program.")
答案 0 :(得分:1)
在else块中,您可能希望将'=='替换为'='。
你也想给用户两次尝试或继续询问他们,直到他们正确回答? (后者是我从你的问题中推断的,因为我建议继续使用)
答案 1 :(得分:0)
这不是最佳解决方案,但是因为您的学习,我会尽量保持与您的解决方案一样接近。您的问题是,调用ChosenSubject.lower()
不会更改ChosenSubject
中的实际值。
这是一个有效的例子:
print("Available subjects:\n-Algebra\n-Computing\n")
ChosenSubject = input("What subject would you like to do? ")
subjects = ["algebra", "computing"]
for i in range(2):
if ChosenSubject.lower() in subjects:
print("\n")
break
else:
print("\nPlease try again.")
ChosenSubject = input("What subject would you like to do?") #not '=='
if ChosenSubject.lower() in subjects:
print("working")
else:
print("You keep typing in something incorrect.\nPlease restart the program.")
来自doc:
此方法返回所有基于案例的字符串的副本 字符已经小写了。
答案 2 :(得分:0)
for
循环只是遍历一组对象。考虑一个列表my_list = ['a', 'b', 'c']
。在使用my_list
循环的for
上的每次迭代中,它按顺序提取其中一个元素而不重复。 range(2)
相当于[0, 1]
。
试试这个:
print("Available subjects:\n-Algebra\n-Computing\n")
for i in range(2):
# `i` is 0 on first iteration and 1 on second. We are not using `i` anywhere since all we want is to loop :)
chosen_subject = input("What subject would you like to do? ")
if chosen_subject.lower() in subjects:
print("\n")
break
if chosen_subject.lower() in subjects:
print("working")
else:
print("You keep typing in something incorrect.\nPlease restart the program.")