作业1:判断以下哪些不能作为标识符
作业2:输入数,判断这个数是否是质数(要求使用函数 + for循环)
num = int(input('请输入一个整数,判断是否为质数:'))
def judge():
flag = True
for i in range(2, num // 2 + 1):
if num % i == 0:
flag = False
break
if flag:
print(f'{num}为质数')
else:
print(f'{num}为合数')
judge()
作业3:求50~150之间的质数是那些?
def judge():
print('50~150之间的质数有')
for i in range(50, 151):
for j in range(2, i):
if i % j == 0:
break
else:
print(f'{i} ',end="")
judge()
作业4:打印输出标准水仙花数,输出这些水仙花数
def PPDI():
print('水仙花数有:', end="")
for i in range(100, 1000):
b = i // 100
s = i % 100 // 10
g = i % 10
if i == b ** 3 + s ** 3 + g ** 3:
print(f'{i} ', end="")
PPDI()
作业5:验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除
def divisible(num):
if num <= 9:
return
count = 0
num_start = num
while num > 0:
count += num % 10
num //= 10
if (num_start - count) % 9 == 0:
return True
return False
num = int(input('请输入一个大于9的整数:'))
print(divisible(num))
作业6:求五位数
一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.
def fn():
for num in range(10000, 100000):
A = 10 * num + 7
B = 7 * 100000 + num
if B / A == 5:
print(num)
fn()
作业7:① 求十进制数字9的二进制编码
def tenTotwo(num):
s = []
binstring = ''
print(f'{num}的二进制编码为:',end="")
while num > 0:
rem = num % 2
s.append(rem)
num //= 2
while len(s) > 0:
binstring += str(s.pop())
print(binstring)
num = int(input('请输入一个正整数:'))
tenTotwo(num)
② 求十进制数字9的二进制编码中的1的数量
def tenTotwo(num):
s = []
binstring = ''
count = 0
while num > 0:
rem = num % 2
s.append(rem)
num //= 2
for i in str(s):
if i == '1':
count += 1
return count
print('9的二进制编码数量为:',tenTotwo(9))
作业8:求1~100之间不能被3整除的数之和
def get_count():
total = 0
for n in range(1, 101):
if n % 3 != 0:
total += n
print(f'1~100之间不能被3整除的数之和为{total}')
get_count()
作业9:给定一个正整数N,找出1到N(含)之间所有质数的总和
def prime_count(N: int):
count = 0
for N in range(1, N+1):
if N > 0:
for i in range(2, N):
if N % i == 0:
break
else:
count += N
print(f'1到N之间所有质数的总和为{count - 1}')
N = int(input('请输入一个正整数:'))
prime_count(N)
作业10:计算PI
(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)
当有一项的绝对值小于10e-6停止计算
def PI():
ans = 0
add = 1
sign = 1
while 1 / add > 10 ** (-6):
ans += sign / add
add += 2
sign = -sign
else:
ans += sign / add
print(f'pi = {ans * 4}')
PI()
作业11:求a+aa+aaa+.......+aaaaaaaaa=?
其中a为1至9之中的一个数,项数也要可以指定
def get_count(n: int):
if n == 1:
return a
return a * (10 ** n - 1) / 9 + get_count(n - 1)
n = int(input('请输入项数:'))
a = int(input('请输入1~9之中的整数:'))
count = get_count(n)
print(f'{a} + {a * 10 + a} + …… + {a * (10 ** n - 1) / 9} = {count}')
作业12: 找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
def divisible():
print('10000以内能被5或6整除,但不能被两者同时整除的数有:')
for n in range(1, 10001):
if n % 5 == 0 or n % 6 == 0 and n % 30 != 0:
print(f'{n} ',end="")
divisible()
作业13:① 不死兔子
def rabbit(n: int):
if n == 1 or n == 2:
return 1
return rabbit(n - 1) + rabbit(n - 2)
rabbit_num = rabbit(12)
print(f'一年后共有{rabbit_num}对兔子')
② 跳楼梯问题
def staircase(n: int):
if n == 1 or n == 2:
return n
return staircase(n - 1) + staircase(n - 2)
n = int(input('请输入楼梯数:'))
staircase_num = staircase(n)
print(f'共有{staircase_num}种走法')
作业14:汉诺塔问题
def move(n, A, B, C):
if n == 1:
print(A, ' --> ', C)
return
move(n - 1, A, C, B)
move(1, A, B, C)
move(n - 1, B, A, C)
n = int(input('请输入需要移动的圆盘的个数:'))
move(n, 'A', 'B', "C")