20个简单的python代码练习

下面整理了20个简单的python代码练习,供大家学习交流使用,轻易上手,复制下来就能用!!!

废话不多说,直奔主题

1.输入一个不超过5位的正整数,输出其逆数。例如输入12345,输出应为54321。

a = input('请输入一个不超过5位的正整数:')
print('其逆数为:', a[::-1])

注:该代码使用了列表的切片和反转操作,首先将这个数的每个位上的数字存储到一个列表中,然后通过列表的反转来得到逆数。

2.计算1+2+3+4+……+n的值,n是从键盘输入的自然数:

n = int(input('请输入一个自然数:'))
add = 0
for i in range(1, n + 1):
    add = add + i
print('1+2+3+4+……+n的值为:', add)

3.辆卡车违反交通规则,撞⼈后逃跑。现场有三⼈⽬击事件,但都没有记住车号,只记下车号的⼀些特征。 甲说:牌照的前两位数字是相同的;⼄说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是⼀个整数的平⽅。请根据以上线索找出车号。

lst = []
for i in range(1000, 10000):
    if (i // 1000 == (i % 1000) // 100) and ((i % 100) // 10 == i % 10):
        lst.append(i)
for i in lst:
    for j in range(33, 99):
        if i == j * j:
            print(i)

注:这个题目的核心就是找一个满足以下条件的四位数:1.千位和百位相同;2.十位和个位相同;3.这个数是一个整数的平方。

4.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些?

lst = []
for i in range(100, 1000):
    if i % 10 == 6 and i % 3 == 0 and i % 5 != 0:
        lst.append(i)
print('共有' + str(len(lst)) + '个, 分别是:')
for i in lst:
    print(i)

注:整除可以通过对数字取模(求余)来得到,当取模的值为0时,那么便是可以被整除的。

5.输入某三角形的三个边的长度,判断出这是什么三角形(等腰、等边、任意、或不能构成)

a, b, c = map(int, input('请输入三条边的长度:').split())
if a == b == c:
    print('等边三角形')
elif a == b or b == c or a == c:
    print('等腰三角形')
elif a + b > c and a + c > b and b + c > a:
    print('任意三角形')
else:
    print('不能构成三角形')

6.输入10个数,分别统计其中正数、负数、零的个数,并求出这10个数的和、平均值。

lst = list(map(int, input('请输入10个数:').split()))
lst2 = []
lst3 = []
for i in lst:
    if i > 0:
        lst2.append(i)
    elif i < 0:
        lst3.append(i)
print('正数的个数为:', len(lst2))
print('负数的个数为:', len(lst3))
print('零的个数为:', 10 - len(lst2) - len(lst3))
sum = 0
for i in lst:
    sum = sum + i
print('这10个数的和为:', sum)
print('这10个数的平均值为:', sum // 10)

7.先随机产生N个三位自然数输出,然后再输出其中同时是3,5,7的倍数的数。设N为100

import random

N = 100
lst = []
print('随机自然数')
for i in range(N):
    lst.append(random.randint(100, 999))
    print(random.randint(100, 999))
print('同时是3、5、7的倍数')
for i in lst:
    # 第一种方法:
    # if i % 3 == 0 and i % 5 == 0 and i % 7 == 0:
    #     print(i)
    # 第二种方法
    for j in [3, 5, 7]:
        if i % j != 0:
            break
    else:
        print(i)

8.找出100~200中的完全平方数

for i in range(100, 201):
    if (i ** 0.5) % 1 == 0:
        print(i)

注:完全平方数表示这个数是一个整数的平方,比如100是10的平方,我们称100为平方数。

9.随机产生N个大写字母输出,然后统计其中共有多少个元音字符。设N为200

def generate_uppercase_letters(n):
    vowels = ['A', 'E', 'I', 'O', 'U']
    count_vowels = 0

    letters = [random.choice('ABCDEFGHIJKLMNOPQRSTUVWXYZ') for _ in range(n)]

    for letter in letters:
        if letter in vowels:
            count_vowels += 1

    return letters, count_vowels


N = 200
letters, count_vowels = generate_uppercase_letters(N)

print(f"随机生成的大写字母: {letters}")
print(f"元音字符的数量: {count_vowels}")

10.百钱百鸡问题:百钱买百鸡,鸡翁一值钱三,鸡母一值钱二,鸡雏三值钱一,问鸡翁、鸡母、鸡雏各几何?

for a in range(1, 100):
    for b in range(1, 100 - a + 1):
        for c in range(1, 100 - a - b + 1):
            if a + b + c == 100 and 3 * a + 2 * b + c / 3 == 100:
                print(f"鸡翁:{a},鸡母:{b},鸡雏:{c}")

注:这个题目的输出结果中并非只有一个答案,这是因为这个题目有多种购买方式,都可以满足题目条件,为开放性答案。

11.计算:1/2+1/4+……+1/n,设n是由键盘输入的正偶数

n = int(input('请输入一个正偶数:'))
if n % 2 == 0 and n > 0:
    add = 0
    for i in range(2, n + 1, 2):
        add = add + 1 / i
    print('计算结果为:', add)
else:
    print('输入错误,请输入一个正偶数!')

12.计算: 1/2-2/3+3/4——4/5……前一百项

def every(n):
    re = (-1) ** (n + 1) * n / (n + 1)
    return re


add = 0
for i in range(1, 101):
    add = add + every(i)

print('计算结果为:', add)

13.从终端输入3个数a、b、c,按从大到小的顺序输出

a, b, c = map(int, input('请输入三个数:').split())
lst = sorted([a, b, c], reverse=True)
for i in lst:
    print(i)

14.公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:甲说:“乙没有偷,是丁偷的”, 乙说“我没有偷,是丙偷的”,丙说“甲没有偷,是乙偷的”,丁说“我没有偷”。

lst5 = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
lst = []
for i in lst5:
    if (i[1] == 0 and i[3] == 1) or (i[1] == 1 and i[3] == 0):
        if (i[1] == 0 and i[2] == 1) or (i[1] == 1 and i[2] == 0):
            if (i[0] == 0 and i[1] == 1) or (i[0] == 1 and i[1] == 0):
                lst = i
if lst == [1, 0, 0, 0]:
    print('甲是窃贼')
elif lst == [0, 1, 0, 0]:
    print('乙是窃贼')
elif lst == [0, 0, 1, 0]:
    print('丙是窃贼')
else:
    print('丁是窃贼')

注:其中的1表示窃贼,0表示非窃贼,一个由四人组成的列表中,依次是:甲、乙、丙、丁。

15.求s=a+aa+aaa+...+aa...a的值,其中a是1~9之间的一个数字,表达式的项数从键盘输入(设不超过10项)。例如2+22+222+2222+22222(此时共有5个数相加,几个数相加由键盘控制)

def add(a, b):
    re = 0
    sum = 0
    for i in range(1, b + 1):
        re = re + a * 10 ** (i - 1)
        sum = sum + re
    return sum


m = int(input('请输入一个1~9之间的数字:'))
n = int(input('请输入一个正整数:'))
print(add(m, n))

16.设N是一个四位数,它的9倍正好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。例如:1234的反序数就是4321

def anti(a):
    a = str(a)
    b = a[::-1]
    return int(b)


for i in range(1000, 1111):
    if i * 9 == anti(i):
        print(i)

注:这个题目和第1题思路是一样的。但是区别在于它的反序数是原数的9倍,那么,要找的数字范围肯定在1000和1111之间,由于不可能是1111本身,所以也将1111从这个范围内去掉了。

17.爱因斯坦出了一道这样的数学题;有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶。只有每次跨7阶,最后才正好一阶都不剩,请问这条阶梯至少有多少阶?

for i in range(1, 10000):
    if i % 2 == 1 and i % 3 == 2 and i % 5 == 4 and i % 6 == 5 and i % 7 == 0:
        print(i)
        break

注:由于这个题目的需求为非确定值,而要求的答案是一个确定值,那么我们就可以随意设置寻找范围,从小到大,依次寻找,一旦找到,退出循环,得到的就是那个能够满足要求的最小值。

18.求1+12+123+……前n项的和,n由键盘输入。

n = int(input('请输入一个正整数:'))
k = ''
sum = 0
for i in range(1, n + 1):
    k = k + str(i)
    sum = sum + int(k)
print(sum)

19.小学生智商测试。让电脑随机出十道100以内整数的加法题(10分/题),小学生从键盘回答答案,统计小学生最后得分

import random

total = 0
for i in range(10):
    m, n = random.randint(1, 100), random.randint(1, 100)
    print(str(m) + '+' + str(n) + '=')
    a = input('请输入答案:')
    if a == str(m + n):
        total = total + 10
print('得分:', total)

20.斐氏数列是公元13世纪数学家斐波那契发明的。即:1,1,2,3,5,8,13,21,34,55,89,……,输出其前15项

def fb(n):
    # 斐波那契数列
    if n == 1 or n == 2:
        return 1
    else:
        return fb(n - 1) + fb(n - 2)


for i in range(1, 16):
    print(fb(i))

注:以上代码供大家一起学习使用,不一定是最优解法,如果有更好的思路和方法,欢迎在评论区留言交流,让大家一起学习,一起进步!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值