Python 学习笔记 - 用户输入和while循环

1.用户输入函数 input() 的工作原理

函数 input() 让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量中,以方便你使用。

>>> message = input("Tell me something, and I will repeat it back to you: ")
Tell me something, and I will repeat it back to you: hello Python!
>>> print(message)
hello Python!

当你使用 input() 时,应该指定清晰而易于明白的提示,准确地指出你希望用户提供什么样的信息。

2.使用 int() 来获取数值输入

使用函数 input() 时,Python将用户输入解读为字符串,所以一旦你想用用户输入的数据来跟其他类型比较时,就必须做类型转换。


>>> age = input("How old are you ?")
How old are you ?30
>>> age
'30'

如上所示我们得到了一个 30 的字符串。

>>> age >= 30
Traceback (most recent call last):
  File "<pyshell#108>", line 1, in <module>
    age >= 30
TypeError: '>=' not supported between instances of 'str' and 'int'

当我们做数值比较时报错。类型不匹配。所以这里就要用到 int() 函数将得到的字符串转换为 int 类型:


>>> int(age) >= 30
True

3.求模运算符(%)

用来处理数值信息,它能将两个数相除并返回余数:

>>> 4 % 3
1
>>> 5 % 3
2
>>> 6 % 3
0
>>> 7 % 3
1

可以用求模运算来判断一个数是奇数还是偶数。

4.while 循环

for 循环用于针对集合中的每个元素的一个代码块(循环次数根据指定集合中对象个数来判断),而 while 循环不断地运行,直到指定的条件不满足为止。编写 while 循环时注意循环条件,不要写了一个无限循环,哈哈。

语法:

while 循环条件:
执行逻辑

4.1.while 循环的退出

让用户自己选择退出:

>>> prompt = "\n Tell me something, and I will repeat it back to you:"
>>> prompt  += "\nEnter 'quit' to end the program."
>>> message = ""
>>> while message != 'quit':
         message = input(prompt)
         print(message)

 Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program.hello world!
hello world!

 Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program.quit
quit

使用标志:

>>> active = True
>>> while active:
         message = input(prompt)
         if message == 'quit':
             active = False
         else:
             print(message)

 Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program.hello world!
hello world!

 Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program.quit

使用 break 退出循环:

>>> prompt = "\nPlease enter the name of a city you have visited."
>>> prompt += "\n(Enter 'quit' when you are finished.)"
>>> while True:
         city = input(prompt)
         if city == 'quit':
             break
         else:
             print("I'd love to go to " + city.title() + "!")

Please enter the name of a city you have visited.
(Enter 'quit' when you are finished.)New York
I'd love to go to New York!

Please enter the name of a city you have visited.
(Enter 'quit' when you are finished.)Beijing
I'd love to go to Beijing!

Please enter the name of a city you have visited.
(Enter 'quit' when you are finished.)quit

4.2.循环中的 continue

要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用 continue 语句,它不像 break 语句那样不再执行余下的代码并退出整个循环。

>>> current_number = 0
>>> while current_number < 10:
         current_number += 1
         if current_number % 2 == 0:
             continue
         print(current_number)

1
3
5
7
9

4.3.while 循环在 列表 和 字典 中的应用

循环列表,在循环列表时必须有个结束的逻辑,比如使用 pop() 函数或者 break 语句,否则进入无限循环。

>>> users = ['alice', 'brian', 'candace']
>>> while users:
         print(users.pop())

candace
brian
alice

循环列表 users,依次移除列表 users 末尾的元素。直到最后一个元素被移除,循环结束。

>>> pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
>>> print(pets)
['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
>>> while 'cat' in pets:
         pets.remove('cat')
>>> print(pets)
['dog', 'dog', 'goldfish', 'rabbit']

循环列表 pets,循环移除元素 'cat' 直到 'cat' 全部移除 pets 中,循环结束。

循环字典

>>> responses = {}
>>> polling_active = True
>>> while polling_active:
         name = input("\n What is your name?")
         reponse = input("Which mountain would you like to climb someday?")
         responses[name] = reponse
         repeat = input("Would you like to let another person respond?(yes/no)")
         if repeat =='no':
             polling_active = False

 What is your name?dylan
Which mountain would you like to climb someday?Tai
Would you like to let another person respond?(yes/no)no

>>> for name, response in responses.items():
         print(name + " would like to climb " + response + '.')

dylan would like to climb Tai.

posted @ 2017-10-12 10:58  objectModel  阅读(303)  评论(0编辑  收藏  举报