Demo31 打印空心菱形 II
n = eval(input("请输入需要打印的行数:"))
for i in range(1,n+1):
for k in range(abs(n // 2 + 1 - i)):
print("",end = " ")
for j in range(1,n + 1):
if j <= i and i + j <= n + 1:
if j == 1 or j == i or j + i == n + 1:
print("*",end = " ")
else:
print(" ",end = " ")
print()
Demo32 打印菱形 III
python
n = eval(input("请输入需要打印的行数:"))
for i in range(1, n + 1):
for k in range(abs(n // 2 + 1 - i)):
print(" ", end="")
for j in range(1, n + 1):
if i <= n // 2 + 1:
if abs(n // 2 + 1 - i) + j <= n and j <= i * 2 - 1:
print("*", end="")
if i > n // 2 + 1:
if i + j <= n + abs(n // 2 + 1) - abs(n // 2 + 1 -i):
print("*", end = "")
print(
Demo33 猜数字
题目描述
计算机随机生成一个 [0,100] 之间的整数,程序提示用户连续地输入数字直到它与那个随机生成的数字相同
对于用户输入的数字,程序会提示它是过高还是过低
python
"""
import random
random.randint(0,100) //随机产生一个0-100的任意一个整数
猜数字
"""
import random
randNum = random.randint(0,100)
while True:
UserNum = eval(input())
if UserNum < randNum:
print("小了")
elif UserNum > randNum:
print("大了")
else:
print("猜对了")
break
Demo34 最大公约数 I
题目描述
输入两个正整数,计算其最大公约数,例如 4 和 2 的最大公约数是 2 , 16 和 24 的最大公约数是 8
python
n,m = eval(input())
min_num = min(num1,num2)
for num in range(min_num,0,-1):
if num1 % == 0 and num2 % num ==0:
print(num)
break
Demo35 判断素数
题目描述
一个大于 1 的整数如果只能被正整数 1 和它本身整除,则它就是素数,例如 2 、 3 、 5 和 7 都是素数,而 4 、
6 、 8 、 9 则不是
输入输出描述
输入一个大于 1 的正整数
输出 Yes 表示该数字是素数,否则输出 No
python
num = eval(input("请输入一个大于1的正整数:"))
#哨兵:监控状态变化
flag = True #默认是素数
for i in range(2, num // 2 + 1):
if num % i == 0:
flag = False
break
if flag:
print("Yes")
else:
print("No")
Demo36 最小公倍数
题目描述
输入两个正整数,计算其最小公倍数,例如 4 和 2 的最小公倍数是 4 , 3 和 5 的最小公倍数是 15
python
num1, num2 = eval(input("请输入两个正整数:"))
maxNum = max(num1, num2)
for i in range(maxNum, num1 * num2 + 1):
if i % num1 == 0 and i % num2 == 0:
print("最小公倍数为",i)
break
Demo37 整数的素因子
题目描述
输入一个正整数,然后找出它所有的最小因子,也称之为素因子
python
#整数的素因子
num = eval(input("请输入一个正整数:"))
while num != 1:
for i in range(2, num + 1):
if num % i == 0:
print(i,end=" ")
num //= i
break
Demo38 完全数
题目描述
如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数
例如 6 = 3 + 2 + 1 , 28 = 14 + 7 + 4 + 2 + 1
输入输出描述
输入一个正整数
输出该数是否为完全数
python
num = eval(input("请输入一个正整数:"))
sum = 0
for i in range(1, num // 2 + 1):
if num % i == 0:
sum += i
if sum == num: #计算正因子之和是否等于输入数字
print("Yes")
else:
print("No")
Demo39 前 50 个素数
题目描述
打印前 50 个素数,每打印 10 个素数换行
python
#打印前50个素数
num = 2
count = 0
while count < 50: #设定条件
flag = True #设定哨兵
for n in range(2, num // 2 + 1):
if num % n == 0:
flag = False
break
if flag:
print(num, end = "\t")
count += 1
if count % 10 == 0:
print()
num += 1
Demo40 计算 π
题目描述
你可以使用下面的数列近似计算 π
当 i 越大时,计算结果越近似于 π
python
#求e的值
import math
ite = eval(input("请输入迭代次数:"))
e = 1#初始化
for i in range(1,ite+1):
result = math.factorial(i)#利用Python标准库中的函数,用于计算给定整数的阶乘
e += 1 / result#加上当前迭代次数的阶乘的倒数
print(e)
Demo42 剪刀石头布 II
题目描述
延伸【 Demo21 剪刀石头布 I 】的问题,利用循环将程序改为,计算机和电脑谁先赢三次,谁就是终极胜利者
Demo43 组合问题 I
题目描述
在数字范围 [1,7] 之间,任意选择两个不相同的数作为一个组合,输出每一组组合,并统计所有组合的个数
注:组合( a , b )与组合( b , a )算同一种组合,只记录一次
python
#组合问题1
count = 0
for i in range(1,8):
for j in range(i+1,8):
print(f"组合 ({i}, {j})")
count += 1
print("共有组合: ", count)
Demo44 组合问题 II
题目描述
有 1 、 2 、 3 、 4 这个四个数字,能组成多少个互不相同且无重复数字的三位数?分别又是多少
python
#组合问题2
count = 0
for i in range(1, 5):
bai = i
for j in range(1, 5):
if i != j: # 第二位数与第一位数不相等
shi = j
for k in range(1, 5):
if k != i and k != j: # 第三位数与第一位数和第二位数都不相等
ge = k
print(bai * 100 + shi * 10 + ge)
count += 1
print("组合个数为", count)
Demo45 水仙花数
题目描述
水仙花数,是一个三位数,且这个数的个位、十位和百位的立方和等于该数字本身
python
for i in range(1,10):
for j in range(0,10):
for k in range(0,10):
if i * 100 + j * 10 + k == i ** 3 + j ** 3 + k ** 3:
print(i * 100 + j * 10 +k)
Demo46 青蛙跳台阶
题目描述
一只青蛙,一次可以跳一个台阶或者两个台阶,现有 n 个台阶,问该青蛙有多少种不同的跳法?
例如:两个台阶,有两种跳法( 1+1 , 2 );四个台阶,有五种跳法( 1+1+1+1 , 2+1+1 , 1+2+1 ,
1+1+2 , 2+2 )
python
#青蛙跳台阶
n = eval(input())
if n == 1 or n == 2:
print(n)
else:
a = 1
b = 2
c = 0
for i in range(3, n+1):
c = a + b
a = b
b = c
print(c)
Demo47 堆叠相加
题目描述
现有堆叠相加模式
例如:a+aa+aaa+aaaa....
2+22+222+2222+22222,其中 a 为 2 ,且有 5 组数字
python
#堆叠相加:如:3 4 >>> 3 + 33 + 333 + 3333
a,n = eval(input())
sum = 0
num = 0
for i in range(n):
num = num * 10 + a # 2 22 222
sum += num #2 24 246
print(sum)
Demo48 十进制转二进制
python
s = ""
num = int(input("请输入一个十进制数:"))
while num != 0:
y = num % 2
s = str(y) + s
num = num // 2
print(s)
Demo49 二进制转十进制
python
sum = 0
n = input("请输入一个二进制数字:")
for i in range(len(n)-1, -1, -1):
num = int(n[i])
sum += num * (2 ** (len(n) - 1 - i))
print(sum
Demo50 十进制转十六进制
python
#十转十六进制
s=""
num = eval(input("请输入一个十进制数:"))
while num != 0:
y = num % 16
if y >= 10:
y = chr(ord("A") + y - 10)
s=str(y)+ s
num = num //16
print(s)
Demo51 16进制转十进制
python
"""
十六转10
1e1b9>>>>123321
a=10 b=11 c=12 d=13 e=14 f=15
1*16**5 + 14*16**4 +1*16**3+ 11*16**2+9*16**1
"""
y = input("请输入一个16进制的数字:")
sum = 0
for i in range(len(y) - 1,- 1,- 1):
if int (y[i],16) >= 10:
num = ord(y[i]) + - ord('a') + 10
else:
num = int (y[i])
sum += num * (16**(len(y) - 1 - i))
print(sum)
Demo52 最长公共前缀
题目描述
给定两个字符串 s1 和 s2 ,求两个字符串最长的公共前缀串,字符区分大小写
python
#最长公共前缀
s1 = (input("请输入第一个字符串:"))
s2 = (input("请输入第二个字符串:"))
strSame = ""
minLen = min((len(s1), len(s2)))
for i in range(minLen):
if s1[i] == s2[i]:
strSame += s1[i]
print(strSame)
Demo53 子串出现的次数
题目描述
给定两个字符串 s1 和 s2 ,求 s2 在 s1 中出现的次数,字符区分大小写,已匹配的字符不计入下一次匹配
输入输出描述
输入两行字符串,分别为 s1 和 s2 , s2 的长度小于等于 s1
输出 s2 在 s1 中出现的次数
python
#子串出现的次数
s1 = (input("请输入父字符串:"))
s2 = (input("请输入子字符串:"))
count = 0
for i in range(0, len(s1),len(s2)):
if s1[i : i + len(s2)] == s2:
count += 1
print(count)
Demo54 最长公共子串
题目描述
给定两个字符串 s1 和 s2 ,求 s1 与 s2 之间的最长公共子串 ,区分大小写
Demo55 检测密码
题目描述
一些网站会给密码强加一些规则:
( 1 )密码必须至少有 8 个字符
( 2 )密码只能包含英文字母和数字
( 3 )密码应该至少包含两个数字
( 4 )密码应该至少包含两个大写字母
如果密码符合规则,输出 Yes ;否则输出 No
Demo56 回文素数
题目描述
回文素数是指一个数既是素数又是回文数,例如 131 既是素数也是回文数
输出显示前 100 个回文素数,每行显示 10 个
Demo57 反素数
题目描述
反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如 17 和 71 都是素数但不是回文数,且反转后依旧是素数
输出显示前 100 个反素数,每行显示 10 个
Demo58 双素数
题目描述
双素数是指一对差值为 2 的素数,例如 3 和 5 就是一对双素数, 5 和 7 也是一对双素数
输出显示小于 1000 的双素数
python
def is_prime(n): # 判断是否为素数
if n<= 1:
return False
for i in range(2,n):
if n % i == 0:
return False
return True
for i in range(1,1000):
if is_prime(i)and is_prime(i + 2): #判断是否为双素数
print(i,"和"i +2,"是双素数")
Demo59 梅森素数
如果一个素数可以写成
的形式,其中 p 是某个正整数,那么这个素数就称作梅森素数
输出 p ≤ 31 的所有梅森素数
Demo60 平方根的近似求法
有几种实现开平方的技术,其中一个称为巴比伦法
它通过使用下面公式的反复计算近似地得到: 当 nextGuess 和 lastGuess 几乎相同时, nextGuess 就是平方根的近似值
lastGuess初始值为 1 ,如果 nextGuess 和 lastGuess 的差值小于一个很小的数,比如 0.0001 ,就可以认为nextGuess 是 n 的平方根的近似值;否则, nextGuess 成为下一次计算的 lastGuess ,近似过程继续执行
编写代码,求解 n 的平方根的近似值
不会写