下面整理了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))
注:以上代码供大家一起学习使用,不一定是最优解法,如果有更好的思路和方法,欢迎在评论区留言交流,让大家一起学习,一起进步!!!