鱼C论坛

 找回密码
 立即注册
查看: 1556|回复: 13

[已解决]translate(table)函数

[复制链接]
发表于 2023-8-2 21:03:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
刚看了小甲鱼的translate(table)函数,然后试着用了下:
cjlb=str.maketrans("s_tcjlb","1234567","minecraftverynb")
s_t="minecrafts_tcjlb very nb"
print(s_t.translate(cjlb))
x=s_t.translate(cjlb)
a=1256
if x==a:
    print("yes")
else:
    print("no")
最后打印if条件那里打印了“no”,有没有大佬知道这是怎么回事啊,我这坨语句print(s_t.translate(cjlb))和print(“1256”)出来的结果不是都一样吗,为啥x不等于a
最佳答案
2023-8-2 21:17:52
根据您提供的代码和问题描述,我注意到您似乎将 x 和 a 进行了字符串比较。但是,由于 x 是通过字符串转换和翻译得到的结果,它可能包含其他字符或空格。

为了确保比较的准确性,您可以使用 strip() 方法去除两个字符串中的空格,并确保它们进行比较时没有其他隐藏字符。

请尝试使用以下代码:
cjlb = str.maketrans("s_tcjlb", "1234567", "minecraftverynb")
s_t = "minecrafts_tcjlb very nb"
print(s_t.translate(cjlb))
x = s_t.translate(cjlb).strip()
a = "1256"
if x == a:
    print("yes")
else:
    print("no")
通过使用 strip() 方法去除两个字符串的空格,这样就能正确比较它们了。希望这可以解决您的问题,如果还有其他疑问,请随时提问。

给个最佳答案呗!!!求你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-2 21:03:22 | 显示全部楼层
关于 translate(table) 函数的问题

根据你提供的代码和问题描述,我注意到在你的代码中存在一个错误。在比较 xa 的时候,你将 a 定义为整数类型(a=1256),但是 x 是一个字符串类型。因此,即使它们的值相同,它们的类型不同,导致比较结果为 False。

要解决这个问题,你可以将 a 定义为字符串类型,就像 x 一样。修改代码如下:
cjlb = str.maketrans("s_tcjlb", "1234567", "minecraftverynb")s_t = "minecrafts_tcjlb very nb"print(s_t.translate(cjlb))x = s_t.translate(cjlb)a = "1256"   # 将 a 定义为字符串类型if x == a:    print("yes")else:    print("no")
现在,当你运行代码时,应该会打印出 "yes",因为 xa 的值相同且类型相同。

希望这可以解决你的问题。如果你还有其他问题,请随时提问!

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 21:03:31 | 显示全部楼层
translate(table)函数解析

根据你提供的代码片段,我看到你使用了字符串的 translate() 函数来进行字符替换操作。让我们逐步解析你的代码,以便找出为什么 x 不等于 a 的原因。

首先,你使用 str.maketrans() 函数创建了一个字符映射表 cjlb。这个映射表将字符串中的字符 "s_tcjlb" 映射为相应的 "1234567"。其他字符保持不变。

然后,你定义了字符串 s_t,它包含了需要进行字符替换的内容。接着,你使用 translate(cjlb) 将映射表 cjlb 应用到 s_t 上,并将结果存储在变量 x 中。

最后,你定义了变量 a 的值为 1256,并使用条件语句判断 x 是否等于 a。如果相等,则打印 "yes",否则打印 "no"。

现在让我们来找出问题所在:

问题可能出现在你对 translate() 函数的理解上。这个函数会执行字符替换,但它返回的是一个新的字符串,而不是直接修改原始字符串。所以当你比较 xa 的时候,它们的类型是不同的:x 是字符串,而 a 是整数。

为了解决这个问题,你可以将 a 改为字符串类型,将其与 x 进行比较。修改后的代码如下:
cjlb = str.maketrans("s_tcjlb", "1234567", "minecraftverynb")s_t = "minecrafts_tcjlb very nb"print(s_t.translate(cjlb))x = s_t.translate(cjlb)a = "1256" # 将 a 改为字符串if x == a:    print("yes")else:    print("no")
现在,当你运行代码时,应该打印出 "yes",因为 xa 的值相同。

希望这能解决你的问题!如果你还有任何疑问,请随时问我。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 21:03:35 | 显示全部楼层
问题在于你将  x  设置为一个整数  1256 ,而  s_t.translate(cjlb)  返回的是一个字符串。尽管这两者的内容可能相同,但它们的类型不同,因此  x  不会等于  a 。

