2016-04-27 17 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 

我在事业计划名为#所有#字母S IN蟒蛇使事情评论

而且用户键入一个字母,他们希望听到的钢琴。

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

那么什么仪器中投。

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

然后程序打印仪器需要玩就玩的音乐会音高

所以想音乐会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中以这种方式工作;对于Python 2.7(OP正在使用)'raw_input'仍然是一条路。 –

+0

这是真的,没有注意到op不在3. – Keatinge

+3

由于关键字是一个字符串,他们不需要用's'替换'#',他们可以使用'{..., “E#”:5,..}' – rj93

0

您可以使用dictionary

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

当Python把它看作一个单独的令牌同样#被视为注释。如果#例如在"E#"以内。 python会像其他任何角色一样对待。

+0

您还需要用's'替换用户输入的任何'#' – Keatinge

+0

@Racialz OP指定的地方在哪里? – bashrc

+0

如果你想听E#,输入Es就没有意义。 Op说:“用户在钢琴上键入一个他们想要听到的字母。”他没有说“并且op键入了一个特殊的转换后的字符串,这实际上并不是他想听到的。” – Keatinge

相关问题