name = ''
while name != 'your name':
print('please type your name.')
name = input()
print('Thank you!')
问题:这是编码示例练习的一部分。程序运行正常。但我的问题是,我们不是在这里两次分配变量名,第一个是空字符串,第二个是输入(),如果是这样,两次分配变量仍然可以吗?
答案 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"