题目描述
利用循环,寻找规律,打印如下数字模式:
模式A
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
模式B
1 2 3 4 5 6
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
代码如下
# 正直角三角形
for i in range(1, 6):
for j in range(1, i+1):
print(j, end='')
print()
# 倒直角三角形
for i in range(5, 0, -1):
for j in range(i, 0, -1):
print(j, end='')
print()
金字塔
题目描述
利用循环,寻找规律,打印如下数字模式:
```
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
5 4 3 2 1 2 3 4 5
6 5 4 3 2 1 2 3 4 5 6
7 6 5 4 3 2 1 2 3 4 5 6 7
```
代码如下
n = 7
for i in range(1, n+1):
for j in range(1, n-i+1):
print(" ", end="")
for k in range(1, i+1):
print(k, end="")
for l in range(i-1, 0, -1):
print(l, end="")
print()
题目描述
利用循环,寻找规律,打印如下数字模式:
1 1 2 1 1 2 4 2 1 1 2 4 8 4 2 1 1 2 4 8 16 8 4 2 1 1 2 4 8 16 32 16 8 4 2 1 1 2 4 8 16 32 64 32 16 8 4 2 1
代码如下
layer = int(input("请输入你要打印的行数:"))
for i in range(0,layer):
for k in range(layer - i , 0 , -1):
print(" ",end = "\t")
for j in range(1,i + 1):
print(2 ** (j - 1),end = "\t")
for k in range(i + 1,0 ,-1):
print(2 ** (k - 1),end = "\t")
print()
题目描述
计算机随机生成一个[0,100]之间的整数,程序提示用户连续地输入数字直到它与那个随机生成的数字相同
对于用户输入的数字,程序会提示它是过高还是过低
输入输出描述
每次输入一个整数
每次输出该数字是过高还是过低,如果猜中则输出猜中的数字并结束
import random
number = random.randint(1, 100)
while True:
guess = int(input("请输入一个1-100之间的整数:"))
if guess > number:
print("高了!")
elif guess < number:
print("低了!")
else:
print("正确!")
break
题目描述
输入两个正整数,计算其最大公约数,例如4和2的最大公约数是2,16和24的最大公约数是8
输入输出描述
输入两个数字
输出最大公约数
示例1
输入:
16 24
输出:
8
示例2
输入:
7 3
输出:
1
代码如下
a = int(input("请输入第一个数:"))
b = int(input("请输入第二个数:"))
while b != 0:
a, b = b, a % b
print("最大公约数为:", a)
题目描述
一个大于1的整数如果只能被正整数1和它本身整除,则它就是素数,例如2、3、5和7都是素数,而4、6、8、9则不是
输入输出描述
输入一个大于1的正整数
输出Yes表示该数字是素数,否则输出No
示例1
输入:
9
输出:
No
示例2
输入:
11
输出:
Yes
代码如下
def is_prime(x):
if x==1:
return False;
for i in range(2,x):
if x%i==0:
return False
return True
n=int(input())
if is_prime(n):
print("Yes")
else:
print("No")
题目描述
输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15
输入输出描述
输入两个正整数
输出最小公倍数
示例1
输入:
3 9
输出:
9
示例2
输入:
4 6
输出:
12
代码如下
def gcd(x, y):
if x > y:
smaller = y
else:
smaller = x
for i in range(1, smaller+1):
if((x % i == 0) and (y % i == 0)):
gcd = i
return gcd
def lcm(x, y):
lcm = (x*y)//gcd(x,y)
return lcm
num1 =36
num2 =8
print("最小公倍数为:", lcm(num1, num2))
题目描述
输入一个正整数,然后找出它所有的最小因子,也称之为素因子
输入输出描述
输入一个正整数
输出多行,每行输出一个素因子
示例1
输入:
120
输出:
2 2 2 3 5
解释:
2 * 2 * 2 *3 * 5 = 120
示例2
输入:
100
输出:
2 2 5 5
代码如下
aa = input("输入一个整数")
aa = int(aa)
b = 2 # 起始质数为最小质数
xx = []
while True:
if aa % b != 0:
b += 1
else:
aa = aa // b
xx.append(b)
if aa == 1:
break
print(xx)
题目描述
如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数
例如 6 = 3 + 2 + 1,28 = 14 + 7 + 4 + 2 + 1
输入输出描述
输入一个正整数
输出该数是否为完全数
示例1
输入:
6
输出:
Yes
示例2
输入:
9
输出:
No
代码如下
n = int(input("请输入一个正整数:"))
s = 0
for i in range(1, n):
if n % i == 0:
s += i
if s == n:
print("{}是完全数".format(n))
else:
print("{}不是完全数".format(n))
题目描述
你可以使用下面的数列近似计算π
π=4(1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\frac{1}{9}-\frac{1}{11}+...+\frac{(-1)^{i+1}}{2i-1})
当i越大时,计算结果越近似于π
代码如下
import random
n = 1000000
count = 0
for i in range(n):
x, y = random.uniform(0, 1), random.uniform(0, 1)
if x**2 + y**2 <= 1:
count += 1
pi = 4.0 * count / n
print("π的近似值为:", pi)
题目描述
你可以使用下面的数列近似计算e
e=1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+...+\frac{1}{i!}
当i越大时,计算结果越近似于e
代码如下
n=eval(input())
e=1
divisor=1
for i in range(1,n+1):
divisor *= i
e=e+1/divisor
print("{:.8f}".format(e))
题目描述**
在数字范围[1,7]之间,任意选择两个不相同的数作为一个组合,输出每一组组合,并统计所有组合的个数
注:组合(a,b)与组合(b,a)算同一种组合,只记录一次
代码如下
list = [1,2,3,4,5,6,7]
add = 0
for x in list:
for y in list:
if (x != y) and (y != x) :
add += 1
print(x,y,end= "|")
print("一共有",add,"个")
题目描述
有1、2、3、4这个四个数字,能组成多少个互不相同且无重复数字的三位数?分别又是多少?
代码如下
list = [1,2,3,4,5,6,7]
add = 0
for x in list:
for y in list:
for z in list:
if (x != y) and (y != z)and (z!=x):
add += 1
print(x,y,z,end= "|")
print("一共有",add,"个")
题目描述
一只青蛙,一次可以跳一个台阶或者两个台阶,现有n个台阶,问该青蛙有多少种不同的跳法?
例如:两个台阶,有两种跳法(1+1,2);四个台阶,有五种跳法(1+1+1+1,2+1+1,1+2+1,1+1+2,2+2)
代码如下
def jumpfloor(n):
if n==1:
return 1
elif n==2:
return 2
else:
return jumpfloor(n-1)+jumpfloor(n-2)
题目描述
输入一个十进制正整数,输出其二进制形式
输入输出描述
输入一个十进制正整数
输出二进制字符串
示例
输入:
9
输出:
1001
代码如下
#python屏幕输入为字符串,将其转化为整数再操作
number = int(input())
binnum = bin(number)
print(binnum)
题目描述
输入一个二进制字符串,输出其对应的十进制数字
输入输出描述
输入一个二进制字符串
输出十进制数字
事例
> 输入:
>
> 1001
>
> 输出:
>
> 9
代码如下
a = '10111'
b = int(a,2)
print(b)
题目描述
输入一个十进制正整数,输出其十六进制形式
输入输出描述
输入一个十进制正整数
输出十六进制字符串
示例
输入:
1233321
输出:
1e1b9
hex_num = input("请输入一个16进制数:")
dec_num = int(hex_num, 16)
print("转换后的10进制数为:", dec_num)
题目描述
给定两个字符串 s1 和 s2 ,求两个字符串最长的公共前缀串,字符区分大小写
输入输出描述
输入两行,分别表示s1和s2
输出前缀串
示例
输入:
abcdefg
abcdhko
输出:
abcd
代码如下
def longest_common_prefix(s1, s2):
i = 0
while i < len(s1) and i < len(s2) and s1[i] == s2[i]:
i += 1
return s1[:i]
# 接收输入
s1 = input()
s2 = input()
# 调用函数计算最长公共前缀
result = longest_common_prefix(s1, s2)
# 输出结果
print(result)
题目描述
给定两个字符串 s1 和 s2 ,求 s2 在 s1 中出现的次数,字符区分大小写,已匹配的字符不计入下一次匹配
输入输出描述
输入两行字符串,分别为s1和s2,s2的长度小于等于s1
输出s2在s1中出现的次数
示例1
输入:
ABCsdABsadABCasdhjabcsaABCasd
ABC
输出:
3
示例2
输入:
AAAAAAAA
AAA
输出:
2
代码如下
def count_substring(s1, s2):
count = 0
i = 0
while i < len(s1):
if s1[i:i+len(s2)] == s2:
count += 1
i += len(s2)
else:
i += 1
return count
s1 = input()
s2 = input()
result = count_substring(s1, s2)
print(result)
**题目描述**
一些网站会给密码强加一些规则:
(1)密码必须至少有8个字符
(2)密码只能包含英文字母和数字
(3)密码应该至少包含两个数字
(4)密码应该至少包含两个大写字母
如果密码符合规则,输出Yes;否则输出No
代码如下
def check_password(password):
if len(password) < 8:
return "No"
num_count = 0
uppercase_count = 0
for char in password:
if char.isnumeric():
num_count += 1
elif char.isupper():
uppercase_count += 1
if num_count >= 2 and uppercase_count >= 2:
return "Yes"
else:
return "No"
password = input()
result = check_password(password)
print(result)
题目描述
回文素数是指一个数既是素数又是回文数,例如131既是素数也是回文数
输出显示前100个回文素数,每行显示10个
代码如下
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
def is_palindrome(num):
return str(num) == str(num)[::-1]
count = 0
num = 2
while count < 100:
if is_prime(num) and is_palindrome(num):
print(num, end=' ')
count += 1
if count % 10 == 0:
print()
num += 1
**题目描述**
反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如17和71都是素数但不是回文数,且反转后依旧是素数
输出显示前100个反素数,每行显示10个
代码如下
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
def reverse_num(num):
return int(str(num)[::-1])
count = 0
num = 2
while count < 100:
if is_prime(num) and is_prime(reverse_num(num)):
print(num, end=' ')
count += 1
if count % 10 == 0:
print()
num += 1
**题目描述**
双素数是指一对差值为2的素数,例如3和5就是一对双素数,5和7也是一对双素数
输出显示小于1000的双素数
代码如下
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
for num in range(3, 1000):
if is_prime(num) and is_prime(num+2):
print(num, num+2)
如果一个素数可以写成$2^p-1$的形式,其中p是某个正整数,那么这个素数就称作梅森素数
输出p≤31的所有梅森素数
代码如下
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
for p in range(2, 32):
number = 2**p - 1
if is_prime(number):
print("p =", p, "梅森素数:", number)
有几种实现开平方$\sqrt{n}$的技术,其中一个称为巴比伦法
它通过使用下面公式的反复计算近似地得到:
nextGuess=(lastGuess+n/lasetGuess)/2
当nextGuess和lastGuess几乎相同时,nextGuess就是平方根的近似值
lastGuess初始值为1,如果nextGuess和lastGuess的差值小于一个很小的数,比如0.0001,就可以认为nextGuess是n的平方根的近似值;否则,nextGuess成为下一次计算的lastGuess,近似过程继续执行
编写代码,求解n的平方根的近似值
代码如下
def square_root(n):
last_guess = 1
next_guess = (last_guess + n / last_guess) / 2
while abs(next_guess - last_guess) >= 0.0001:
last_guess = next_guess
next_guess = (last_guess + n / last_guess) / 2
return next_guess
n = float(input("请输入一个数字:"))
approximation = square_root(n)
print("平方根的近似值为:", approximation)