python基础20道小练习

python基础20道小练习

  • 1. 输入三个数,将这三个数从小到大输出
  • 2. 分数判断
  • 3. 猜数字游戏
  • 4. 一张纸厚度约为001mm,对折多少次后可以达到珠穆朗玛峰的高度?
  • 5. 短信计费
  • 6. 水仙花数
  • 7. 鸡兔有35头,94足,求鸡和兔分别多少只?
  • 8. 反转一个三位数
  • 9. 素数
  • 10. 直角三角形
  • 11. 等腰三角形
  • 12. 乘法口诀表
  • 13. 猴子摘桃
  • 14. 小球问题
  • 15. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前 20 项之和。
  • 16. 世纪闰年和普通闰年
  • 17. 判断输入的日期是今天的第几天
  • 18. 将一个正整数分解质因数
  • 19. 完数
  • 20. 回文数

1. 输入三个数,将这三个数从小到大输出

a = int(input("请输入第1个正整数:"))
b = int(input("请输入第2个正整数:"))
c = int(input("请输入第3个正整数:"))
if(a > b):
    a = b
if(a > c):
    a = c
print(a)

python输入三个数,将这三个数从小到大输出

2. 分数判断

score = int(input('输入分数:'))
if score >= 90:
    grade = '优秀'
elif score >= 80:
    grade = '良好'
elif score >= 60:
    grade = '中等'
else:
    grade = '差'
 
print('%d分 %s' % (score,grade))

3. 猜数字游戏

数字猜谜游戏:

猜大了提示:猜的数字大了
猜小了提示:猜的数字小了
猜正确停止

分析:猜正确停止,那就是使用到while循环了。

number = 5
a = 0
print('欢迎进入猜数字游戏')
while a != number:
    a = int(input('请输入你要猜的数字'))
    if a == number:
        print('恭喜你,猜对了')
    elif a < number:
        print('猜小了')
    elif a > number:
        print('猜大了')
    else:
        print('好好玩哦~')

python分支结构小案例

4. 一张纸厚度约为001mm,对折多少次后可以达到珠穆朗玛峰的高度?

i = 0.08
count = 0
while i <= 8844000:
    count += 1
    i *= 2
print('折'+str(count)+'次')

while循环

5. 短信计费

用手机发短信,一条短信资费为0.1元,但限定一条短信的内容在70个子以内(包括70个字)。
如果你一次所发送的短信超过了70个字,则会按照每70个字一条短信的限制把它分割成多条短信,假设已经知道你当月所发送的短信的次数与字数,试统计一下你当月的短信的总资费。

输入:
整数n,表示当月发送短信的总次数,接着n行每行一个整数,表示每次短信的字数。

输出:
当月短信总自费,单位为元,精确到小数点后1位。

import math # 导入模块
money = 0
a = []
b = int(input("请输入总次数:"))
for i in range(1,b+1):
   c = int(input("请输入第"+str(i)+"次的字数:"))
   a.append(c)

for x in  range (len(a)):
    if(a[x] <= 70):
      money += 1
    if(a[x] > 70):
      z = math.ceil(a[x] / 70)
      money += z 
print(money*0.1)

for循环

6. 水仙花数

判断一个三位数是否为水仙花数

a = eval(input("请输入一个数字"))
bw = a // 100  # 整除获得百位数("//" 表示整除,比如 3//2=1; "/" 表示浮点运算,比如3/2=1.5)
sw = a // 10 % 10  # 或者b = (i % 100) // 10
gw = a % 10
s = pow(gw, 3) + pow(sw, 3) + pow(bw, 3)
if (s == a):
    print(a, end="")
    print("是水仙花数!")
else:
    print(a, end="")
    print("不是水仙花数")

python水仙花数

7. 鸡兔有35头,94足,求鸡和兔分别多少只?

for j in range(36):
    for t in range(36):
        if (j * 2 + t * 4 == 94 and j + t == 35):
            print('有{}只鸡,有{}只兔'.format(j,t))

python穷举法

8. 反转一个三位数

a = int(input('请输入一个数字:'))
bw = a // 100
sw = a % 100 // 10
gw = a % 10
reverse = gw * 100 + sw * 10 + bw
print(reverse)

python反转一个三位数

9. 素数

