Python 接收字母的函数,Returns(从 0 开始)字母表中的数字位置
Python Function That Receives Letter, Returns (0-Based) Numerical Position Within Alphabet
我正在尝试创建一个 Python 函数来接收一个字母(一个只有一个字母字符的字符串)和 return 该字母在字母表中从 0 开始的数字位置.应该是不区分大小写的,我不能用import。
所以输入 "a" 应该 return
0
输入"A"也应该return
0
输入 "O" 应该 return
14
等等。
我注意到了 this question 但最上面的答案使用了导入,而第二个答案对我来说没有任何意义/不起作用。我试着像这样应用第二个答案:
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" 发送回字母表中的步数,但为了做到这一点,我需要创建这个助手首先发挥作用。
我在想一定有一种方法可以将字母存储在两个单独的列表中,一个小写字母和一个大写字母,然后查看用户输入的字符串是否与其中的一项匹配列表?然后一旦我们找到匹配项,我们 return 它是(基于 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_lowercase) 可能更简单。您可以使用 .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_name(arg) 格式。
我建议使用字典。做一些相对简单的事情可能需要大量代码,但我发现这样更容易理解(如果您是 python 的新手,它将帮助您学习)。如果你 google 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,所以你可以自己填写剩下的;)
我曾经不得不输入周期性 table 上的每个元素及其相应的原子质量,这花了很长时间(感觉比实际要长得多)。
您可以这样做的另一种方法是使用字典理解来创建一个 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()]
是所需的函数。
我正在尝试创建一个 Python 函数来接收一个字母(一个只有一个字母字符的字符串)和 return 该字母在字母表中从 0 开始的数字位置.应该是不区分大小写的,我不能用import。
所以输入 "a" 应该 return
0
输入"A"也应该return
0
输入 "O" 应该 return
14
等等。
我注意到了 this question 但最上面的答案使用了导入,而第二个答案对我来说没有任何意义/不起作用。我试着像这样应用第二个答案:
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" 发送回字母表中的步数,但为了做到这一点,我需要创建这个助手首先发挥作用。
我在想一定有一种方法可以将字母存储在两个单独的列表中,一个小写字母和一个大写字母,然后查看用户输入的字符串是否与其中的一项匹配列表?然后一旦我们找到匹配项,我们 return 它是(基于 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_lowercase) 可能更简单。您可以使用 .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_name(arg) 格式。
我建议使用字典。做一些相对简单的事情可能需要大量代码,但我发现这样更容易理解(如果您是 python 的新手,它将帮助您学习)。如果你 google 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,所以你可以自己填写剩下的;)
我曾经不得不输入周期性 table 上的每个元素及其相应的原子质量,这花了很长时间(感觉比实际要长得多)。
您可以这样做的另一种方法是使用字典理解来创建一个 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()]
是所需的函数。