接收字母的Python函数,返回字母表中的数字位置(基于0)
我正在尝试创建一个Python函数,该函数接收一个字母,一个只有一个字母字符的字符串,并返回该字母在字母表中基于0的数字位置。它不应该区分大小写,我不能使用导入 因此,输入a应该返回接收字母的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):
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()]
是所需的功能 是的,这就是我想要的。我不知道你可以在这样一个变量中创建一个字典-酷!非常感谢。是的,这就是我想要的。我不知道你可以在这样一个变量中创建一个字典-酷!非常感谢。