day01 格式化输出和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('您输入的账号有误,请重新输入,\n 还有 %s 次机会' %(i))
        else:
            con = input('3次机会已用完,您是否还要继续尝试?Y')
            if con == 'Y':
                i = 3

练习2.求1-2+3-4+5-6...+99的值,要求跳过88

# 方法一
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)

在这种方法中,相当于对后面的值进行了索引编号,按照编号对应,不用重复书写

第三种方法与第二种类似,只是将索引换为变量名,再在后面对变量进行赋值即可,此处不再赘述.

猜你喜欢

转载自www.cnblogs.com/87pzy/p/10517913.html