如何输入字符串,输出int,使用数组python
how to input string, output int, use array python
有人可以帮我完成这个源代码
am输入String,改成array list,输出那个int在那个table
x = input()
y = list(x)
table = {" ":270,
"a":0,
"b":90,
"c":180,
"d":270,
"e":0,
"f":90,
"g":180,
"h":270,
"i":0,
"j":90,
"k":180,
"l":270,
"m":0,
"n":90,
"o":180,
"p":270,
"q":0,
"r":90,
"s":180,
"t":270,
"u":0,
"v":90,
"w":180,
"x":270,
"y":0,
"z":90,}
for i in range(len(y)):
print(y[i])
print("{["+y[i]+"]}".format(table))
处出错
print("{["+y[i]+"]}".format(table))
示例:对于输入 abc
,预期输出应为:
a
0
b
90
c
180
如果我对你的理解是正确的,你想将 y 中的每个元素都转换为 int。您可以为此使用列表理解:
y = [int(x) for x in y]
我不确定你想做什么。但也许是这样的?
for i in y:
print(i, table[i])
.
比字符串连接 +
.
具有更高的优先级
这个表达式"{["+y[i]+"]}".format(table)
实际上被计算为:
"{["+y[i]+("]}".format(table))
这不是你想要的。
在 应用格式方法之前必须使用括号强制连接:
print(("{["+y[i]+"]}").format(table))
顺便说一句,我假设这是一个简化的例子,因为在这里使用 format 真的有点过分了,因为这会产生相同的输出:
for c in y:
print(c)
print(table[c])
此代码失败且远非优雅:
y = list(x)
for i in range(len(y)):
print(y[i])
print("{["+y[i]+"]}".format(table))
在 Python 中,您通常不需要使用递增索引对字符串进行 C 样式迭代。直接遍历字符串即可:
for letter in x:
print("my letter is", letter)
print("my integer is", table[letter])
并将每个字母转换为匹配的整数,生成一个列表,然后打印它:
my_int_list = [table[letter] for letter in x]
print(my_int_list)
最后一点,你应该用描述性的名称命名你的变量,x
和 y
很容易混淆。
我认为您的问题的答案将是以下代码:
x = str(input('Input string\n'))
table = {" ": 270,
"a": 0,
"b": 90,
"c": 180,
"d": 270,
"e": 0,
"f": 90,
"g": 180,
"h": 270,
"i": 0,
"j": 90,
"k": 180,
"l": 270,
"m": 0,
"n": 90,
"o": 180,
"p": 270,
"q": 0,
"r": 90,
"s": 180,
"t": 270,
"u": 0,
"v": 90,
"w": 180,
"x": 270,
"y": 0,
"z": 90}
for element in x:
if element in table:
print '{}\n{}'.format(element, int(table[element]))
有人可以帮我完成这个源代码 am输入String,改成array list,输出那个int在那个table
x = input()
y = list(x)
table = {" ":270,
"a":0,
"b":90,
"c":180,
"d":270,
"e":0,
"f":90,
"g":180,
"h":270,
"i":0,
"j":90,
"k":180,
"l":270,
"m":0,
"n":90,
"o":180,
"p":270,
"q":0,
"r":90,
"s":180,
"t":270,
"u":0,
"v":90,
"w":180,
"x":270,
"y":0,
"z":90,}
for i in range(len(y)):
print(y[i])
print("{["+y[i]+"]}".format(table))
处出错
print("{["+y[i]+"]}".format(table))
示例:对于输入 abc
,预期输出应为:
a
0
b
90
c
180
如果我对你的理解是正确的,你想将 y 中的每个元素都转换为 int。您可以为此使用列表理解:
y = [int(x) for x in y]
我不确定你想做什么。但也许是这样的?
for i in y:
print(i, table[i])
.
比字符串连接 +
.
这个表达式"{["+y[i]+"]}".format(table)
实际上被计算为:
"{["+y[i]+("]}".format(table))
这不是你想要的。
在 应用格式方法之前必须使用括号强制连接:
print(("{["+y[i]+"]}").format(table))
顺便说一句,我假设这是一个简化的例子,因为在这里使用 format 真的有点过分了,因为这会产生相同的输出:
for c in y:
print(c)
print(table[c])
此代码失败且远非优雅:
y = list(x)
for i in range(len(y)):
print(y[i])
print("{["+y[i]+"]}".format(table))
在 Python 中,您通常不需要使用递增索引对字符串进行 C 样式迭代。直接遍历字符串即可:
for letter in x:
print("my letter is", letter)
print("my integer is", table[letter])
并将每个字母转换为匹配的整数,生成一个列表,然后打印它:
my_int_list = [table[letter] for letter in x]
print(my_int_list)
最后一点,你应该用描述性的名称命名你的变量,x
和 y
很容易混淆。
我认为您的问题的答案将是以下代码:
x = str(input('Input string\n'))
table = {" ": 270,
"a": 0,
"b": 90,
"c": 180,
"d": 270,
"e": 0,
"f": 90,
"g": 180,
"h": 270,
"i": 0,
"j": 90,
"k": 180,
"l": 270,
"m": 0,
"n": 90,
"o": 180,
"p": 270,
"q": 0,
"r": 90,
"s": 180,
"t": 270,
"u": 0,
"v": 90,
"w": 180,
"x": 270,
"y": 0,
"z": 90}
for element in x:
if element in table:
print '{}\n{}'.format(element, int(table[element]))