Python逻辑控制语句 之 综合案例

 1.系统登录

需求:

1. 提示⽤户输⼊登录系统的⽤户名和密码

2. 校验⽤户名和密码是否正确(正确的⽤户名:admin、密码:123456)

3. 如果⽤户名和密码都正确,打印“登录成功!”,并结束程序

4. 如果⽤户名或密码错误,打印“⽤户名或密码错误!”,提示⽤户继续输⼊⽤户名和密码登录 5. 如果⽤户输⼊的⽤户名为 “exit”,则退出程序

# 需求:
# 1. 提示⽤户输⼊登录系统的⽤户名和密码
# 2. 校验⽤户名和密码是否正确(正确的⽤户名:admin、密码:123456)
# 3. 如果⽤户名和密码都正确,打印“登录成功!”,并结束程序
# 4. 如果⽤户名或密码错误,打印“⽤户名或密码错误!”,提示⽤户继续输⼊⽤户名和密码登录
# 5. 如果⽤户输⼊的⽤户名为 “exit”,则退出程序
while True:
    name = input("请输入您的用户名:")
    if name == "exit":
        break
    pwd = input("请输入您的密码:")
    if name == "admin" and pwd == "123456":
        print("登陆成功!")
        break
    else:
        print("用户名或密码错误,请重新输入:")

 


2. 判断闰年

需求:

闰年判断程序(闰年是能被4整除,但不能被100整除的;或者能被400整除的年份)

输入一个有效的年份,判断是不是闰年

如果是闰年,则打印“xxxx年是闰年”;否则打印“xxxx年不是闰年”

如输入"2018",将打印“2018年不是闰年”

# 需求:
# 闰年判断程序(闰年是能被4整除,但不能被100整除的;或者能被400整除的年份)
# 输入一个有效的年份,判断是不是闰年
# 如果是闰年,则打印“xxxx年是闰年”;否则打印“xxxx年不是闰年”
# 如输入"2018",将打印“2018年不是闰年”
year = int(input("请输入一个年份:"))
if (year % 4 == 0 and year % 4 != 0) or year % 400 == 0:
    print(f'{year}年是闰年')
else:
    print(f'{year}年不是闰年')

 


3.求和

需求:

1. 书写代码求 0-100之间所有数字的累加和

2. 书写代码求 0-100 之间偶数的累加和

# 需求:
# 1. 书写代码求 0-100之间所有数字的累加和
# 2. 书写代码求 0-100 之间偶数的累加和
result = 0
for i in range(101):
    result += i
print(f"1-100的和为{result}")

result2 = 0
for n in range(101):
    if n % 2 == 0:
        result2 += n
print(f'1-100之间偶数的累加和为{result2}')


4.简易计算器

需求:

设计简易计算器,可以进行基本的加减乘除运算, 参考如下:

请输出第一个数字:

请输入第二个数字:

请输入要进行的操作(+ - * /):

计算的结果为:

举例如下:

请输出第一个数字: 10

请输入第二个数字: 20

请输入要进行的操作(+ - * /): +

计算的结果为: 10 + 20 = 30

a1 = int(input('请输入第一个数字:'))
a2 = int(input('请输入第二个数字:'))
a3 = input('请输入要进行的操作(+ - * /):')
if a3 == '+':
    print(a1 + a2)
elif a3 == '-':
    print(a1 - a2)
elif a3 == '*':
    print(a1 * a2)
elif a3 == '/':
    print(a1 / a2)


5.猜数字游戏

需求:

1. 电脑产生一个(1-100)的随机数,用户进行猜测(通过 input 输入),直到猜中为止。

2. 如果猜对了,输出:恭喜你猜对了,数字是 xx

3. 如果猜的数字比随机数大,输出:猜测的数字太大了,继续加油

4. 如果猜测的数字比随机数小,输出:猜测的数字有点小,再来一次


应用知识点1. 循环 2. 随机数 3. break
import random

# 电脑产生随机数
num = random.randint(1, 100)
while True:
    # 提示让用户输入
    my_num = int(input("请输入1-100之间的整数:"))
    if my_num == num:
        print("恭喜你猜中了,数字是%d" % num)
        break
    elif my_num > num:
        print("猜测的数字太大了,继续加油")
    else:
        print("猜测的数字有点小,再来一次")


6.求水仙花数 

水仙花数(Narcissistic number),也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一个 n 位数(n≥3),它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。
在数学中,水仙花数是自幂数的一种,严格来说,三位数的3次幂数才成为水仙花数。水仙花数的定义不仅限于三位数,实际上,一个 n 位数(n≥3)如果满足其各位数字的 n 次幂之和等于该数本身,那么它就是水仙花数。例如,407 也是一个水仙花数,因为 4^3 + 0^3 + 7^3 = 407。

你用while循环和for循环分别找出100000以内的所有水仙花数呢?

(1)使用for循环 

for i in range(100001):
    # 当为3位数
    a = i % 10
    b = i // 10 % 10
    c = i // 100 % 10
    if i == (a ** 3) + (b ** 3) + (c ** 3):
        if i > 100:
            print(i)

    # 当为4位数
    a = i % 10
    b = i // 10 % 10
    c = i // 100 % 10
    d = i // 1000 % 10
    if i == (a ** 4) + (b ** 4) + (c ** 4) + (d ** 4):
        if i > 100:
            print(i)
    # 当为5位数
    a = i % 10
    b = i // 10 % 10
    c = i // 100 % 10
    d = i // 1000 % 10
    e = i // 10000 % 10
    if i == (a ** 5) + (b ** 5) + (c ** 5) + (d ** 5) + (e ** 5):
        if i > 100:
            print(i)
    # 当为6位数
    a = i % 10
    b = i // 10 % 10
    c = i // 100 % 10
    d = i // 1000 % 10
    e = i // 10000 % 10
    f = i // 100000 % 10
    if i == (a ** 6) + (b ** 6) + (c ** 6) + (d ** 6) + (e ** 6) + (f ** 6):
        if i > 100:
            print(i)

 (2)使用while循环

i = 100
while i <= 100000:
    # 当为3位数
    a = i % 10
    b = i // 10 % 10
    c = i // 100 % 10
    if i == (a ** 3) + (b ** 3) + (c ** 3):
        if i > 100:
            print(i)
    # 当为4位数
    a = i % 10
    b = i // 10 % 10
    c = i // 100 % 10
    d = i // 1000 % 10
    if i == (a ** 4) + (b ** 4) + (c ** 4) + (d ** 4):
        if i > 100:
            print(i)
    # 当为5位数
    a = i % 10
    b = i // 10 % 10
    c = i // 100 % 10
    d = i // 1000 % 10
    e = i // 10000 % 10
    if i == (a ** 5) + (b ** 5) + (c ** 5) + (d ** 5) + (e ** 5):
        if i > 100:
            print(i)
    # 当为6位数
    a = i % 10
    b = i // 10 % 10
    c = i // 100 % 10
    d = i // 1000 % 10
    e = i // 10000 % 10
    f = i // 100000 % 10
    if i == (a ** 6) + (b ** 6) + (c ** 6) + (d ** 6) + (e ** 6) + (f ** 6):
        if i > 100:
            print(i)
    i += 1

 


未完待续。。。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

埜玊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值