如何将一些整数替换为字符串



我今天开始学习Python。我正在尝试为Discord制作一个命运骰子机器人。我想用字符串替换一个整数,我写道:

zarList = [1,-1,0]
zarsonuc = random.choices(zarList, k=4)
zarsonucsayi = sum(zarsonuc)
zartanim = {-4:'Felaket', -3:'Rezalet', -2:'Kötü', -1:'Dandik', 0:'Düz', 1:'Eh', 2:'İyi', 3:'Baya İyi', 4:'Harika'}
tanimsonuc = [zartanim.get(n,n) for n in zarsonucsayi]
await ctx.send(f"{tanimsonuc} bir zar attın.{sonuc},{zarsonucsayi}")`

但我接受这种类型错误:(

discord.ext.commands.errors.CommandInvokeError:命令引发异常:TypeError:"int"对象不可迭代。

有人能帮我吗?

如果要将整数替换为字符串,可以将其强制转换为字符串。例如,如果您想将数组的第一个数字强制转换为字符串,您可以说:

str(zarList[0])

希望它能有所帮助,(只是按照你在标题上的要求回答(

查看代码后,不会出现错误,因为列表元素不是字符串,而是因为您试图迭代int元素和not可迭代对象。此处:

tanimsonuc = [tanim.get(n,n) for n in zarsonucsayi]

zarsonucsayi = sum(zarsonuc)

返回一个int值,并且您无法对其进行迭代。

您需要使用range进行迭代

tanimsonuc = [zartanim[n] for n in range(zar_sonuc_sayi)]

输出:

['Düz', 'Eh', 'İyi', 'Baya İyi']

解释


  • [zartanim.get(n,n) for n in zarsonucsayi]

    您需要使用range(zarsonucsayi)迭代zarsonucsayi才能做到这一点

    您想要相应骰子值的值,请使用zartanim[n]

zarList = [str(x) for x in zarList]

基本上,您可以遍历列表,并使用str 将其转换为字符串

最新更新