31,
*
* *
* *
* *
*
用户输入菱形高度
n
,并打印出该高度下的菱形
输入输出描述
输入高度
n
,
n
为奇数
输出该高度的菱形
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, i + 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()
32,
*
* * *
* * * * *
* * *
*
用户输入菱形高度
n
,并打印出该高度下的菱形
输入输出描述
输入高度
n
,
n
为奇数
输出该高度的菱形
x = eval(input())
a = x // 2
b = x // 2 + 1
for n in range(-a, b):
for k in range(abs(n)):
print(" " , end = " ")
for i in range(1):
num = x - 2 * abs(n)
print("* "*num, end = " ")
print()
33.
计算机随机生成一个
[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
34.
输入两个正整数,计算其最大公约数,例如
4
和
2
的最大公约数是
2
,
16
和
24
的最大公约数是
8
输入输出描述
输入两个数字
输出最大公约数
a, b = eval(input())
minNum = min(a, b)
maxNum = max(a, b)
for i in range(minNum, 0, -1):
if minNum % i == 0 and maxNum % i == 0 :
print(i)
break
35.
题目描述
一个大于
1
的整数如果只能被正整数
1
和它本身整除,则它就是素数,例如
2
、
3
、
5
和
7
都是素数,而
4
、
6
、
8
、
9
则不是
输入输出描述
输入一个大于
1
的正整数
输出
Yes
表示该数字是素数,否则输出
No
n = eval(input())
flag = True
for i in range(2, n // 2):
if n % i == 0:
flag = False
print("No")
break
if flag:
print("Yes")
36.
输入两个正整数,计算其最小公倍数,例如
4
和
2
的最小公倍数是
4
,
3
和
5
的最小公倍数是
15
输入输出描述
输入两个正整数
输出最小公倍数
a, b = eval(input())
minNum = min(a, b)
maxNum = max(a, b)
#找最大公约数
for i in range(minNum, 0, -1):
if minNum % i == 0 and maxNum % i == 0 :
if i == minNum:
print(maxNum)
break
elif 1 < i < minNum:
n = (maxNum // i) * minNum
print(n)
break
else:
print(a * b)
37.
输入一个正整数,然后找出它所有的最小因子,也称之为素因子
输入输出描述
输入一个正整数
输出多行,每行输出一个素因子
n = eval(input())
i = 2
while n != 1:
if n % i == 0:
print(i ,end = " ")
n = n // i
else:
i += 1
38.
如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数
例如
6 = 3 + 2 + 1
,
28 = 14 + 7 + 4 + 2 + 1
输入输出描述
输入一个正整数
输出该数是否为完全数
num = eval(input())
sum = 0
for i in range(1, num // 2 + 1):
if num % i == 0:
sum = sum + i
if num == sum:
print("Yes")
else:
print("No")
39.打印前50个素数,每打印10个素数换行
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
40.
n = eval(input())
sum = 0
for i in range(1, n + 1):
a = ((-1) ** (i + 1)) / (2 * i - 1)
sum = sum + a
pi = 4 * sum
print(pi)
41.
n = eval(input())
num = 1
sum = 0
for i in range(1, n + 1):
num = num * i
sum = sum + 1 / num
Nsum = 1 + sum
print(Nsum)
42.
import random
computer_choice = random.randint(0, 2)
user = 0
com = 0
flag = True
while flag:
user_choice = int(input())
if user_choice == computer_choice:
pass
elif (user_choice == 0 and computer_choice == 2) or (user_choice == 1 and computer_choice == 0) or (user_choice == 2 and computer_choice == 1):
user = user + 1
else:
com = com + 1
if user == 3:
flag = False
print("用户赢")
elif com == 3:
flag = False
print("计算机赢")
43.
在数字范围
[1,7]
之间,任意选择两个不相同的数作为一个组合,输出每一组组合,并统计所有组合的个数
count = 0
for i in range(1, 8):
for j in range(i+1, 8):
count += 1
print( i, j, sep = "," )
print(count)
44.有1、2、3、4这个四个数字,能组成多少个互不相同且无重复数字的三位数?分别又是多少?
nums = [1, 2, 3, 4]
count = 0
for i in nums:
for j in nums:
if i == j:
continue
for k in nums:
if i == k or j == k:
continue
print(i * 100 + j * 10 + k)
count += 1
print(count)
45.编写程序,输出所有的水仙花数
for i in range(100, 1000):
bai = i // 100
shi = i // 10 % 10
ge = i % 10
if bai ** 3 + shi ** 3 + ge ** 3 == i:
print(i)
46.
一只青蛙,一次可以跳一个台阶或者两个台阶,现有
n
个台阶,问该青蛙有多少种不同的跳法?
例如:两个台阶,有两种跳法(
1+1
,
2
);四个台阶,有五种跳法(
1+1+1+1
,
2+1+1
,
1+2+1
,
1+1+2
,
2+2
)
n = eval(input())
if n == 1 or n == 2:
print(n)
else:
a = 1
b = 2
c = a + b
for n in range(n - 3):
a = b
b = c
c = a + b
print(c)
47.
a, n = eval(input())
num = 0
sum = 0
for i in range(n):
num = num * 10 + a
sum = sum + num
print(sum)
48.输入一个十进制正整数,输出其二进制形式
number = eval(input())
result = ""
while number > 0:
binary_digit = number % 2
result = str(binary_digit) + result
number = number // 2
print(result)
49.输入一个二进制字符串,输出其对应的十进制数字
n = eval(input())
#n = int(num)
i = 0
sum = 0
while n != 0:
i += 1
s = n % 10
n = n // 10
sum = sum + s * 2 ** (i - 1)
print(sum)
50.输入一个十进制正整数,输出其十六进制形式
num = eval(input())
s = ""
while num != 0:
y = num % 16
if y >= 10:
y = chr(ord('A') + y - 9)
s = str(y) + s
num = num // 16
print(s)
51.输入一个十六进制字符串,输出其对应的十进制数字
52.给定两个字符串 s1 和 s2 ,求两个字符串最长的公共前缀串,字符区分大小写
def longest_common_substring(s1, s2):
m = len(s1)
n = len(s2)
dp = [[0] * (n + 1) for _ in range(m + 1)]
max_len = 0
end = 0
for i in range(1, m + 1):
for j in range(1, n + 1):
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] > max_len:
max_len = dp[i][j]
end = i
lcs = s1[end - max_len: end]
return lcs
s1 = input().strip()
s2 = input().strip()
lcs = longest_common_substring(s1, s2)
print(lcs)
53.
def count_occurrences(s1, s2):
count = 0
index = 0
while True:
index = s1.find(s2, index)
if index == -1:
break
count += 1
index += len(s2)
return count
s1 = input().strip()
s2 = input().strip()
occurrences = count_occurrences(s1, s2)
print(occurrences)
54.
def longest_common_substring(s1, s2):
m = len(s1)
n = len(s2)
dp = [[0] * (n + 1) for _ in range(m + 1)]
max_len = 0
end = 0
for i in range(1, m + 1):
for j in range(1, n + 1):
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] > max_len:
max_len = dp[i][j]
end = i
lcs = s1[end - max_len: end]
return lcs
s1 = input().strip()
s2 = input().strip()
lcs = longest_common_substring(s1, s2)
print(lcs)
55.
password = input()
if len(password) < 8:
print("No")
else:
if not password.isalnum():
print("No")
else:
if sum(1 for c in password if c.isdigit()) < 2:
print("No")
else:
if sum(1 for c in password if c.isupper()) < 2:
print("No")
else:
print("Yes")
56.
回文素数是指一个数既是素数又是回文数,例如
131
既是素数也是回文数
输出显示前
100
个回文素数,每行显示
10
个
num = 2
count = 0
while count < 100:
flag1 = True
for n in range(2, num // 2 + 1):
if num % n == 0:
flag = False
break
if flag1:
str_num = str(num)
restr_num = str_num[::-1]
if str_num == restr_num and num > 100:
print(num, end = "\t")
count += 1
if count % 10 == 0:
print()
num += 1
57.
反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如
17
和
71
都是素数但不是回文数,且反转
后依旧是素数
输出显示前
100
个反素数,每行显示
10
个
num = 2
count = 0
while count < 100:
flag1 = True
flag2 = True
for n in range(2, num // 2 + 1):
if num % n == 0:
flag1 = False
break
str_num = str(num)
restr_num = str_num[::-1]
re_num = int(restr_num)
for i in range(2, re_num // 2 + 1):
if re_num % i == 0:
flag2 = False
break
if flag1 and flag2 and num > 10:
print(num, end = "\t")
count += 1
if count % 10 == 0:
print()
num += 1
58.
双素数是指一对差值为
2
的素数,例如
3
和
5
就是一对双素数,
5
和
7
也是一对双素数
输出显示小于
1000
的双素数
num1 = 2
count = 0
while count < 1000:
flag1 = True
flag2 = True
for n in range(2, num1 // 2 + 1):
if num1 % n == 0:
flag1 = False
break
for i in range(2, num1 // 2 + 1):
num2 = num1 + 2
if num2 % i == 0:
flag2 = False
break
if flag1 and flag2:
print(num1, end = "\t")
count += 1
if count % 10 == 0:
print()
num1 += 1
59.
num1 = 2
count = 0
p = 1
while p <= 31:
flag1 = True
for n in range(2, num1 // 2 + 1):
if num1 % n == 0:
flag1 = False
break
if flag1:
p = 1
num2 = 2 ** p - 1
while 2 ** p - 1 < num1:
p += 1
num2 = 2 ** p - 1
if num2 == num1:
print(num1, end = "\t")
num1 += 1
60.
n = eval(input())
last = 1.0
epsilon = 0.0001
while True:
new_last = (last + n / last) / 2
if abs(new_last - last) < epsilon:
print(new_last)
break
last = new_last