如何将python中的字符串等同于数字

如何将python中的字符串等同于数字,python,Python,伙计们,我是python的新手,我不明白这一点。我有一个字符串,我想等于一个数字,但我不知所措。这是我到目前为止的代码,但它不起作用。如果我的问题有答案,请告诉我 函数接受一个参数名,并应生成相应的数字 def name_to_number(name): name1 = "rock" name2 = "paper" name3 = "scissors" name4 = "lizard" name5 = "spock" name_rock

伙计们,我是python的新手,我不明白这一点。我有一个字符串,我想等于一个数字,但我不知所措。这是我到目前为止的代码,但它不起作用。如果我的问题有答案,请告诉我

函数接受一个参数名,并应生成相应的数字

    def name_to_number(name):
    name1 = "rock"
    name2 = "paper"
    name3 = "scissors"
    name4 = "lizard"
    name5 = "spock"

    name_rock = int(0, name1)
    name_paper = int(1, name2)
    name_scissors = int(2, name3)
    name_lizard = int(3, name4)
    name_spock = int(4, name5)

    if (name1 == "rock"):
        print name_rock
    elif (name2 == "paper"):
        print name_paper
    elif (name3 == "scissors"):
        print name_scissors
    elif (name4 == "lizard"):
          print name_lizard
    elif (name5 == "spock"):
        print name_spock
    else :
        print "None of the numbers match"

    return name

test = name_to_number("paper")

print test
您真正的问题是“如何在Python中将字符串映射到数字”(反之亦然)。由于当前的标题可能会有误导性,让我们先来谈谈“如何比较字符串和数字”:与流行的脚本语言不同,Python不会自动进行类型转换。例如,在Javascript中,您可以执行以下操作:

>>> 5 == '5'
true
但在Python中,这是错误的:

>>> 5 == '5'
False
如果希望两个值属于不同的类型,则必须将它们显式转换为同一类型(例如
string
int
):

>>> str(5) == str('5')
True
现在让我们回到你真正的问题上来。正如@GarethLatty所评论的:


name1
name2
是一种非常常见的反模式。改用数据结构(列表、目录等)。这类问题也变得微不足道

Python中的两种基本容器数据类型是
list
dict

使用列表:

>>> name_list = ['rock', 'paper', 'scissors', 'lizard', 'spock']
>>> name_list.index('spock')
4
列表索引是从零开始的:

>>> name_list[0]
'rock'
使用dict可以将任意数字与字符串关联:

>>> name_dict = {'rock': 1, 'paper': 2, 'scissors': 3, 'lizard': 4, 'spock': 5}
>>> name_dict['spock']
5
如果该值不在列表中,则
索引
方法将引发
值错误
异常。在Python中,通常会用
try
块来包围这种表达式(如icktoofay所评论的):

这种编程风格非常流行。使用
dict
,您必须注意的异常是
KeyError

>>> name_dict['kirk']
Traceback (most recent call last):
    File "<interactive input>", line 1, in <module>
KeyError: 'kirk'
您真正的问题是“如何在Python中将字符串映射到数字”(反之亦然)。由于当前的标题可能会有误导性,让我们先来谈谈“如何比较字符串和数字”:与流行的脚本语言不同,Python不会自动进行类型转换。例如,在Javascript中,您可以执行以下操作:

>>> 5 == '5'
true
但在Python中,这是错误的:

>>> 5 == '5'
False
如果希望两个值属于不同的类型,则必须将它们显式转换为同一类型(例如
string
int
):

>>> str(5) == str('5')
True
现在让我们回到你真正的问题上来。正如@GarethLatty所评论的:


name1
name2
是一种非常常见的反模式。改用数据结构(列表、目录等)。这类问题也变得微不足道

Python中的两种基本容器数据类型是
list
dict

使用列表:

>>> name_list = ['rock', 'paper', 'scissors', 'lizard', 'spock']
>>> name_list.index('spock')
4
列表索引是从零开始的:

>>> name_list[0]
'rock'
使用dict可以将任意数字与字符串关联:

>>> name_dict = {'rock': 1, 'paper': 2, 'scissors': 3, 'lizard': 4, 'spock': 5}
>>> name_dict['spock']
5
如果该值不在列表中,则
索引
方法将引发
值错误
异常。在Python中,通常会用
try
块来包围这种表达式(如icktoofay所评论的):

这种编程风格非常流行。使用
dict
,您必须注意的异常是
KeyError

>>> name_dict['kirk']
Traceback (most recent call last):
    File "<interactive input>", line 1, in <module>
KeyError: 'kirk'

name1
name2
是一种非常常见的反模式。改为使用数据结构(
列表
目录
等)。这类问题也变得微不足道。也许您需要枚举:
name1
name2
是一种非常常见的反模式。改为使用数据结构(
列表
目录
等)。这类问题也变得微不足道。可能您需要枚举:例如,
name\u to\u number=lambda name:name\u dict.get(name,-1)
,如果名称不在name\u dict中,它将返回-1。但实际上,在再次提问之前,请使用REPL探索您的选项,并用结果更新您的问题。此站点称为stackoverflow,而不是domyhomeworkforme。例如,
name\u to\u number=lambda name:name\u dict.get(name,-1)
,如果名称不在name\u dict中,它将返回-1。但实际上,在再次提问之前,请使用REPL探索您的选项,并用结果更新您的问题。此站点称为stackoverflow,而不是domyhomeworkforme。