1、判断以下哪些不能作为标识符(BDEF)
A、a
B、¥a
C、_12
D、$a@12
E、false
F、False
2.输入数,判断这个数是否是质数(要求使用函数 + for循环)
def is_prime(num):
"""
判断一个数是否为质数,是返回True,否则返回False
"""
if num <= 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
# 测试
num = int(input("请输入一个整数:"))
if is_prime(num):
print(f"{num}是质数")
else:
print(f"{num}不是质数")
3:求50~150之间的质数是那些?
def is_prime(num):
"""
判断一个数是否为质数,是返回True,否则返回False
"""
if num <= 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
# 查找50~150之间的质数
for num in range(50, 151):
if is_prime(num):
print(num)
4:打印输出标准水仙花数,输出这些水仙花数
def is_narcissistic_number(num):
"""
判断一个数是否为水仙花数,是返回True,否则返回False
"""
n = len(str(num))
temp = num
sum = 0
while temp > 0:
digit = temp % 10
sum += digit ** n
temp //= 10
return num == sum
# 查找所有的水仙花数
for num in range(100, 1000):
if is_narcissistic_number(num):
print(num)
5:验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.
def is_divisible_by_9(num):
"""
判断一个数减去它的各位数字之和是否能被9整除,是返回True,否则返回False
"""
s = 0
while num > 0:
s += num % 10
num //= 10
return s % 9 == 0
# 测试
num = int(input("请输入一个大于9的整数:"))
if is_divisible_by_9(num):
print(f"{num}减去它的各位数字之和可以被9整除")
else:
print(f"{num}减去它的各位数字之和不能被9整除")
6:一个五位数,若在它的后面写上一个7,得到一个六位数A,
若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此
五位数.
# 计算得到的五位数
x = 699993 // 49
print(f"得到的五位数为:{x}")
# 验证
A = 10 * x + 7
B = 7 * 10 ** 5 + x
if B == 5 * A:
print("验证通过")
else:
print("验证不通过")
7:求十进制数字的二进制编码:
求十进制数字的二进制编码中的1的数量
def count_ones_in_binary(num):
"""
求一个十进制数字的二进制编码中1的数量
"""
count = 0
while num > 0:
if num % 2 == 1:
count += 1
num //= 2
return count
# 测试
num = int(input("请输入一个十进制数字:"))
count = count_ones_in_binary(num)
print(f"{num}的二进制编码中1的数量为{count}")
8:求1~100之间不能被3整除的数之和
# 计算不能被3整除的数之和
sum = 0
for i in range(1, 101):
if i % 3 != 0:
sum += i
# 输出结果
print(f"1~100之间不能被3整除的数之和为{sum}")
9:给定一个正整数N,找出1到N(含)之间所有质数的总和
def is_prime(num):
"""
判断一个数是否为质数
"""
if num <= 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
# 计算1到N之间所有质数的总和
N = int(input("请输入一个正整数:"))
sum = 0
for i in range(1, N + 1):
if is_prime(i):
sum += i
# 输出结果
print(f"1到{N}之间所有质数的总和为{sum}")
10:计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)
# 计算PI的值
N = int(input("请输入一个正整数:"))
pi = 0
for i in range(N):
pi += 4 * (-1) ** i / (2 * i + 1)
# 输出结果
print(f"PI的值为{pi}")
11:求a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定
# 计算a+aa+aaa+...+aaaaaaaaa的值
a = int(input("请输入1~9之间的数字:"))
n = int(input("请输入项数:"))
sum = 0
for i in range(1, n + 1):
sum += int(str(a) * i)
# 输出结果
print(f"{a}+{a}{a}+{a}{a}{a}+...+{a}{'a'*n}={sum}")
12: 找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
def find_numbers():
"""
找出10000以内能被5或6整除,但不能被两者同时整除的数
"""
result = []
for i in range(1, 10001):
if (i % 5 == 0 or i % 6 == 0) and not (i % 5 == 0 and i % 6 == 0):
result.append(i)
return result
# 调用函数并输出结果
print(find_numbers())
13:不死兔子和跳楼梯问题
这两个问题都属于斐波那契数列问题的变种。
不死兔子问题:假设一对兔子每个月能够生出一对小兔子,而一对新生的兔子出生后第二个月就开始生育。假设初始时有一对年龄为1个月的兔子,问n个月后有多少对兔子?
跳楼梯问题:一个人可以跳1级台阶,也可以跳2级台阶,问他跳上n级台阶有多少种不同的方法?
斐波那契数列是这两个问题的通解,递推公式为:f(n) = f(n-1) + f(n-2),其中f(1) = 1,f(2) = 1。
以下是Python代码实现:
```python
def fibonacci(n):
"""
计算斐波那契数列的第n项
"""
if n == 1 or n == 2:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
# 不死兔子问题
n = int(input("请输入月份:"))
print(f"经过{n}个月,共有{fibonacci(n)}对兔子。")
# 跳楼梯问题
n = int(input("请输入台阶数:"))
print(f"跳上{n}级台阶共有{fibonacci(n)}种不同的方法。")
```
在主程序中,先定义了一个名为 `fibonacci()` 的函数,该函数用于计算斐波那契数列的第n项。然后通过 `input()` 函数获取用户输入的月份或台阶数,调用 `fibonacci()` 函数计算结果并输出即可。
例如,输入月份10和台阶数10,程序输出:
```
经过10个月,共有55对兔子。
跳上10级台阶共有89种不同的方法。
```
14.汉诺塔问题
汉诺塔问题是一个经典的递归问题,其规则如下:
有三个柱子A、B、C,A柱子上有n个盘子,盘子大小不一,大的在下面,小的在上面。要求把A柱子上的盘子移到C柱子上,每次只能移动一个盘子,大盘子不能放在小盘子上面。在移动盘子的过程中可以利用B柱子作为中转。
以下是Python代码实现:
```python
def hanoi(n, A, B, C):
"""
将n个盘子从A柱子经过B柱子移动到C柱子
"""
if n == 1:
print(f"将第{n}个盘子从{A}移动到{C}")
else:
hanoi(n-1, A, C, B) # 将前n-1个盘子从A移动到B
print(f"将第{n}个盘子从{A}移动到{C}")
hanoi(n-1, B, A, C) # 将前n-1个盘子从B移动到C
# 调用函数并输出结果
hanoi(3, 'A', 'B', 'C')
```
定义了一个名为 `hanoi()` 的函数,该函数使用递归实现汉诺塔问题的求解。其中,`n` 表示盘子的数量,`A`、`B`、`C` 分别表示三个柱子的名称。如果只有一个盘子,则直接将其从A移动到C;否则,先将前n-1个盘子从A移动到B,再将第n个盘子从A移动到C,最后将前n-1个盘子从B移动到C。
例如,当输入 `hanoi(3, 'A', 'B', 'C')` 时,程序输出:
```
将第1个盘子从A移动到C
将第2个盘子从A移动到B
将第1个盘子从C
/131252236