如何进行打印将其从列表中取出并存储到其他位置

时间:2019-06-11 00:41:51

标签: python python-3.x

我正在进行音乐键理论测试。

为了获得我现在不会在这里解释的其他内容(如果稍后无法解决,也许稍后再说),我需要将根和弦从列表中移出,并将其存储在其他位置,然后当询问他们和弦来自什么琴键时,请回叫它以供用户输入。

我不知道该怎么做,但是我很确定这是可能的。如果有人可以帮助我,我会喜欢的。解决了这个问题后,我会走得更远。

之前,我试图以某种方式让实际变量代表变量,同时代表变量包含的内容。因此,在从变量打印随机和弦之后,用户可以输入和弦来自的琴键,我将其作为变量。但我认为这行不通。

import random

print('Key Theory Werkout')

Dmajor = {'D','E-','F⌗-','G','A','B-','C⌗dim'}
Gmajor = {'G','A-','B-','C','D','E-','F⌗dim'}
Cmajor = {'C','D-','E-','F','G','A-','Bdim'}
Fmajor = {'F','G-','A-','Bb','C','D-','Edim'}
Bbmajor = {'Bb','C-','D-','Eb','F','G-','Adim'}
Ebmajor = {'Eb','F-','G-','Ab','Bb','C-','Ddim'}
Abmajor = {'Ab','Bb-','C-','Db','Eb','F-','Gdim'}
Dbmajor = {'Db','Eb-','F-','Gb','Ab','Bb-','Cdim'}
Cxmajor = {'C⌗','D⌗-','E⌗-','F⌗','G⌗','A⌗-','B⌗dim'}
Gbmajor = {'Gb','Ab-','Bb-','Cb','Db','Eb-','Fdim'}
Fxmajor = {'F⌗','G⌗-','A⌗-','B','C⌗','D⌗-','E⌗dim'}
Bmajor = {'B','C⌗-','D⌗','E','F⌗','G⌗','A⌗dim'}
Cbmajor = {'Cb','Db-','Eb-','Fb','Gb','Ab-','B-dim'}
Emajor = {'E','F⌗-','G⌗-','A','B','C⌗-','D⌗dim'}
Amajor = {'A','B-','C⌗-','D','E','F⌗-','G⌗dim'}

questions = [Dmajor, Gmajor, Cmajor, Fmajor, Bbmajor, Ebmajor, 
Abmajor, Dbmajor, Cxmajor, Gbmajor, Fxmajor, Bmajor, Cbmajor, 
Emajor, Amajor]

print('Difficulty:Easy, Hard')

begin = input("Choose Difficulty:")
if begin == 'easy':
    while begin == "easy":
        q = random.choice(questions)
        qq = random.sample(list(q), 7)
        print(qq)
        answer = input('Please Provide the key:')
        if answer == q
'''HERE IS THE PROBLEM. Lets say the code outputs F, A-, Bb, C, D- 
for Dmajor. How can I have the user type in Dmajor and have it 
print correct, or incorrect? I am thinking I will have to put . 
entire blocks for each question, and then have the easy choose 
random out of all of those questions and that will be how I have to     
do it. But maybe there is an easier way.
'''
            print("correct")

我想告诉用户它们是对还是错,同时保持问题的随机性和和弦性,它会完全按照原样显示出来。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

也许您可以尝试使用字典来表示您的问题,例如:

  fromEvent(this.scrollable.nativeElement, 'scroll').pipe(
      pluck('target','scrollTop'),
      pairwise(),
      tap(([prev, curr]) => console.log(prev,curr)),
      filter(([prev, curr]) => prev!== curr),
      tap((e) => console.log(e)) // <=    Never reached
    ).subscribe();

然后,您选择一个随机问题,如下所示:

questions = {
  'Dmajor': {'D','E-','F⌗-','G','A','B-','C⌗dim'},
  'Gmajor': {'G','A-','B-','C','D','E-','F⌗dim'},
  'Cmajor': {'C','D-','E-','F','G','A-','Bdim'},
  'Fmajor': {'F','G-','A-','Bb','C','D-','Edim'},
  'Bbmajor': {'Bb','C-','D-','Eb','F','G-','Adim'},
  'Ebmajor': {'Eb','F-','G-','Ab','Bb','C-','Ddim'},
  'Abmajor': {'Ab','Bb-','C-','Db','Eb','F-','Gdim'},
  'Dbmajor': {'Db','Eb-','F-','Gb','Ab','Bb-','Cdim'},
  'Cxmajor': {'C⌗','D⌗-','E⌗-','F⌗','G⌗','A⌗-','B⌗dim'},
  'Gbmajor': {'Gb','Ab-','Bb-','Cb','Db','Eb-','Fdim'},
  'Fxmajor': {'F⌗','G⌗-','A⌗-','B','C⌗','D⌗-','E⌗dim'},
  'Bmajor': {'B','C⌗-','D⌗','E','F⌗','G⌗','A⌗dim'},
  'Cbmajor': {'Cb','Db-','Eb-','Fb','Gb','Ab-','B-dim'},
  'Emajor': {'E','F⌗-','G⌗-','A','B','C⌗-','D⌗dim'},
  'Amajor': {'A','B-','C⌗-','D','E','F⌗-','G⌗dim'},
}

现在,您只需要检查key = random.choice(list(questions)) set = questions[key] sample = random.sample(set, 7) 是否等于answer