Python 如何将字母或2更改为预设的数字?

Python 如何将字母或2更改为预设的数字?,python,Python,我正在编写一个程序,该程序假定将音乐会上的音符音高更改为非音乐会音高乐器上的音高。任何人。我已经有这个了 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”,因为python中的“make things”是一个注释 用户输入一个他们想在钢琴上听到的字母 snote=raw_input("What i

我正在编写一个程序,该程序假定将音乐会上的音符音高更改为非音乐会音高乐器上的音高。任何人。我已经有这个了

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”,因为python中的“make things”是一个注释

用户输入一个他们想在钢琴上听到的字母

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)


我正在努力解决的这一部分是尝试将用户输入的字母转换成一个数字,这样程序就可以进行计算,然后打印出转置的注释。如果有人知道如何将字母更改为预设数字,我将非常感激,因为我还需要为我正在尝试的另一个程序执行此操作。但是如果你不能,谢谢你的尝试。

你真的走错了路。您应该制作一个字典,将用户输入转换为特定的数字。这里有一个例子。我使用了您的方法将
#
替换为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
你可以使用


当python将#视为单独的标记时,它也被视为注释。如果#位于例如python的
“E#”内
将与其他字符一样处理。

请注意,
input
仅在Python3中有效;对于Python2.7(OP正在使用的)来说,
raw_input
仍然是一条路要走。没错,没有注意到OP没有在3上。因为键是字符串,他们不需要用
s
替换
,他们只需要使用
{…,“E#“:5,…}
您还需要将用户键入的任何
#
替换为
s
@Racialz OP指定的位置在哪里?如果您想听到E,键入Es是没有意义的。Op说
,用户在钢琴上键入一个他们想听到的字母。
他没有说
,Op键入一个特殊的转换字符串,这个字符串实际上并不是他想听到的。
当你想要E时,用Es映射字典也没有意义;在Python中使用try-except不是一种正确的方法。在这种情况下,您可以询问值是否在该字典中。
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
notes = {"F" : 5, "E#" : 5, "Fb" : 4, "E" : 4}
value = raw_input()
print(notes[value]) if value in notes else print("Invalid input")