接收字母的Python函数,返回字母表中的数字位置(基于0)

接收字母的Python函数,返回字母表中的数字位置(基于0),python,function,python-3.x,numerical,alphabet,Python,Function,Python 3.x,Numerical,Alphabet,我正在尝试创建一个Python函数,该函数接收一个字母,一个只有一个字母字符的字符串,并返回该字母在字母表中基于0的数字位置。它不应该区分大小写,我不能使用导入 因此,输入a应该返回 0 14 输入A也应返回 0 输入O应该返回 0 14 等等 我注意到了,但是上面的答案使用import,第二个答案对我来说没有任何意义/不起作用。我试着这样应用第二个答案: letter = input("enter a letter") def alphabet_position(letter):

我正在尝试创建一个Python函数,该函数接收一个字母,一个只有一个字母字符的字符串,并返回该字母在字母表中基于0的数字位置。它不应该区分大小写,我不能使用导入

因此,输入a应该返回

0
14
输入A也应返回

0
输入O应该返回

0
14
等等

我注意到了,但是上面的答案使用import,第二个答案对我来说没有任何意义/不起作用。我试着这样应用第二个答案:

letter = input("enter a letter")

def alphabet_position(letter):

    return ord(letter) - 97

print((alphabet_position)(letter))
但我有一个打字错误:

TypeError: ord() expected a character, but string of length 2 found
就像我链接的问题中的询问者一样,我也尝试在字母表中发送x个字符,但为了做到这一点,我需要首先创建这个helper函数

我认为必须有一种方法将字母存储在两个单独的列表中,一个小写,一个大写,然后查看用户输入的字符串是否与该列表中的一个项目匹配?一旦我们找到匹配项,我们返回它的基于0的数字位置

letter = input("enter a letter")

def alphabet_position(letter):

    position = 0
    #letter_position = index value that matches input
    lower_case_list ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
 'y', 'z'] 

    upper_case_list ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
 'Y','Z']              

#if letter is in lower_case_list, return it's 0-based numerical position.
#else, if letter is in upper_case_list, return it's 0-based numerical position.
#else, print("Enter a valid letter")

return letter_position

如果你有任何建议,请帮忙。多谢各位

使用.lower方法将大写或小写转换为特定的小写,并使用内置的字母列表string.ascii_小写,可能更简单。可以使用.index方法查找列表元素的索引

import string

letter = input('enter a letter: ')

def alphabet_position(letter):
    letter = letter.lower()
    return list(string.ascii_lowercase).index(letter)


print(alphabet_position(letter))

当您调用alphabet_position时,它需要一个参数,因此您需要使用func_namearg格式。

使用.lower方法将大写或小写转换为特定小写,并使用内置的字母列表string.ascii_小写,可能更简单。可以使用.index方法查找列表元素的索引

import string

letter = input('enter a letter: ')

def alphabet_position(letter):
    letter = letter.lower()
    return list(string.ascii_lowercase).index(letter)


print(alphabet_position(letter))

当您调用alphabet_position时,它需要一个参数,因此您需要使用func_namearg格式。

我建议使用字典。做一些相对简单的事情可能需要大量代码,但我发现用这种方式理解它更容易,如果您是python新手,它将帮助您学习。如果您在谷歌上搜索python词典,您可以了解更多关于它们的信息,但以下是基本概念:

python 3.X版的代码:

def alphabet_position(letter):
    alphabet_pos = {'A':0, 'a':0, 'B':1, 'b':1}
    pos = alphabet_pos[letter]
    return pos
letter = input('Enter a letter: ')
print(alphabet_position(letter))
python 2.7版的代码:

def alphabet_position(letter):
    alphabet_pos = {'A':0, 'a':0, 'B':1, 'b':1}
    pos = alphabet_pos[letter]
    return pos
letter = raw_input('Enter a letter: ')
print alphabet_position(letter)
如果运行该命令,它将打印1,因为它在alpahbet_pos字典中搜索,并找到与标题为“B”的条目对应的值。请注意,可以有多个具有相同值的条目,因此可以在同一词典中使用大写和小写。为了时间,我只写了字母A和B,所以你可以自己填其余的


我曾经必须输入元素周期表上的每一种元素及其对应的原子质量,这一过程比实际时间长得多。

我建议使用字典。做一些相对简单的事情可能需要大量代码,但我发现用这种方式理解它更容易,如果您是python新手,它将帮助您学习。如果您在谷歌上搜索python词典,您可以了解更多关于它们的信息,但以下是基本概念:

python 3.X版的代码:

def alphabet_position(letter):
    alphabet_pos = {'A':0, 'a':0, 'B':1, 'b':1}
    pos = alphabet_pos[letter]
    return pos
letter = input('Enter a letter: ')
print(alphabet_position(letter))
python 2.7版的代码:

def alphabet_position(letter):
    alphabet_pos = {'A':0, 'a':0, 'B':1, 'b':1}
    pos = alphabet_pos[letter]
    return pos
letter = raw_input('Enter a letter: ')
print alphabet_position(letter)
如果运行该命令,它将打印1,因为它在alpahbet_pos字典中搜索,并找到与标题为“B”的条目对应的值。请注意,可以有多个具有相同值的条目,因此可以在同一词典中使用大写和小写。为了时间,我只写了字母A和B,所以你可以自己填其余的


我曾经必须输入元素周期表上的每一种元素及其对应的原子质量,这花费了我比实际更长的时间。

另一种方法是使用字典理解来创建字母位置对的dict,如下所示:

from string import lowercase as l

alphabet_lookup = {letter:pos for letter,pos in zip(l, range(len(l)))}
然后

f = lambda letter: alphabet_lookup[letter.lower()]

是所需的功能

另一种方法是使用字典理解创建字母位置对的dict,如下所示:

from string import lowercase as l

alphabet_lookup = {letter:pos for letter,pos in zip(l, range(len(l)))}
然后

f = lambda letter: alphabet_lookup[letter.lower()]

是所需的功能

是的,这就是我想要的。我不知道你可以在这样一个变量中创建一个字典-酷!非常感谢。是的,这就是我想要的。我不知道你可以在这样一个变量中创建一个字典-酷!非常感谢。