我正在编写一个程序,假设将音乐会音调中的音符改为非音乐会音调乐器上的音高。任何谁。我已经有了这个。
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中使事情成为评论
用户键入他们想要在钢琴上听到的字母。
snote=raw_input("What is the concert note that you want to play? ")
然后是什么工具。
instr=raw_input("What pitch is your instrument in? ")
然后程序打印乐器需要播放的音符以播放音乐会音高
所以想要在Bb音高(-2)乐器上演奏Bb是Ab。 C =(0)
if note=="BB":
newnote=Bb-A
print newnote
这部分我正在努力尝试将用户输入的字母写入一个数字,以便程序可以进行数学运算然后打印出转置的音符。如果有人知道如何将字母更改为预设号码,我将非常感激,因为我还需要为我想要做的其他程序执行此操作。但是,如果你能做到,那就谢谢你。
答案 0 :(得分:0)
你真的是以错误的方式解决这个问题。您应该创建一个字典,将用户输入转换为特定的数字。这是一个例子。我使用了用{。
替换#
的方法
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
答案 1 :(得分: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将像任何其他角色一样对待。