在这种情况下,你可以将  x  设置为一个字符串,以便进行比较。修改代码如下:
cjlb = str.maketrans("s_tcjlb", "1234567", "minecraftverynb")
s_t = "minecrafts_tcjlb very nb"
x = s_t.translate(cjlb)
a = "1256"  # 将a设置为字符串
if x == a:
    print("yes")
else:
    print("no")

这样修改后,条件判断就会得到正确的结果。请记住,在Python中,即使两个值的内容相同,如果它们的类型不同,那么相等性比较也会返回False。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 21:12:06 | 显示全部楼层
学习编程中的Ben 发表于 2023-8-2 21:03
关于 translate(table) 函数的问题

根据你提供的代码和问题描述,我注意到在你的代码中存在一个错误。在比 ...

C:\Users\rabbit\Pictures\Screenpresso
是这样吗,可为啥还是打印了“no”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 21:12:56 | 显示全部楼层
学习编程中的Ben 发表于 2023-8-2 21:03
关于 translate(table) 函数的问题

根据你提供的代码和问题描述,我注意到在你的代码中存在一个错误。在比 ...

C:\Users\rabbit\Pictures\Screenpresso是这样吗,为啥还是打印“no”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 21:13:51 | 显示全部楼层
Mike_python小 发表于 2023-8-2 21:03
translate(table)函数解析

根据你提供的代码片段,我看到你使用了字符串的 translate() 函数来进行字符替 ...

C:\Users\rabbit\Pictures\Screenpresso是这样吗,我这还是打印“no”唉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 21:14:36 | 显示全部楼层
isdkz 发表于 2023-8-2 21:03
问题在于你将  x  设置为一个整数  1256 ,而  s_t.translate(cjlb)  返回的是一个字符串。尽管这两者的内 ...

C:\Users\rabbit\Pictures\Screenpresso我改了但它还是打印“no”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 21:17:52 | 显示全部楼层    本楼为最佳答案   
根据您提供的代码和问题描述,我注意到您似乎将 x 和 a 进行了字符串比较。但是,由于 x 是通过字符串转换和翻译得到的结果,它可能包含其他字符或空格。

为了确保比较的准确性,您可以使用 strip() 方法去除两个字符串中的空格,并确保它们进行比较时没有其他隐藏字符。

请尝试使用以下代码:
cjlb = str.maketrans("s_tcjlb", "1234567", "minecraftverynb")
s_t = "minecrafts_tcjlb very nb"
print(s_t.translate(cjlb))
x = s_t.translate(cjlb).strip()
a = "1256"
if x == a:
    print("yes")
else:
    print("no")
通过使用 strip() 方法去除两个字符串的空格,这样就能正确比较它们了。希望这可以解决您的问题,如果还有其他疑问,请随时提问。

给个最佳答案呗!!!求你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 21:19:52 | 显示全部楼层
学习编程中的Ben 发表于 2023-8-2 21:17
根据您提供的代码和问题描述,我注意到您似乎将 x 和 a 进行了字符串比较。但是,由于 x 是通过字符串转换 ...

刚试了下这个方法,他还是会打印“no”唉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 21:28:34 | 显示全部楼层
skyteam超级吕布 发表于 2023-8-2 21:19
刚试了下这个方法,他还是会打印“no”唉

这是因为你在比较的是字符串和整数。虽然它们看起来可能相同,但它们的数据类型是不同的。

在你的代码中,x 是一个字符串,而 a 是一个整数。即使 x 的内容是 "1256",它仍然被视为一个字符串,而不是数字。因此,当你尝试比较 x 和 a 时,Python 会认为它们是不同的,因为它们的数据类型不同。

你可以通过将 a 转换为字符串来解决这个问题,如下所示:
a = "1256"
if x == a:
    print("yes")
else:
    print("no")
或者,你也可以将 x 转换为整数,如下所示:
x = int(s_t.translate(cjlb))
a = 1256
if x == a:
    print("yes")
else:
    print("no")
这样,你就可以正确地比较两个值了。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 21:28:49 | 显示全部楼层
skyteam超级吕布 发表于 2023-8-2 21:14
我改了但它还是打印“no”

cjlb = str.maketrans("s_tcjlb", "1234567", "minecraftverynb")
s_t = "minecrafts_tcjlb very nb"
x = s_t.translate(cjlb).strip()                  # 用 strip 把 translate 后的空白去掉
a = "1256"  # 将a设置为字符串
if x == a:
    print("yes")
else:
    print("no")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 21:43:46 | 显示全部楼层
sfqxx 发表于 2023-8-2 21:28
这是因为你在比较的是字符串和整数。虽然它们看起来可能相同,但它们的数据类型是不同的。

在你的代码 ...

啊,是脚本吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 22:00:48 | 显示全部楼层

他们才是,我怎么会呢??????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 14:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表