流程控制与格式化输出
流程控制与格式化输出
1 用户输入
#!/usr/bin/env python3.7
#_*_coding:utf-8_*_
#name = raw_input("What is your name?") #only on python 2.x
name = input("What is your name? ")
print("Hello " + name )
输入密码时,若想使其不可见,需用到getpass模块中的getpass方法
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
import getpass
# 将用户输入的内容赋值给 name 变量
password = getpass.getpass("请输入密码:")
# 打印输入的内容
print(password)
案例一:让用户输入自己的年龄,计算其还能活多少年,假定每人能活100年
#!/usr/bin/env python3.7
age = input("请输入您的年龄:")
left_age = 100 - int(age)
print("您还能活",str(left_age),"年")
注意:input接收的所有数据都是字符串,即使你输入的是数字,依然会被当成字符串来处理
2 if条件判断
if语句语法:
# 单分支if
a = 1
if a > 0:
print('hehe')
# 双分支if
a = 100
if a < 100:
print("henhen")
else:
print("haha")
# 多分支if
a = 100
if a < 100:
print("hehe")
elif a > 100:
print("xixi")
else:
print("haha")
案例一:用户登录验证
# 提示输入用户名和密码
# 验证用户名和密码
# 如果错误,则输出用户名或密码错误
# 如果成功,则输出 欢迎,XXX!
#!/usr/bin/env python3.7
import getpass
name = input('请输入用户名:')
pwd = getpass.getpass('请输入密码:')
if name == "wangqing" and pwd == "runtime":
print("欢迎,忘情!")
else:
print("用户名和密码错误")
案例二:猜数字游戏
在程序里设定好一个数字,然后启动程序让用户猜,用户输入后,根据他的输入提示用户输入的是否正确,如果错误,提示是猜大了还是猜小了
#!/usr/bin/env python
number = 50
user_input = int(input("input your guess num:"))
if user_input == number:
print("Congratulations, you got it !")
elif user_input < number:
print("Oops,think bigger!")
else:
print("think smaller!")
练习:学习成绩判断
- 大于等于90为优
- 大于等于80为良
- 大于等于70为中
- 大于60为及格
- 小于等于60为差
3 for循环
最简单的循环10次
#!/usr/bin/env python3.7
#_*_coding:utf-8_*_
__author__ = 'sean'
for i in range(10):
print("loop:", i )
结果输出
[root@localhost ~]# python3.7 test.py
loop: 0
loop: 1
loop: 2
loop: 3
loop: 4
loop: 5
loop: 6
loop: 7
loop: 8
loop: 9
案例一:打印10以内的数字,但是遇到小于5的循环次数就跳过,直接进入下一轮循环
#!/usr/bin/env python3.7
#_*_coding:utf-8_*_
__author__ = 'sean'
for i in range(10):
if i<5:
continue #不往下走了,直接进入下一轮loop
print("loop:", i )
案例二:打印10以内的数字,但是遇到大于5的循环次数就中止,直接退出循环
#!/usr/bin/env python3.7
#_*_coding:utf-8_*_
__author__ = 'sean'
for i in range(10):
if i>5:
break #不往下走了,直接退出整个loop
print("loop:", i )
练习:
- 打印1-100间的奇数
- 取模实现
- range实现
- 打印1-100间的数字,但是50-70不打印
for循环之else
当for循环正常结束后会执行else段的代码
#!/usr/bin/env python3.7
for i in range(10):
print("loop:",i)
else:
print("我要上天!")
若for循环非正常结束则不会执行else段代码
#!/usr/bin/env python3.7
for i in range(10):
if i > 5:
break
print("loop:",i)
else:
print("我要上天!")
4 while循环
有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。
海枯石烂代码
count = 0
while True:
print("你是风儿我是沙,缠缠绵绵到天涯...",count)
count +=1
其实除了时间,没有什么是永恒的,死loop还是少写为好
上面的代码循环100次就退出吧
count = 0
while True:
print("你是风儿我是沙,缠缠绵绵到天涯...",count)
count +=1
if count == 100:
print("见鬼的风和沙,我要忘情...")
break
回到上面猜数字游戏的例子,如何实现让用户不断的猜数字,但只给最多3次机会,再猜不对就退出游戏
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
number = 50
count = 0
while count < 3:
user_input = int(input("input your guess num:"))
if user_input == number:
print("Congratulations, you got it !")
break
elif user_input < number:
print("Oops,think bigger!")
else:
print("think smaller!")
count += 1 #每次loop 计数器+1
else:
print("猜这么多次都不对,你个笨蛋.")
不限制猜的次数?要猜的数字为一个随机数?如何实现?
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
import random
number = random.randint(1,100) #生成一个1-100之间的随机整数
count = 0
while True:
user_input = int(input("input your guess num:"))
count += 1 #每次loop 计数器+1
if user_input == number:
print("Congratulations, you got it !")
print("恭喜你猜对了,你一共猜了 " + str(count) + "次")
break
elif user_input < number:
print("Oops,think bigger!")
else:
print("think smaller!")
练习:
- 打印1-100间的奇数
- 用while实现猜数字游戏且不能使用break
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
import random
number = random.randint(1,100) #生成一个1-100之间的随机整数
flag = True
count = 0
while flag:
user_input = int(input("input your guess num:"))
count += 1 #每次loop 计数器+1
if user_input == number:
print("Congratulations, you got it !")
print("恭喜你猜对了,你一共猜了 " + str(count) + "次")
flag = False
elif user_input < number:
print("Oops,think bigger!")
else:
print("think smaller!")
else:
print("用flag多爽呀,再也不要暴力终止了")
5 格式化输出
案例一:判断用户输入的长得像不像数字
#!/usr/bin/env python3.7
user_input = input("请输入一个整数:")
print(type(user_input)) # 打印出用户输入的内容属于什么类型
print('-------------------------')
if user_input.isdigit(): # 判断用户输入的内容是否长得像数字
user_input = int(user_input) # 将长得像数字的用户输入转换成int整型
else:
print("您输入的不是整数")
print(type(user_input)) # 打印转换类型后的用户输入类型
exit()函数指定退出状态码
print('-------------------------')
exit(200)
print('-------------------------')
结果输出:
[root@localhost ~]# python3.7 test.py
-------------------------
[root@localhost ~]# echo $?
200
案例二:打印个人信息
想打印个人信息,在不用格式化输出的情况下是这样的
info = '''
-------- info of sean --------
Name: sean
Age: 30
Job: teacher
Salary: 8000
'''
print(info)
但是这样有一个问题,我们的信息都是写死的,不能修改,不够灵活,但使用格式化输出就更方便与灵活,数据也可以用变量代替
#!/usr/bin/env python3.7
name = input("请输入您的姓名:") # 让用户输入姓名
age = int(input("请输入您的年龄:")) # 让用户输入年龄
job = input("请输入您的职业:") # 让用户输入职业
salary = int(input("请输入您的薪资:")) # 让用户输入薪资
info = '''
-------- info of %s--------
Name: %s
Age: %d
Job: %s
Salary: %d
'''
print(info % (name,name,age,job,salary))
占位符 | 描述 |
---|---|
%s | 字符串 |
%d | 整数 |
%f | 浮点数 |
6 作业
作业一:编写登录接口,要求如下
- 输入用户名和密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
作业二:让用户输入三个数字,输出最大值与最小值
作业三:打印九九乘法表
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!