name = ''
while name != 'your name':
print('please type your name.')
name = input()
print('Thank you!')
问题:这是一个编码示例练习的一部分。该程序运行正常。但我的问题是,我们是不是在这里分配变量名两次,1st-作为空字符串,2nd-作为input(),如果是这样,分配变量两次仍然可以吗?分配变量两次或不?
name = ''
while name != 'your name':
print('please type your name.')
name = input()
print('Thank you!')
问题:这是一个编码示例练习的一部分。该程序运行正常。但我的问题是,我们是不是在这里分配变量名两次,1st-作为空字符串,2nd-作为input(),如果是这样,分配变量两次仍然可以吗?分配变量两次或不?
是的,可以两次定义变量,因为你需要为循环。另一种做法是让循环一直持续下去,直到你明确地摆脱它为止。例如,你可以重写你的例子如:
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
我一直这样做,但总的来说,你应该避免'while True:' 设置一个变量为'False',当你想要突然变成'True'时。然后,你可以'while some_var:' –
您可以指定一个变量名多次,因为你需要。每次你做的时候,这个名字都是从它用来引用的对象中解脱出来的,并且反弹到作业的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
循环所做的。如果我们不允许以这种方式重用变量名称,那么这种类型的模式即使不是不可能也是相当困难的。
请注意,这不是特定于循环的东西:它恰好在那里非常常用。例如,你可能会看到它,如果你有很长的计算不能很好地符合一行 - 它可能是有用的'建立'在几行,每次重复使用相同的变量(虽然有时它是更好的风格,为中间值找到不同的有意义的名字,特别是如果在其间还有其他事情发生的话)。
是的,没关系。这就是为什么它被称为“变量”。 It literally means "able to vary"。
虽然这个链接可能会回答这个问题,但最好在这里包含答案的基本部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Nullify
@ 200OK咦?这正是我所做的。它在那里。你只点击了我的句子,但没有阅读它?并提供链接供参考。我只是把它作为一个链接,表明我没有做出来,并提供一个方便的参考,如果有人想知道。我认为这是**很好的风格。 –
@ 200OK我从我自己的经验中知道,有时我会学会一个技术术语,而不会多想它,只有后来才会有一个伟大的哈哈!那时我意识到我实际上可以解构这个词并且理解为什么叫做什么。 “变量”对我来说实际上可能是这样一个词。而其他答案都没有指出,所以我做了。令人失望的是,这种帮助在这里显然是灰心的(由downvote来判断)。 –
当然,'对于我在范围(50)''将分配变量'我'50次。顺便说一下,使用'name = input('请输入您的姓名:')' –
重用变量完全可以 - 只要确保它不会让您在将来使用时感到困惑。在你的情况下,它非常有意义。 –