Python 格式化输出和while循环的两个小练习
练习1.模拟登陆判断(3次机会)
r_name = "xianyu"
r_password = "123456"
i = 3 # 用来控制循环次数
while i > 0:
name = input("请输入你的账号:")
i -= 1
if name == r_name: # 输入的账号正确时
password = input("请输入您的密码") # 可继续输入密码
if password == r_password: # 若密码正确
print("登录成功, %s 欢饮您!" %(r_name)) # 登录成功,退出循环
break
else: # 若密码错误
if i:
print("密码输入错误,您还有 %s 次机会尝试,请重新登录" %(i)) # 提示用户剩余机会
else:
con = input("3次机会已用完,您是否还要继续尝试?Y")
if con == "Y":
i = 3
else: # 输入的账号错误时
if i:
print("您输入的账号有误,请重新输入,
还有 %s 次机会" %(i))
else:
con = input("3次机会已用完,您是否还要继续尝试?Y")
if con == "Y":
i = 3
练习2.求1-2+3-4+5-6…+99的值,要求跳过88
#Python学习交流群:778463939
# 方法一
i = 1
sum = 0
while i < 100:
if i % 2:
sum += i
else:
if i == 88:
pass
else:
sum -= i
i += 1
print(sum)
# 方法二
j = 0
k = -1 # 把所有的都当做加法,减偶数就相当于加上一个负偶数,k用来表示正负
sum2 = 0
while j < 99: # i 是从零开始的,先自加了
j += 1
if j == 88:
k = -k
continue
else:
k = -k
sum2 += j*k
print(sum2)
在第一个例子中,使用了 %s 。%s相当于一个占位符,可用来进行格式化输出,一般字符串用%s占位,数字用 %d 占位
在格式化输出的字符串中,若同时存在%,需要使用两个 %% 进行转义表示
str = """
-------------- %s 的自我介绍------------
姓名: %s
年龄: %d
身高: %d cm
体重: %d kg
性别: %s
%s ,你的身体素质打败了 %d%% 的人.
------------------------------------------
""" %(name,name,age,height,weight,sex,name,25)
print(str)
在上面的代码中,占位符必须与后面的值一一匹配.最后的两个%实际显示出来只有一个
格式化输出的另一种方法时使用字符串的 .format() 方法,任然以上面的代码为例使用.format方法来进行格式化,有三种方式
str = """
-------------- {} 的自我介绍------------
姓名: {}
年龄: {}
身高: {} cm
体重: {} kg
性别: {}
{} ,你的身体素质打败了 {}% 的人.
------------------------------------------
""".format(name,name,age,height,weight,sex,name,25)
print(str)
在这种方式中,所有的占位符都可以用{}来代替.最后的值仍要一一匹配,name出现了3次
第二种方法
str = """
-------------- {0} 的自我介绍------------
姓名: {0}
年龄: {1}
身高: {2} cm
体重: {3} kg
性别: {4}
{0} ,你的身体素质打败了 {5}% 的人.
------------------------------------------
""".format(name,age,height,weight,sex,25)
print(str)
在这种方法中,相当于对后面的值进行了索引编号,按照编号对应,不用重复书写
第三种方法与第二种类似,只是将索引换为变量名,再在后面对变量进行赋值即可,此处不再赘述.