如何在每次运行时使while循环存储连续变量?

时间:2019-04-03 00:29:17

标签: python

我是Stack Overflow和Python的新手。我正在尝试制作一种翻译程序,我敢肯定有比我正在做的事情更简单的方法,但是嘿,这是学习的一部分。因此,基本上,用户输入字母,然后翻译并打印答案。但是我宁愿存储它而不是打印它,以便在有意义的情况下,我可以在最后完全打印答案。

`a = "b"
While True:
  i = input()
  if I_1 = a:
    L_1="a"
  if I_1 = b:
    L_1 = "b"`

等。 因此,我希望每次将L_1存储为L_1L_2等,以便最后我可以说

`print(L_1 + L_2)`

,依此类推。

我知道我可能使用了错误的约定,但希望它足够清楚可以理解。 谢谢。

5 个答案:

答案 0 :(得分:1)

可以那样做(通过编程生成变量),但通常被认为是非常糟糕的形式,因为它使得很难推断出哪些变量引用了程序中的内容。

请考虑使用dict。像list一样,它是一个容器,但是与list不同的是,您可以使用 keys 访问其元素,尤其是字符串。这对您的用例非常有用,因为您可以将翻译的结果放在dict中,并使用原始字符/单词/短语访问它们。

您还需要一些方法来记录无法识别的输入并结束循环(因为您在while True中使用了无限循环)。

最后,完成后,您将拥有一个list。由于您可能想将其内容重新组合成一个句子,因此可以使用string.join,它将list的内容与string的内容组合在一起(此处为''使用,因此最终字符串中list的每个元素之间将没有任何内容)

例如:

translation_mapping = {'you': '你', 
                       'are': '是', 
                       'human': '人类'}
result = []

while True:
    input_string = input()
    if input_string == '_END':
        break

    try:
        result.append(translation_mapping[input_string])

    except KeyError:
        # input_string was not found in the translation mapping
        print(f"I didn't understand {input_string}. Please try again.")

print(''.join(result))

输出:

>>> you
>>> are
>>> a
I didn't understand a. Please try again.
>>> human
>>> _END
你是人类

答案 1 :(得分:0)

您正在寻找数据结构。

如果用户仅输入字母,则列表就足够了并且可以完成工作。

您的程序有2个问题,我们必须解决。

1)错误的相等运算符。

您使用的是等于运算符,而不是==比较运算符。由于将变量的值设置为该值,因此导致每个条件都成立。

2)范围界定错误。

您的变量L_1和L_2仅作用于if / else条件运算符,而没有作用于函数本身。确保在循环之外声明变量,以便在循环结束后可以再次使用它们。

答案 2 :(得分:0)

修复一些Python代码(相等运算符等),并为循环添加退出条件(用户输入以0开头)。这不一定是处理用户输入的最佳方法,但是我想使它与原始代码相似。

您要创建一个空列表来存储结果,并在每个循环中append对其进行保存。

output_data = []
while True:
   i = input()
   if i[0] == "a":
       output_data.append("b")
   if i[0] == "b":
       output_data.append("a")
   if i[0] == "0":
       break
print(output_data)

答案 3 :(得分:0)

您可以借助列表来完成此操作,该列表是python内置数组,如数据结构。您可以每次将结果附加到它。您可以通过键入某个字符串或字符等来打破while循环。 同样,您需要更正运算符,而while循环(W为大写字母)。

最后打印它时,可以使用join返回一个字符串,该字符串中的序列元素已通过str分隔符进行了连接。有关更多信息,请访问:https://www.geeksforgeeks.org/join-function-python/

a="b"
b="a"
lis=[]
while True:
  i = input()
  if i == a:
    lis.append("a")
  if i == b:
    lis.append("b")
  if i=="exit":
      break

print("".join(lis))

祝你好运!

答案 4 :(得分:0)

print('Enter the number of letters')
n = input()
word=[]

i=0;
while(i<n):
    word.append(input())
    i+=1