for循环习题练习

1 .使用for和while循环输出 0~100内所有3的倍数。

for x in range(0, 100, 3):  
    print(x)
 
for x in range(0,100):
    if x % 3 == 0:
        print(x) 

x = 0
while x < 100:
    print(x)
    x += 3
 
 

2 .使用for和while循环输出100~200内个位数或者十位数能被3整除的数

   
       for x in range (100, 200):
    if x % 10 % 3 == 0 or x % 100 // 10 % 3 == 0:
        print(x) 
        
        x = 100
while True:
    if x % 10 % 3 == 0 or x % 100 // 10 % 3 == 0:
        print(x)
    x += 1
    if x >= 200:
        break

3 .使用循环计算1*2*3*4*...*10的结果。

sum1 = 1
for x in range(1, 11):
    sum1 *= x
print("结果",sum1)

4 .统计100以内个位数是2并且能够被3整除的数的个数。

count = 0
for x in range(100):
    if x % 10 == 2 and x % 3 == 0:
        count += 1
print('数:', count)


count = 02
for x in range(2,100, 10):
    if x % 3 == 0:
        count += 1
print('数:', count)

输入任意一个正整数,求他是几位数?

注意: 这儿不能使用字符串,只能用循环

num = int(print('输入数'))
count = 0
while True:
    num = num // 10   # num // = 10
    count += 1
    if num == 0:
        break
print('位数:',count)
# 8767  -> 4  ->  8767 // 10 -> 876 // 10 -> 87 // 10 -> 8 // 10 -> 0
# 1234  -> 4
# 123   -> 3 -> 123 // 10 -> 12 // 10 -> 1 // 10 -> 0
# 98  -> 2
print('============================第5题=========================')
# num = int(input('请输入一个正整数:'))
# count = 0
# while True:
#     num = num // 10    # num //= 10
#     count += 1
#     if num == 0:
#         break
# print('位数:', count)

5 .打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是

⼀个⽔仙花数,因为 1³ + 5³ + 3³ 等于 153。

for x in range(100, 1000):
    ge = x % 10
    shi = x // 10 % 10
    bai = x // 100
    if ge**3 + shi**3 + bai**3 == x:
        print(x)

6 .判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数

num = 8
for x in range (2, num):
    if num % x == 0:
        print(num,'不是素数')
        break
else:
    print(num,'是素数')
    
    num = 8
for x in range(2, num):
    if num % x == 0:
        print(num, '不是素数')
        break
else:
    print(num, '是素数')

# 优化:
for x in range(2, int(num**0.5)+1):
    if num % x == 0:
        print(num, '不是素数')
        break
else:
    print(num, '是素数')

7 .求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)

pre1 = 1
pre2 = 1
n = 9
if n == 1 or n == 2:
    print(1)
else:
    for x in range(n-3):
        pre1, pre2 = pre2, pre1+pre2
    print(pre1+pre2)
    
    a0 = 0
a1 = 1
a2 = a0 + a1
n = 6
for x in range(1, n-1):
    a0 = a1
    a1 = a2
    a2 = a0+a1
print(a2)

8 .输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

for row in range(1, 10):
    # print(row)
    for col in range(1, row+1):
        print(col, 'x', row, '=', col*row, end='  ')
    print()

9 .这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

for big in range(1 , 100//3+1):
    for middle in range (1,51):
        for small in range(2, 101,2):
            if big *3 +middle * 2 + small/2 == 100 and big +middle +small == 100:
                print('大马:',big, '中马:',small, '小马:',small)

for small in range(2, 101,2):
if big *3 +middle * 2 + small/2 == 100 and big +middle +small == 100:
print(‘大马:’,big, ‘中马:’,small, ‘小马:’,small)


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值