Python程序控制结构(第4周)

这篇博客涵盖了多个计算问题的解决方案,包括四位数的自幂数(玫瑰数)列举,100以内素数之和的计算,身体质量指数(BMI)的计算,圆周率的近似计算以及用户登录验证的程序逻辑。通过示例代码展示了如何使用Python解决这些数学和编程问题。
摘要由CSDN通过智能技术生成

四位玫瑰数

  • 四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

  • 例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

  • 请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。

for i in range(1000,10000):
    t = str(i)
    if pow(eval(t[0]),4) + pow(eval(t[1]),4) + pow(eval(t[2]),4) + pow(eval(t[3]),4) == i:
        print(i)

#pow里面一定要是int,将i变成字符串,再用eval将字符串变成int

100以内素数之和

  • ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬求100以内所有素数之和并输出。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
    素数指从大于1,且仅能被1和自己整除的整数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
  • 提示:可以逐一判断100以内每个数是否为素数,然后求和。
result = 0
for i in range(2,101):
    if i%2==0 and i!=2:
        continue
    sign = True
    for j in range(2,i):
        if i%j==0:
            sign =False
            break
    if sign:
        result+=i
print(result)
# 定义一个函数进行封装,然后再调用
def is_prime(n):
    for i in range(2, n):
        if n%i == 0:
            return False
    return True
sum = 0
for i in range(2,100):
    if is_prime(i):
        sum += i
print(sum)
#运用整除的特性,让运算减少一半计算量,可以用时间戳perf_counter输出运行时间
def is_prime(n):
    for i in range(2, int(pow(n, 0.5))+1):
        if n%i == 0:
            return False
    return True
sum = 0
for i in range(2,100):
    if is_prime(i):
        sum += i
print(sum)

身体质量指数BMI

height, weight = eval(input())
bmi = weight/pow(height, 2)
a, b = "", ""
print("BMI数值为:{:.2f}".format(bmi))
if bmi < 18.5:
    a, b = "偏瘦", "偏瘦"
elif 18.5 <= bmi < 24:
    a, b = "正常", "正常"
elif 14 <= bmi < 25:
    a, b = "正常", "偏胖"
elif 25 <= bmi < 28:
    a, b = "偏胖", "偏胖"
elif 28 <= bmi < 30:
    a, b = "偏胖", "肥胖"
else:
    a, b = "肥胖", "肥胖"
print("BMI指标为:国际'{}',国内'{}'".format(a, b))

圆周率的计算

from random import random,seed
seed(123)
num = eval(input())
hits = 0.0
for i in range(num):
    x, y = random(), random()
    dist = pow(x ** 2 + y ** 2, 0.5)
    if dist <= 1.0:
        hits += 1
pi = 4 * (hits/num)
print("{:.6f}".format(pi))

整数的加减和

sum = 0
for n in range(1,967):
    if n % 2 != 0:
        sum += n
    else:
        sum -= n
print("{0}".format(sum))

三位水仙花数

s = ""
for i in range(100,1000):
    t = str(i)
    if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i:
        s += "{},".format(i)
print(s[:-1])

#取数字的位数,可以将其变成字符串,用索引,s后面+一个字符,
#最后一个字符没逗号,是因为s[:-1]去掉了逗号

用户登录的三次机会

count = 0
while count < 3:
    name = input()
    password = input()
    if name == "Kate" and password == "666666":
        print("登录成功!")
        break
    else:
        count += 1
        if count == 3:
            print("3次用户名或者密码均有误!退出程序。")

#不确定的次数用while,确实的次数用for in 
#判断运行了几次用count,然后在结尾加count+=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值