【问题标题】:How to change the contents of a list using a user input variable using Python3如何使用 Python3 使用用户输入变量更改列表的内容
【发布时间】:2018-10-11 12:55:52
【问题描述】:

首先,感谢您查看这个问题。我一直在到处寻找正确的语法,但我没有想法。

用户输入一个字符串,然后保存:

strang = input( 'Enter message: ' )
strlen = len( strang )
strang1 = list( strang )
subs = input( 'Enter number between 1-26: ')

我创建了一个字典来定义字母表中的所有字母,以便我可以将用户输入的字符串转换为数字。

dic = { 'a':1, 'b':2, 'c':3, 
'd':4, 'e':5, 'f':6,
'g':7, 'h':8, 'i':9,
'j':10, 'k':11, 'l':12,
'm':13, 'n':14, 'o':15,
'p':16, 'q':17, 'r':18,
's':19, 't':20, 'u':21,
'v':22, 'w':23, 'x':24,
'y':25, 'z':26 }

我在 strang2 的末尾附加了一个疯狂的值,因此我可以选择没有该值的整个列表:strang2[:-1]

strang2 = list(dic.get( n, n ) for n in strang1)
strang2.append( 999 )

我想将用户定义为“subs”的任何值添加到列表“strang2”的元素中,将它们转换回字母,然后打印新字符串。 问题是向 strang2 的元素添加 subs,某种需要解决的数据类型差异。下面的代码不能正常工作:

for iter in strang2:
sum = float( iter + subs )
print( sum )

我已经在谷歌上搜索了一个星期,但失败了,所以这只是我到目前为止所做的最后一件事。再次感谢。

编辑:有 2 个等号,删除了一个。代码返回此错误:

Traceback (most recent call last):
File "/home/user/User/Scripts!/crypto.py", line 38, in <module>
sum = float( iter + subs )
TypeError: unsupported operand type(s) for +: 'int' and 'str'

【问题讨论】:

  • 试试subs = int(input( 'Enter number between 1-26: '))
  • 字符串已经是字符列表,你不需要做strang1 = list(strang)
  • @H.Tacon 我认为你的意思是字符串是可迭代的,因此这个用例不需要列表转换
  • @Chris_Rands 是的,你是对的,我把 C 语言的概念弄错了

标签: python string list integer


【解决方案1】:

input() 函数返回 str() 类型。您正在尝试将一个 int 和一个字符串添加在一起,因为 Python 是一种强类型语言,所以您不能隐式地这样做。

您还使用了sum == float(iter + subs),它将尝试检查相等性,而不是将float(iter + subs) 分配给sum

要做你想做的事情,你需要使用sum = float(iter + int(subs)) - 这会将subs转换为int类型,这样你就可以将它添加到iter(也是int)。

我认为您也不需要在strang2 列表的末尾添加新号码,您可以使用strang2[:] 选择整个列表。

【讨论】:

  • 像魅力一样工作。以前我做过类似的事情,但我没有告诉 subs 是一个 int。现在一切都正确输出。感谢您帮助我。
  • 乐于助人:)
【解决方案2】:

您正在使用sum == float( iter + subs )。使用 double = 检查值。所以如果你使用sum = float( iter + subs ) 它应该可以工作。

【讨论】:

  • 不幸的是,它返回了一个错误:Traceback(最近一次调用最后一次):文件“/home/user/user/Scripts!/crypto.py”,第 38 行,在 sum = float ( iter + subs ) TypeError: +: 'int' and 'str' 不支持的操作数类型
  • 如果你确定会输入一个数字,使用 sum = float(iter + int(subs))
【解决方案3】:

您必须将两个变量都转换为浮点数:

sum = float( float(iter) + float(subs ))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多