我正在制作一个时间表/除法游戏,我为每个时间表和除法(最多12个)创建了词典,该词典由问题作为键,而答案作为值。那是24本字典!当然,有比我做的更好的方法,也许是创建一个for循环。
我设法使用以下循环代码制作了每个表/除法字典(24次; 12个用于多个表,12个用于除法等效项)我提供了一个多字典的示例以及一个除法
eleven_division = {}
for i in range (0,13):
division_factor = 11
answer = i * division_factor
eleven_division ['{} / {} ='.format(answer,division_factor)] = i
six_times = {}
for i in range (0,13):
multiple = 6
answer = i * multiple
six_times ['{} x {} ='.format(i,multiple)] = answer
我想使用嵌套的for循环创建所有字典,但是用以下方式命名每个字典:two_times,three_times,four_times。但是,我可以找出一种方法。
我知道我可以这样做以打印出所有除法表。
for x in range (1,13):
division_factor = x
for i in range (0,13):
answer = i * division_factor
print ('%s / %s = %s' %(answer, x, i))
我现在每次循环时都需要创建一个新字典,所以我认为以下方法可以做到,但是没有!
dicts =['one division', 'two division','three division','four division', 'five division', 'six division', 'seven division', 'eight division', 'nine division', 'ten division', 'eleven division', 'twelve division']
for f in dicts:
f = {}
for x in range (1,13):
division_factor = x
for i in range (0,13):
answer = i * division_factor
f ['{} x {} ='.format(answer,x)] = i
print (one division) #THIS IS THE BIT I WANT WORKING!
我希望我已经为您弄清楚了我的问题。
TIA!
答案 0 :(得分:2)
如果我了解您的问题,那么您有12个单独的部门命令,并且您不知道如何使用这些可怕的代码来对它们进行任何操作:
#slider {
width: 100%;
margin: auto;
overflow: hidden;
background: #CCC;
}
.slide {
width: 100%:
height: 350px;
float: left;
text-align: center;
border: 1PX SOLID #000;
line-height: 8em;
font-size: 40px;
}
答案是,您不希望将这些字典放在12个单独的变量中,而是希望它们在字典中,因此您可以像这样查找它们:
if i==1: table = one_division
elif i==2: table = two_division
# … 10 more lines of code
do_something_with(table)
一行而不是13行,也更容易理解。
您可以循环生成此字典:
do_something_with(division_tables[i])
现在您可以编写这样的游戏:
division_tables = {}
for division_factor in range(1, 13):
table = {}
for i in range (0,13):
answer = i * division_factor
table['{} / {} ='.format(answer,division_factor)] = i
division_tables[division_factor] = table
如果您希望这些字典按有用的顺序排列,则可以通过选择前三个表之一来选择一个简单的问题,那么您可能希望使用列表而不是字典:
factor = random.choide(division_tables)
table = division_tables[factor]
question = random.choice(table)
answer = table[question]
guess = int(input(question))
if guess == answer:
print('You are correct, sir!')
else:
print('Hahahaha, a 20-line Python script has outsmarted you’')
现在您可以这样做:
division_tables = []
for division_factor in range(1, 13):
table = {}
for i in range (0,13):
answer = i * division_factor
table['{} / {} ='.format(answer,division_factor)] = i
division_tables.append(table)