2015-10-18 76 views
2
name = '' 
while name != 'your name': 
     print('please type your name.') 
     name = input() 
print('Thank you!') 

问题:这是一个编码示例练习的一部分。该程序运行正常。但我的问题是,我们是不是在这里分配变量名两次,1st-作为空字符串,2nd-作为input(),如果是这样,分配变量两次仍然可以吗?分配变量两次或不?

+1

当然,'对于我在范围(50)''将分配变量'我'50次。顺便说一下,使用'name = input('请输入您的姓名:')' –

+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

我一直这样做,但总的来说,你应该避免'while True:' 设置一个变量为'False',当你想要突然变成'True'时。然后,你可以'while some_var:' –

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,其价值不断变化在整个循环(这通常是隐藏在for循环的幕后机制)。我们还重新绑定每个循环周围的名称letter,这正是for循环所做的。如果我们不允许以这种方式重用变量名称,那么这种类型的模式即使不是不可能也是相当困难的。

请注意,这不是特定于循环的东西:它恰好在那里非常常用。例如,你可能会看到它,如果你有很长的计算不能很好地符合一行 - 它可能是有用的'建立'在几行,每次重复使用相同的变量(虽然有时它更好的风格,为中间值找到不同的有意义的名字,特别是如果在其间还有其他事情发生的话)。

0

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

+0

虽然这个链接可能会回答这个问题,但最好在这里包含答案的基本部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Nullify

+0

@ 200OK咦?这正是我所做的。它在那里。你只点击了我的句子,但没有阅读它?并提供链接供参考。我只是把它作为一个链接,表明我没有做出来,并提供一个方便的参考,如果有人想知道。我认为这是**很好的风格。 –

+2

@ 200OK我从我自己的经验中知道,有时我会学会一个技术术语,而不会多想它,只有后来才会有一个伟大的哈哈!那时我意识到我实际上可以解构这个词并且理解为什么叫做什么。 “变量”对我来说实际上可能是这样一个词。而其他答案都没有指出,所以我做了。令人失望的是,这种帮助在这里显然是灰心的(由downvote来判断)。 –