2016-04-27 10 views
-1

私は、コンサートピッチでノートをコンサート以外のピッチの楽器のピッチに変更するプログラムを書いています。誰か。私はこれを既に持っている。レターまたは2をプリセット番号に変更するにはどうすればよいですか?

F=5 
E#=5 
Fb=4 
E=4 
Eb=3 
Ds=3 
D=2 
Db=1 
Cs=1 
C=0 
B#=0 
Cb=-1 
B=-1 
Bb=-2 
A#=-2 
A=-3 
Ab=-4 
G#=-4 
G=-5 
Gb=-6 
F#=-6 

私はPythonでプログラム原因#ですべての#文字Sという名前は、物事コメント

とユーザーの種類、彼らはピアノに聞きたいことを手紙になります。

snote=raw_input("What is the concert note that you want to play? ") 

その後機器がで投げているもの。

instr=raw_input("What pitch is your instrument in? ") 

その後、プログラムは楽器がそうAでコンサートBbをしたいコンサート・ピッチ

を再生するためにプレーする必要があることをメモして印刷しますBbピッチ(-2)はAbです。 C =(0)

if note=="BB": 
    newnote=Bb-A 
print newnote 

私はプログラムが数学を行うことができますので、数にユーザタイプが、その後転置ノートをプリントアウトすることを手紙を取るしようとしているに苦しんだこの部分。手紙をプリセット番号に変更する方法を知っている人は、私がやろうとしている別のプログラムのためにこれを行う必要があるため、私はそれを高く評価します。しかし、できない場合は試していただきありがとうございます。

答えて

0

あなたは本当に間違った方向に向かっています。ユーザー入力を特定の番号に変換するための辞書を作成する必要があります。ここに例があります。 #をsに置き換える方法を使用しました。

notesDict = {"F" : 5, "Es" : 5, "Fb" : 4, "E" : 4} 
key = input("What key do you want to hear ").replace("#","s") 
print(notesDict[key]) 

# What key do you want to hear: E# 
# 5 
+0

'input'は実際にはPython 3でこのように動作することに注意してください。 (OPが使用している)Python 2.7の場合、 'raw_input'はまだまだ道のりです。 –

+0

これは本当ですが、opが3になっていないことに気づかなかったのです。 – Keatinge

+3

キーは文字列なので、 '#'を 's'に置き換える必要はなく、' {...、 "E#":5、..} ' – rj93

0

あなたはまた、#は、Pythonは別々のトークンとしてそれを見たときにコメントとして扱われdictionary

notes = {"F" : 5, "E#" : 5, "Fb" : 4, "E" : 4} 
value = raw_input() 
print(notes[value]) if value in notes else print("Invalid input") 

を使用することができます。 #が例えば"E#"の場合Pythonは他の文字と同じように扱われます。

+0

また、ユーザーのタイプを' s'で置き換える必要があります。 – Keatinge

+0

@Racialz OPで指定されているのはどこですか? – bashrc

+0

E#を聞きたい場合は、Esと入力するだけでは意味がありません。 Opは「そして、ユーザーはピアノで聴きたいと思っている文字を入力する」と言っているが、実際に彼が聞きたいと思っていない特別な変換された文字列をopタイプには入力しない。 – Keatinge

関連する問題