pythonwhile嵌套while_初识python小练习02【while & 嵌套while】

# 1.求100以内的所有奇数之和

num = 1

sum = 0

while num <= 100:

sum = sum + num

print(sum)

num += 2 # 注意这里这一句要放在打印语句后面,否则num会算到101(因为99+2=101)

print("="*30) #分隔符 ,注意缩进的细节!!

=================

# 2.求100以内所有7的倍数之和,以及个数

i = 1 # 注意这里是从1开始的,因为0 % 7 ==0,但是0不算是7的倍数!!

n = 0 # 计数器

sum1= 0 # 总和

while i <= 100:

if i % 7 ==0:

n = n + 1

sum1 = sum1 + i

print(i,"是7的倍数")

i = i + 1

print("100之内7的倍数有", n, "个")

print(sum1)

print("="*30)

========================

# 3.水仙花数是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身

# 如(1**3+5**3+3**3=153),求1000以内的所有水仙花数

m = 100 #最小的三位数,因为大目标是三位数,所以从最小的三位数开始着手

while m < 1000:

#判断是不是水仙花数 :它的每个位上的数字的n次幂之和等于它本身

a = m // 100 # a 是百位上的数值,m // 100表示整除(例如101 // 100 = 1,那么百位上的就是数值1)

b = (m - a * 100) // 10 # b是十位上的数值,(m - a * 100) // 10 ==》例如123 - 1*100=23,23 // 10 = 2

c = m % 10 # c 是 个位数, m % 10==》例如123 % 10 =3

if a ** 3 + b ** 3 + c ** 3 == m:

print(m,"是水仙花数")

m += 1

print("="*30)

==========================

# 4.获取用户输入的任意数,判断其是否是质数

# 质数就是只能被1和它本身整除的数,1不是质数!!

number = int(input("input the number:")) # 接收用户输入的值

i = 2 # 如果是判断数字9是不是质数,就要看它能不能被2,3,4,5,6,7,8这几个数整除(不用考虑1,所以直接从2开始!)

flag = True # 该变量用来保存值,表示是不是质数。默认情况下我们假定是质数

while i < number:

# 注意:能被i(通过前面我们已经知道i不是1,也不是它自己,是2~number-1)整除的说明一定不是质数,

# 但是!如果是number不能被i整除,那不一定说明number就是质数。比方说9 % 2 !=0,可是9不是质数!

# 即必须在number % 所有的i都不能为0时,才能说明number是质数

# 因为有点复杂,所以我们用反向思维来做,也就是说当number % i == 0时(哪怕只是一个i能被整除),那就可以证明number不是质数了!

if number % i == 0:

flag = False

i = i + 1

if flag == True:

print(number,"是质数")

else:

print(number,"不是质数")

================================

# 1.打印99乘法表

i = 0

while i < 9:

i += 1

j = 0

while j < i:

j += 1

# print(j, "*", i,"=", i*j, end=" ") #方法一

print(f"{j}*{i}={i*j} ",end="") # 方法二

print()

print("="*30)

=================================

# 2.求100以内所有的质数

n = 2 # 1 不是质数,所以从2开始

while n <= 100:

flag = True # 用flag这个变量来存放值,表示是否是质数,默认情况下是质数

m = 2 # 将n和数从2~(n-1)之间的任何一个数做取模,如果能整除,说明不是质数

while m < n:

if n % m == 0:

flag = False

m += 1 # 记得加上这句,不然陷入死循环

if flag:

print(n)

n += 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值