Python基础小练习_分支和循环2


# 基础题

1. 根据输入的成绩的范围打印`及格` 或者`不及格`。

   score = eval(input('输入成绩:'))
   if score >= 60:
       print('及格')
   else:
       print('不及格')

2. 根据输入的年纪范围打印`成年`或者`未成年`,如果年龄不在正常范围内(0~150)打印`这不是人!`。

   age = eval(input('输入年龄:'))
   if age < 0 or age > 150:
       print('这不是人')
   elif age >= 18:
       print('成年')
   else:
       print('未成年')

3. 输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息`a-b的结果不是奇数`。

   a = eval(input('输入a:'))
   b = eval(input('输入b:'))
   if (a - b) % 2 != 0:
       print(a - b)
   else:
       print('a-b的结果不是奇数')

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

   for i in range(0, 101, 3):
        print(i, end=',')

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

   for i in range(100, 201):
       if (i % 10 % 3 == 0) or (i // 10 % 10 % 3 == 0):
           print(i, end=',')

6. 使用for循环统计100~200中十位数是5的数的个数。

   count = 0
   for i in range(100, 201):
       if i // 10 % 10 == 5:
           count += 1
   print(count)

7. 使用for循环打印50~150中所有能被3整除但是不能被5整除的数。

   for i in range(50, 151):
       if i % 3 == 0 and i % 5 != 0:
           print(i, end=',')

8. 使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和。

   count_sum = 0
   for i in range(50, 151):
       if i % 3 == 0 and i % 5 != 0:
           count_sum += i
   print(count_sum)

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

   count = 0
   for i in range(101):
       if i % 10 == 2 and i % 3 == 0:
           count += 1
   print(count)


# 进阶题

1. 输入任意一个正整数,求他是几位数?(注意: 不能使用字符串,只能用循环)

   num = eval(input('输入数字:'))
   count = 0
   flag = 1
   while True:
       if num // 10 ** (flag) == 0:
           count += 1
           break
       else:
           count += 1
           flag += 1
   print('结果是{0}位数'.format(count))

2. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是⼀个⽔仙花数,因为 1³ + 5³ + 3³ 等于153for i in range(100, 1000):
       if (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3 == i:
           print(i, end=',')

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

   num = eval(input('输入数字:'))
   count = 0
   for i in range(2, int(num ** 0.5) + 1):
       if i != num and num % i == 0:
           count += 1
   if count == 0:
       print('是素数')
   else:
       print('不是素数')

4. 输出9*9口诀。

   for i in range(1, 10):
       for j in range(1, i+1):
           print('{0} x {1} = {2}'.format(j, i, i*j), end='\t')
       print()

5. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?

   max_bignum = 100 // 3
   max_midnum = 100 // 2
   max_smallnum = int(100 // 0.5)

   for i in range(max_bignum + 1):
       for j in range(max_midnum + 1):
           for k in range(max_smallnum + 1):
               if i + j + k == 100 and i * 3 + j * 2 + k * 0.5 == 100:
                   print('有大马{0}匹,中马{1}匹,小马{2}匹'.format(i, j, k))