正文 【Python基础】5. 用户输入和基本语句 拾年之璐 V管理员 /2020年 /596 阅读 0805 ## 用户输入和基本语句 [TOC] ### 1. 用户输入 使用函数 `input()` 可以让程序暂停运行,等待用户输入一些文本,Python在获取用户的输入后,将其存储在一个变量中,以便用户来使用。 当使用 `input()` 函数时,可以指出需要用户输入的数据是什么,即进行必要的信息提示。 示例: ```python name = input('请输入你的姓名:') print('Hello ' + name) ``` 示例输出: ``` 请输入你的姓名:张三 Hello 张三 ``` 采用 `input()` 方法输入的数据,默认以字符串形式存储。如果用户需要输入数字类型,可以采用类型转换的函数(如 `int()` 实现字符串转换为整形)来实现。 示例: ```python age = input('请输入你的年龄:') age = int(age) if age >= 18: print('已成年') else: print('未成年') ``` 示例输出: ``` 请输入你的年龄:20 已成年 ``` ### 2. if 语句 #### 2.1 简单的if语句 ##### 2.1.1 if语句 一般情况下, `if` 语句主要进行条件的判断。下面这个示例是进行的各种条件判断。 示例 ```python name = 'Zhangsan' # 判断基本的相等于不等 if name != 'zhangsan': print(name + ' 不等于 zhangsan') # 带大小写转换的判断 if name.lower() == 'zhangsan': print(name.lower() + ' 等于 zhangsan') # 判断数值 age = 20 if age >= 20: print(str(age) + '>= 20') if age < 30: print(str(age) + '< 30') # 判断多个条件 age_1 = 20 age_2 = 23 if age_1 <= 25 and age_2 <= 25: print('两个年龄均小于 25 ') if age_1 >= 18 or age_2 >= 18: print('两个年龄,至少有一个已成年') ``` 示例输出: ``` Zhangsan 不等于 zhangsan zhangsan 等于 zhangsan 20>= 20 20< 30 两个年龄均小于 25 两个年龄,至少有一个已成年 ``` 另外,if语句还可以判断某个值是否在列表中。 示例: ```python name = ['张三', '李四', '王五', '赵六'] if '张三' in name: print('张三在 name 列表中') if '田七' not in name: print('田七不在 name 列表中') ``` 示例输出: ``` 张三在 name 列表中 田七不在 name 列表中 ``` ##### 2.1.2 if-else 语句 经常需要在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作;在这种情况下,可使用Python提供的 `if-else` 语句。`if-else` 语句块类似于简单的 `if` 语句,但其中的`else` 语句让你能够指定条件测试未通过时要执行的操作。 示例: ```python age = 17 if age >= 18: print('你已成年') else: print('你未成年') ``` ##### 2.1.3 if-elif-else 语句 经常需要检查超过两个的情形,为此可使用Python提供的 `if-elif-else` 结构。Python只执行 `if-elif-else` 结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。 ```python month = 5 if month in [1, 3, 5, 7, 8, 10, 12]: print(str(month) + ' 月有31天') elif month in [4, 6, 9, 11]: print(str(month) + ' 月有30天') elif month == 2: print(str(month) + ' 月可能有28天,也可以有29天') else: print('该月份错误') ``` > **elif** 代码块是可以叠加使用的,即任意数量的 **elif**代码块均可。 > > 末尾的else代码块可以省略。 #### 2.2 if语句与列表 ##### 2.2.1 检查特殊元素 使用for循环可以对列表中的元素进行遍历,在遍历的时候,可以对特殊元素进行筛查。 示例: ```python scores = [100, 98, 59, 60, 78, 99, 57, 63] flag = 0 for score in scores: if score <= 60: flag += 1 print('共有 ' + str(flag) + ' 门课程不及格。') ``` 示例输出: ``` 共有 3 门课程不及格。 ``` > 在Python中,**没有自增或自减**(++ 或 --)操作,如果需要对变量 i 进行加一或者减一的操作,可以使用**i += 1** (即 i = i + 1 )或者 i -= 1(即 i = i - 1 )实现。 ##### 2.2.2 判断列表是否为空 如果列表初始值就是空,那么再执行循环也是无意义的。所以有时需要对列表是否为空进行判断。 示例: ```python scores = [] flag = 0 if scores: for score in scores: if score <= 60: flag += 1 print('共有 ' + str(flag) + ' 门课程不及格。') else: print('暂时没有成绩公布') ``` 示例输出: ``` 暂时没有成绩公布 ``` > 注意缩进 ### 3. while 语句 `for` 循环用于针对集合中的每个元素都一个代码块,而 `while` 循环不断地运行,直到指定的条件不满足为止。 最简单的用法就是设置循环结束的条件。当然循环结束条件也是while循环中不可忽略的,如果条件设置不当,容易造成死循环。 示例: ```python # 输出前5个姓名 names = ['赵一', '钱二', '孙三', '李四', '周五', '吴六', '郑七', '王九'] num = 0 while num < 5: print(names[num]) num += 1 ``` 示例输出: ``` 赵一 钱二 孙三 李四 周五 ``` `while` 循环中可以使用 `break` 关键字来终止循环。 示例: ```python # 向列表中添加姓名,当输入重复的姓名时,结束 names = [] while True: name = input('请输入姓名:') if name in names: print(names) break else: names.append(name) ``` 示例输出: ``` 请输入姓名:张三 请输入姓名:李四 请输入姓名:王五 请输入姓名:赵六 请输入姓名:张三 ['张三', '李四', '王五', '赵六'] ``` `while` 循环中也可以用 `continue` 关键字来快速执行下一次循环,即忽略本次循环未执行的后续语句。即 **决定是否继续执行循环**。 示例: ```python # 打印20以内的奇数 num = 0 while num < 20: num += 1 if num % 2 == 0: continue else: print(num) ``` 当然, `while` 循环也可以和列表、字典等数据类型结合使用。不过具体是使用 `while` 循环方便,还是使用 `for` 循环方便,可结合具体实际进行选择。 示例: ```python # 首先,创建一个待验证用户列表和一个用于存储已验证用户的空列表 unconfirmed_users = ['alice', 'brian', 'candace'] confirmed_users = [] # 验证每个用户,直到没有未验证用户为止 # 将每个经过验证的列表都移到已验证用户列表中 while unconfirmed_users: current_user = unconfirmed_users.pop() print("正在验证: " + current_user.title()) confirmed_users.append(current_user) # 显示所有已验证的用户 print("\n以下用户已验证:") for confirmed_user in confirmed_users: print(confirmed_user.title()) ``` 示例输出: ``` 正在验证: Candace 正在验证: Brian 正在验证: Alice 以下用户已验证: Candace Brian Alice ``` > 参考文献: > > [1] Python编程:从入门到实践 本文采用创作共用版权 CC BY-NC-SA 3.0 CN 许可协议,转载或复制请注明出处! -- 展开阅读全文 --