分配变量两次或不是?

时间:2015-10-18 00:11:23

标签: python python-3.4

name = '' 
while name != 'your name':
      print('please type your name.')
      name = input()
print('Thank you!')

问题:这是编码示例练习的一部分。程序运行正常。但我的问题是,我们不是在这里两次分配变量名,第一个是空字符串,第二个是输入(),如果是这样,两次分配变量仍然可以吗?

3 个答案:

答案 0 :(得分:1)

是的,可以将变量定义两次,因为你需要它用于循环。另一种方法是允许循环永远继续,直到你明确地突破它。例如,您可以将示例重写为:

while True:
    name = input('please type your name')
    if name:
        break
print name

在这种情况下,您不是预先定义名称,而是创建一个循环,该循环将开始并继续,直到您发出break语句(因为循环条件为True)。 使用input获取名称后,只要输入了名称,条件if name就会允许您突破循环。

正如@eli_dink所指出的,以下可能是更好的做法:

waiting_for_name = True
while waiting_for_name:
    name = input('please type your name')
    if name:
        waiting_for_name = False
print name

答案 1 :(得分:0)

您可以根据需要多次指定变量名称。每次执行此操作时,该名称将从其用于引用的对象中解除绑定,并反弹到赋值的RHS结果。

这是很常见的内部循环,你可以在每次迭代时进行类似的一系列计算 - 它也隐含在标准Python for循环中使用 - 例如:

for letter in "mystring":
    print(letter)

您可以看到名称letter每次在循环周围引用不同的对象。该循环实际上是一个更容易阅读的循环版本:

mystring = "mystring"
i = 0
while i < len(mystring):
    letter = mystring[i]
    print(letter)
    i = i + 1

为了使while循环起作用,我们必须添加变量i,其值在整个循环中不断变化(通常隐藏在{{的幕后机制中) 1}}循环)。我们还在每次循环时重新绑定名称for,这正是letter循环的作用。如果我们不允许以这种方式重用变量名,那么这种模式即使不是不可能,也会非常困难。

请注意,这不是特定于循环的东西:它恰好在那里非常常用。例如,你可能也会看到它,如果你有一个很长的计算并不能很好地适用于一行 - 它可能有助于“建立它”#39;在几行中,每次重复使用相同的变量(尽管有时它 更好的样式来为中间值找到不同的有意义的名称,特别是如果其他事情发生在其间)。

答案 2 :(得分:0)

是的,没关系。这就是为什么它被称为“变量”。 It literally means "able to vary"