def IsSu(m):
    if m == 1:
        return false
    for i in range(2,m): # 遍历2,3,4,5,6....m-1,都放在i中,如果m除i等于0 则为素数
        if m % i == 0:
            return False # 不是素数
        else:
            return True  #  是素数

while True:
    a = int(input("请输入一个素数:"))
    if IsSu(a):
        print("是素数")
    else:
        print("不是素数")

10. 直角三角形

for i in range(1,7):
    for j in range(i):
        print("*",end="")
    print()

11. 等腰三角形

for i in range(1,5):  # range(5),输出4行
    for j in range(1,4 - i + 1): # 空格数:行数减一,这里为什么加1?请注意range()的取值范围
        print(" ",end="")
    for j in range(1,i + 1): # 正着的数:行数
        print(j ,end="")
    for j in range(i-1,0,-1): # 倒着的数:行数减一
        print(j,end="")
    print()

12. 乘法口诀表

for i in range(1,10):
    for j in range(1,i+1):
        print(str(j) + "*" + str(i) + "=" + str(i*j),end=" ")
    print()
for i in range(1,10):
    for j in range(1,i+1):
        print('{}*{}={}'.format(j,i,(i*j)),end=' ')
    print()

13. 猴子摘桃

a = 1 # 第十天剩下桃子的数量
for i in range(9,0,-1):
    a = (a + 1)* 2
    print("猴子第"+str(i)+"天有"+str(a)+"个桃子")

14. 小球问题

一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下, 求它在第 10 次落地 时,共经过多少米?第 10 次反弹多高?

sum = 100
a = sum / 2
for i in range(2,11):
    sum += 2 * a
    a /= 2

print("共经过"+str(sum)+"米")
print("第 10 次反弹"+str(a)+"米")

15. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前 20 项之和。

a = 2
b = 1
c = 0
print("2/1")
for i in range(1,20):
    c = a + b
    b = a
    a = c
    print(str(a)+"/"+str(b))

16. 世纪闰年和普通闰年

year = int(input('请输入一个年份:'))
if(year % 4 == 0):
    if(year % 100 == 0):
        if(year % 400 == 0):
            print('{0}是世纪闰年'.format(year)) 
        else:
            print('{0}不是闰年'.format(year))
    else:
        print('{0}是普通闰年'.format(year))     
else:
    print('{0}不是闰年'.format(year))

17. 判断输入的日期是今天的第几天

year = int(input('请输入年份'))
month = int(input('请输入月份'))
day = int(input('请输入今天的日期'))
date = [31,29,31,30,31,30,31,31,30,31,30,31]
count = day # 这个月一共有多少天
if(year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0):
    print('{0}是闰年'.format(year))
    date[1] = 29
else:
    print('{0}不是闰年'.format(year))
    date[1] = 28

for i in range(month - 1):
    count += date[i]
x = date[month-1]
print('本月一共有{0}天'.format(x))
print('{0}年{1}月{2}日是今年的第{3}天'.format(year,month,day,count))

python判断闰年

18. 将一个正整数分解质因数

例如输入90,输出:90=233*5

对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>i,但n能被i整除,则应打印出i的值,并用n除以i的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被i整除,则用i+1作为i的值,重复执行第一步。

n = int(input("请输入一个数:"))
print(n,'=',end="")
i = 2
while i <= n:
    if i == n:
        print(i, end="")
        break
    elif n % i == 0:
        print(i, end="*")
        n = n / i
    else:
        i += 1

19. 完数

题目: 输出1000以内的完数,并统计完数的个数

一个数等于它的因子之和,这个数就被称为完数,例如:6 = 1 + 2 + 3,6的因子为:1,2,3

n = 0 # 完数个数
for a in range(1,1001):
    list=[]
    for b in range(1,a):
        if a % b == 0:  # 把因子找出来,放进列表中
            list.append(b)
    if a == sum(list):
      print(a)
      n +=1 
      
print("1000以内的完数有"+str(n)+"个")

20. 回文数

比如:123321,它们的第一位和最后一位都相同,第二位和倒数第二位相同

n = input("请输入数字")
a = 0
b = len(n)-1 # 长度减一,去掉中间的一个数字
flag = True
while a < b:
    if n[a] != n[b]: # 下标来判断是否相等
        print("不是回文数")
        flag = False
        break
    # print(a,b)
    a,b = a+1,b-1
if flag:
    print("是回文数")

你可能感兴趣的