Python 2.6 非程序员教程/计数到 10
在这里,我们介绍第一个控制结构。通常,计算机从第一行开始,然后向下执行。然而,控制结构改变了语句执行的顺序,或者决定是否执行某些语句。以下是一个使用while
控制结构的程序的源代码
a = 0
while a < 10:
a = a + 1
print (a)
以下是非常令人兴奋的输出
1 2 3 4 5 6 7 8 9 10
你以为把你的电脑变成一个五美元的计算器后,情况不会更糟吗?
那么这个程序做了什么呢?首先,它看到了a = 0
这行代码,它告诉计算机将a
设置为零。然后,它看到了while a < 10:
,它告诉计算机检查是否a < 10
。计算机第一次看到这个 while 语句时,a
等于零,这意味着a
小于 10,所以计算机继续执行接下来的缩进或制表符中的语句。执行完这个 while “循环”中的最后一条语句print (a)
后,计算机又回到while a < 10
检查a
的当前值。换句话说,只要a
小于十,计算机就会执行缩进的语句。由于a = a + 1
不断地将 1 加到a
上,最终 while 循环会使a
等于十,并使a < 10
不再成立。达到这一点后,程序将不再执行缩进的行。
请始终记住在“while”语句后添加冒号“:”!
以下是while
的另一个使用示例
a = 1
s = 0
print ('Enter Numbers to add to the sum.')
print ('Enter 0 to quit.')
while a != 0:
print 'Current Sum:', s
a = input('Number? ')
s = s + a
print 'Total Sum =', round(s, 2)
Enter Numbers to add to the sum. Enter 0 to quit. Current Sum: 0 Number? 200 Current Sum: 200 Number? -15.25 Current Sum: 184.75 Number? -151.85 Current Sum: 32.9 Number? 10.00 Current Sum: 42.9 Number? 0 Total Sum = 42.9
注意print 'Total Sum =', s
是如何只在最后执行的。while
语句只影响缩进的空白行。!=
表示“不等于”,所以"while a != 0:"
表示:“直到a
为零,执行其后的缩进语句。”
现在我们有了 while 循环,就可以编写永远运行的程序了。一个简单的实现方法是编写这样的程序
while 1 == 1:
print "Help, I'm stuck in a loop."
“==”运算符用于测试两边表达式是否相等,就像之前使用“<”表示“小于”一样(在下一章中,您将获得所有比较运算符的完整列表)。
这个程序会一直输出Help, I'm stuck in a loop.
,直到宇宙热寂或您停止它,因为 1 将永远等于 1。停止它的方法是同时按下 Control(或Ctrl)键和C(字母)。这将终止程序。(注意:有时您需要在按下 Control-C 后按 Enter)。
Fibonacci.py
# This program calculates the Fibonacci sequence
a = 0
b = 1
count = 0
max_count = 20
while count < max_count:
count = count + 1
# we need to keep track of a since we change it
old_a = a
old_b = b
a = old_b
b = old_a + old_b
# Notice that the , at the end of a print statement keeps it
# from switching to a new line
print(old_a),
输出
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
注意通过在print
语句末尾使用逗号来实现单行输出。
Password.py
# Waits until a password has been entered. Use Control-C to break out without
# the password
# Note that this must not be the password so that the
# while loop runs at least once.
password = "no password"
# note that != means not equal
while password != "unicorn":
password = raw_input("Password: ")
print "Welcome in"
示例运行
Password: auo Password: y22 Password: password Password: open sesame Password: unicorn Welcome in
编写一个程序,要求用户输入登录名和密码。然后,当他们输入“lock”时,需要输入他们的姓名和密码来解锁程序。
编写一个程序,要求用户输入登录名和密码。然后,当他们输入“lock”时,需要输入他们的姓名和密码来解锁程序。
name = raw_input("What is your UserName: ")
password = raw_input("What is your Password: ")
print "To lock your computer type lock."
command = ""
input1 = ""
input2 = ""
while command != "lock":
command = raw_input("What is your command: ")
while input1 != name:
input1 = raw_input("What is your username: ")
while input2 != password:
input2 = raw_input("What is your password: ")
print "Welcome back to your system!"
如果您希望程序连续运行,只需在整个程序周围添加一个while 1 == 1:
循环。在代码开头添加它时,您需要缩进程序的其余部分,但不要担心,您不必为每一行手动执行此操作!只需突出显示您要缩进的所有内容,然后点击 python 窗口顶部栏“格式”下的“缩进”。请注意,您可以使用这样的空字符串:""
。
另一种方法是
name = raw_input('Set name: ')
password = raw_input('Set password: ')
while 1 == 1:
nameguess=passwordguess=key="" # multiple assignment
while (nameguess != name) or (passwordguess != password):
nameguess = raw_input('Name? ')
passwordguess = raw_input('Password? ')
print "Welcome,", name, ". Type lock to lock."
while key != "lock":
key = raw_input("")
注意while
中的or
(name != "user") or (password != "pass"):
,我们还没有介绍它。您可能可以弄清楚它的工作原理。
login = "john"
password = "tucker"
logged=2
while logged != 0:
while login != "Phil":
login = raw_input("Login : ")
while password != "McChicken":
password = raw_input("Password: ")
logged = 1
print "Welcome!"
print "To leave type lock "
while logged == 1:
leave = raw_input (">> ")
if leave == "lock":
logged = 0
print "Goodbye!!"
虽然这种方法比较粗略,但它也有效。注意它使用了尚未介绍的if
函数。