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