【发布时间】:2015-11-27 04:59:06
【问题描述】:
所以我正在编写一些代码作为一个有趣的项目,它将随机生成一个主题供我每天学习。但是一旦一个主题出现了一次,我不希望它出现在本周剩下的时间里。为此,我使用了一个列表。基本上,当它选择主题时,它会将其添加到列表中,并且下次它检查它是否已经在列表中,如果是,我希望它返回到随机数生成器。我该怎么做呢?这是我的代码。
import random
import time
import datetime
#Subject veto list
x=[]
# Messages to instil, um, enthusiasm.
if datetime.date.today().strftime("%A") == "Monday":
response = input("Here we go again. Are you ready? ")
elif datetime.date.today().strftime("%A") == "Tuesday" or "Wednesday" or "Thursday":
response = input("Are you ready? ")
elif datetime.date.today().strftime("%A") == "Friday":
response = input("Half day! Are you ready? ")
elif datetime.date.today().strftime("%A") == "Saturday" or "Sunday":
response = input("It's the weekend! Are you ready? ")
# Random picking of subject to study. Also adds sbject to veto list for rest of week.
if response == "Yes":
subject = random.randint(1, 7)
print("Today you are studying...")
time.sleep(3)
if subject == (1):
"Englsh" in x
print("English")
x.extend([English])
elif subject == (2):
"Irish" in x
print("Irish")
x.extend([Irish])
elif subject == (3):
"Maths" in x
print("Maths")
x.extend([Maths])
elif subject == (4):
"French" in x
print("French")
x.extend([French])
elif subject == (5):
"Physics" in x
print("Physics")
x.extend([Physics])
elif subject == (6):
"Chemistry" in x
print("Chemistry")
x.extend([Chemistry])
elif subject == (7):
"History" in x
print("History")
x.extend([History])
【问题讨论】:
-
问题是否决列表不会持续存在。这意味着每次运行程序时,列表都是空的,因此所有选项都将始终可用。如果您想在一段时间内阻止相同的选项,则需要通过将有关您最近选择的选项的信息存储到数据库或文件中来持久保存它。
-
如果我让程序持续运行会怎样?
-
只要您的计算机没有重新启动等,它就可以工作。确实,尽管您希望保留这些信息。
-
正如@polpak 所说,您需要将该列表存储到某种文件或某个“数据库”中。所以程序从那里读取。而不是比较哪个主题已经被随机挑选。读取和写入您可以在此处找到的文件:stackoverflow.com/questions/6159900/…
-
为什么你有,例如,
"History" in x?您正在浪费周期进行比较而不是存储结果。此外,"something" == "x" or "y"并没有按照您的想法行事。