【程序 1】
题目:有 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
if __name__ == '__main__':
count = 0
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
#if(i!=j and j!=k and k!=i):
if (i!=j) and (j!=k) and (k!=i):
count = count +1
num = i*100 + j*10 + k
print(num)
#print('{}'.format(i) + '{}'.format(j) + '{}'.format(k))
print(count)
使用 permutations函数
import itertools
if __name__ == '__main__':
items = "1234"
count = 0
for item in itertools.permutations(items, 3):
count += 1
if count % 4:
print("".join(item), end=" | ")
else:
print("".join(item))
print(count)
【程序 3】
题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?
import math
if __name__ == '__main__':
for i in range(100000):
x = int(math.sqrt(i + 100))
y = int(math.sqrt(i + 168))
if (x * x == (i + 100)) and (y * y == (i + 168)):
print(i)
for i in range(100000):
if math.sqrt(i + 100) - math.floor(math.sqrt(i + 100)) == 0:
if math.sqrt(i + 168) - math.floor(math.sqrt(i + 168)) == 0:
print(i)
【程序 4】
题目:输入某年某月某日,判断这一天是这一年的第几天?
注意:闰年:能被4整除但是不能被一百整除 2、能被四百整除。
闰年的2月份有29天,平年的2月份只有28天。
if __name__ == '__main__':
year = int(input("please input year:"))
month = int(input("please input month:"))
day = int(input("please input day:"))
sum = 0
mon = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
if 0 <= month <= 12:
sum = sum + mon[month - 1]
else:
print("month error!")
sum = sum + day
if (year % 400 == 0) or ((year % 100 != 0) and (year % 4 == 0)):
if month > 2:
sum = sum + 1
print("it is %dth day.", sum)
【程序 5】
题目:输入三个整数 x,y,z,请把这三个数由小到大输出。
if __name__ == '__main__':
x = int(input("please input x:"))
y = int(input("please input y:"))
z = int(input("please input z:"))
if(x>y):
if(y>z):
print(z,y,x);
else:
if(x>z):
print(y,z,x);
else:
print(y,x,z);
else:
if(x>z):
print(z,x,y);
else:
if(z>y):
print(x,y,z);
else:
print(x,z,y);
#方法二
if y > x:
if z > y:
z, x = x, z
else:
if x > z:
y, x = x, y
else:
x, y, z = y, z, x
else:
if z > x:
x, y, z = z, x, y
else:
if z > y:
z, y = y, z
print(z, y, x)
【程序 8】
题目:输出 9*9 口诀表。
if __name__ == '__main__':
for i in range(1, 10):
for j in range(1, i+1):
print("{0}*{1}={2:<4}".format(i, j, i*j), end='')
print()
print()
#方式二
thisList = [0] * 9
for inedx in range(9):
thisList[inedx] = list('0' for _ in range(9))
for i in range(1, 10):
for j in range(1, i + 1):
thisList[i - 1][j - 1] = "{0}*{1}={2:<4}".format(j, i, i * j)
for i in range(9):
for j in range(9):
if (thisList[j][i] != '0'):
print(thisList[j][i], end='')
elif (thisList[j][i] == '0'):
print(str(' ' * 8), end='')
print()
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*6=36 6*7=42 6*8=48 6*9=54
7*7=49 7*8=56 7*9=63
8*8=64 8*9=72
9*9=81
【程序 11】
题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
import copy
if __name__ == '__main__':
# 3个月 1成熟 0大 0中 1小
# 4个月 1成熟 0大 1中 1小
# 5个月 1成熟 1大 1中 1小
# 6个月 2成熟 1大 1中 2小
# 7个月 3成熟 1大 2中 3小
# 8个月 4成熟 2大 3中 4小
# 9个月 6成熟 3大 4中 6小
list = [1, 0, 0, 0]
list1 = [0, 0, 0, 0]
sum1 = 0
x = int(input("请输入月份:"))
for i in range(x + 1):
if i < 3:
sum1 = 1
else:
list1[2] = list[3]
list1[1] = list[2]
list1[0] = list[1] + list[0]
list1[3] = list1[0]
list = copy.copy(list1)
print("list1:", list1)
sum1 = sum(list1)
print("兔子总数为:", sum1)
#斐波那契数列
month = int(input('繁殖几个月?: '))
month_1 = 1
month_2 = 0
month_3 = 0
month_elder = 0
for i in range(month):
month_1, month_2, month_3, month_elder = month_elder + month_3, month_1, month_2, month_elder + month_3
print('第%d个月共' % (i + 1), month_1 + month_2 + month_3 + month_elder, '对兔子')
【程序 12】
题目:判断 101-200 之间有多少个素数,并输出所有素数。
素数的定义:只能被1以及自身整除的数
注意!!若x<2,那么x一定不是素数!!,因为最小的素数是2!
if __name__ == '__main__':
l = []
for i in range(101, 200):
for j in range(2, i - 1):
#能被除了一和自身的数整除,说明不是素数
if i % j == 0:
break
else:
l.append(i)
print(l)
print("总数为:%d" % len(l))
【程序 13】
题目:打印出所有的“水仙花数” ,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: 153 是一个“水仙花数” ,因为 153=1 的三次方+5的三次方+3的三次方。
if __name__ == '__main__':
count = 0
for i in range(100, 1000):
f = i
# 提取百位数
a = int(f / 100)
# 提取十位数
f -= a * 100
b = int(f / 10)
# 提取个位数
c = f - b * 10
# 判断是否是水仙花数
if a ** 3 + b ** 3 + c ** 3 == i:
print(i,"=","{}**3 + {}**3 + {}**3".format(a,b,c))
count += 1
print("共有 %d 个水仙花数" % count)
【程序 14】
题目:将一个正整数分解质因数。例如:输入 90, 打印出 90=233*5 。
def prime_factor(n):
result = []
if n <=0:
return '请输入为正整数!!!'
if n == 1:
return '1无法被分解'
print(n, '=', end="")
for i in range(2, n + 1):
while n % i == 0: # 能除尽就继续除,除不尽就跳到 for 循环除下一个数
if i == n:
result.append(i)
print(i, end="")
break
result.append(i)
print(i, end="*")
n = n / i
print('')
return result
if __name__ == '__main__':
n = int(input("请输入一个正整数:"))
print(prime_factor(n))
【程序 19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如 6=1+2+3。编程找出 1000 以内的所有完数。
因子就是所有可以整除这个数的数,不包括这个数自身.因数包括这个数本身而因子不包括
from functools import reduce
def factor(num):
#target=int(num)
res=set()
for i in range(1,num):
if num%i==0:
res.add(i)
res.add(num/i)
return res
if __name__ == '__main__':
#方法1
for m in range(2,1001):
L = [1]
for n in range(2,int(m/2)+1):
if m%n==0:
L.append(n)
if m == reduce(lambda x,y:x+y,L):
print(m)
print(L)
print("------方法二------------")
#方法二
for i in range(2,1001):
factors = []
for j in range(1,i):
if i%j == 0:
factors.append(j)
if sum(factors) == i:
print(i)
print(factors)
print("------方法三-----------")
#方法三
for i in range(2,1001):
if i==sum(factor(i))-i:
print(i)
【程序 20】
题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高?
if __name__ == '__main__':
poll = 100
L = []
a = int(input("请输入次数:"))
L.append(poll)
for i in range(1,a):
poll = round(poll/2,2)
print("第{}次,{}米".format(i,poll))
L.append(poll*2)
poll = round(poll / 2,2)
L.append(poll)
print("最后一次,{}米".format(poll))
print("{}次后,共计{}米".format(a,sum(L)))
【程序 25】
题目:求 1+2!+3!+…+20! 的和
def func(x):
if x == 1 or x == 0:
return 1
else:
return x * func(x-1)
if __name__ == '__main__':
n = 0
s = 0
t = 1
for n in range(1, 21):
t *= n
s += t
print('1! + 2! + 3! + ... + 20! = %d' % s)
# 递归法
sum = 0
for i in range(1, 21):
sum += func(i)
print(f"1+2!+3!+...+20! = {sum}")
【程序 30】
题目:一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。
if __name__ == '__main__':
num = input("请输入一个五位数")
x = str(num)
if len(x) != 5:
print("{}不是一个五位数".format(num))
else:
flag = True
for i in range(len(x) // 2):
if x[i] != x[-i - 1]:
flag = False
break
if flag:
print("%s 是一个回文数!" % num)
else:
print("%s 不是一个回文数!" % num)
#方法二
a = num[:1]
b = num[1:2]
c = num[2:3]
d = num[3:4]
f = num[4:5]
if a == f and b == d:
print("是回文数")
else:
print("不是")
【程序 27】
题目:利用递归函数调用方式,将所输入的一个单词或句子,以相反顺序打印出来。
def f(x):
if x == -1:
return ''
else:
return str[x] + f(x - 1)
if __name__ == '__main__':
str = input('请输入若干字符:')
print(f(len(str) - 1))
【程序 33】
题目:学习 gotoxy() 与 clrscr() 函数。
gotoxy()
和 clrscr()
是两个在早期计算机编程中常见的文本界面操作函数,通常用于在文本模式下移动光标和清除屏幕内容。这两个函数在现代编程中不太常见,因为大多数编程任务都是在图形用户界面中完成的。然而,如果你正在使用一种需要控制文本界面的编程语言,这些函数可能会有用。
下面是它们的简单示例,以及它们如何在Python中使用。
gotoxy()
函数
gotoxy()
函数通常用于在文本模式下移动光标到指定的行和列位置。具体的实现方式可能因编程环境而异。
在Python中,你可以使用 ANSI 转义序列来实现类似的效果。以下是一个使用Python的示例代码:
import sys
def gotoxy(x, y):
print(f"\033[{y};{x}H", end='')
# 使用示例
gotoxy(10, 5) # 将光标移动到第 10 行,第 5 列
print("Hello, World!")
这里使用 ANSI 转义序列 "\033[y;xH"
来移动光标到指定位置,其中 x
和 y
分别代表行和列。
clrscr()` 函数
clrscr()
函数通常用于清空屏幕上的所有内容。在Python中,你可以使用以下方法来清空屏幕:
import os
def clrscr():
if os.name == 'posix':
os.system('clear') # 适用于 Linux 和 macOS
elif os.name == 'nt':
os.system('cls') # 适用于 Windows
# 使用示例
clrscr()
【程序 69】
题目:有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3的人退出圈子,问最后留下的是原来第几号的那位。
这是一个经典的约瑟夫问题,可以使用循环链表的方式来解决。下面是Python代码示例来求解这个问题:
def find_survivor(n):
circle = list(range(1, n + 1))
index = 0 # 用于追踪当前位置
while len(circle) > 1:
index = (index + 2) % len(circle) # 每次报数到3,移动两位
circle.pop(index)
return circle[0]
n = int(input("请输入总人数 n: "))
survivor = find_survivor(n)
print(f"最后留下的是原来第 {survivor} 号的那位。")
这段代码首先创建一个包含1到n的列表,表示n个人,然后使用循环模拟报数的过程,每次报数到3,就从列表中删除掉该人。最后,当只剩下一个人时,就是最后留下的人。文章来源:https://www.toymoban.com/news/detail-475099.html
这个问题的解法利用了循环链表的思想,确保每次删除的人都是相对于前一个人的下一个人。文章来源地址https://www.toymoban.com/news/detail-475099.html
到了这里,关于Python练习题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!