python语⾔程序设计课后习题(嵩天⽼师)
嵩天⽼师的python语⾔程序设计课后习题记录
⽤以记录⾃⼰写过的题
四位玫瑰数
四位玫瑰数是4位数的⾃幂数。⾃幂数是指⼀个 n 位数,它的每个位上的数字的 n 次幂之和等于它本⾝。
例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的⼀个⾃幂数,3位数的⾃幂数被称为⽔仙花数。
请输出所有4位数的四位玫瑰数,按照从⼩到⼤顺序,每个数字⼀⾏。
for i in range(1000,10000):表白的完整html代码
a = i//1000
b = i%1000//100
c = i%1000%100//10
d = i%10
if i==pow(a,4)+pow(b,4)+pow(c,4)+pow(d,4):
print(i)
100以内素数之和
求100以内所有素数之和并输出。
素数指从⼤于1,且仅能被1和⾃⼰整除的整数。
s = 0
for i in range(2,100):
f = 0
for j in range(2,i):
if i%j==0:
f = 1
continue
if f==0:
s += i
print(s)
⽂本进度条
采⽤字符串⽅式打印可以动态变化的⽂本进度条,进度条需要能在⼀⾏中逐渐变化
要求如下:
(1) 采⽤sleep()模拟⼀个持续的进度,获得⽂本进度条的变化时间;
(2) 通过print()函数实现单⾏动态刷新,在print()函数中更换参数end的默认值为’’,每次使⽤print()函数输出时不能换⾏;
(3) 要能回退:打印后光标到之前的位置 \r。
输出:
import time
scale = 50
print("执⾏开始".center(scale//2,'-'))
start = time.perf_counter()
for i in range(scale+1):
a = '*' * i
b = '.' * (scale - i)
c = (i / scale) * 100
dur = time.perf_counter() - start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
time.sleep(0.1)
print('\n'+"执⾏结束".center(scale//2,'-'))
恺撒密码
恺撒密码是古罗马恺撒⼤帝⽤来对军事情报进⾏加解密的算法,它采⽤了替换⽅法对信息中的每⼀个英⽂字符循环替换为字母表序列中该字符后⾯的第三个字符,即,字母表的对应关系如下:
原⽂:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密⽂:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原⽂字符P,其密⽂字符C满⾜如下条件:C=(P+3) mod 26
上述是凯撒密码的加密⽅法,解密⽅法反之,即:P=(C-3) mod 26
假设⽤户可能使⽤的输⼊包含⼤⼩写字母a Z、空格和特殊符号,请编写⼀个程序,对输⼊字符串进⾏恺撒密码加密,直接输出结果,其中
zA
空格不⽤进⾏加密处理。使⽤input()获得输⼊。
a = input()
for p in a:
if 'a' <= p <= 'z':
汇编语言结束指令print(chr(ord('a') + (ord(p)-ord('a') +3) % 26),end='')
elif 'A' <= p <= 'Z':
print(chr(ord('A') + (ord(p)-ord('A') +3) % 26),end='')
else:
print(p, end='')
圆周率的计算
求解圆周率可以采⽤蒙特卡罗⽅法,在⼀个正⽅形中撒点,根据在1/4圆内点的数量占总撒点数的⽐例计算圆周率值。
请以123作为随机数种⼦,获得⽤户输⼊的撒点数量,编写程序输出圆周率的值,保留⼩数点后6位。
from random import random,seed
DARTS = eval(input())
seed(123)
hits = 0
for i in range(DARTS):
x, y = random(), random()
if x**2+y**2 < 1.0:
hits += 1
pi = (hits/DARTS) * 4
print('{:.6f}'.format(pi))
随机密码⽣成
以整数17为随机数种⼦,获取⽤户输⼊整数N为长度,产⽣3个长度为N位的密码,密码的每位是⼀个数字。每个密码单独⼀⾏输出。
产⽣密码采⽤random.randint()函数。
输⼊输出⽰例
注意:题⽬要求的是N位数⼀次⽣成,不是每个位上单独⽣成。
import random
大学python入门教程def genpwd(length):
low =pow(10, length -1)
high =pow(10, length)-1
return"{}".format(random.randint(low, high))
length =eval(input())
random.seed(17)
for i in range(3):
print(genpwd(length))
连续质数计算
获得⽤户输⼊数字N,计算并输出从N开始的5个质数,单⾏输出,质数间⽤逗号,分割。
注意:需要考虑⽤户输⼊的数字N可能是浮点数,应对输⼊取整数;最后⼀个输出后不⽤逗号。输⼊输出⽰例
注意:体重的浮点数化整⽤round()函数就可以向上取整。
def prime(m):
for i in range(2,m):
if m % i ==0:
return False
return True
n =eval(input())
n_ =round(n)
count =0
while count <5:
if prime(n_):
if count <4:
print(n_, end=",")
else:卵巢囊肿对女性有什么影响
print(n_, end="")
count +=1
n_ +=1
任意累积
计算任意个输⼊数字的乘积。
def cmul(a,*b):
ret = a
for i in b:
ret *= i
return ret
print(eval("cmul({})".format(input())))
斐波那契数列计算
计算斐波那契数列的值,具体功能如下:
1. 获取⽤户输⼊整数N,其中,N为正整数
2. 计算斐波那契数列的值
如果将斐波那契数列表⽰为fbi(N),对于整数N,值如下:
fbi(1)和fbi(2)的值是1,当N>2时,fbi(N) = fbi(N-1) + fbi(N-2)
请采⽤递归⽅式编写。
def fbi(n):
if n==1or n==2:
return1
else:
return fbi(n-1)+fbi(n-2)
n =eval(input())
print(fbi(n))
汉诺塔实践
汉诺塔问题⼤家都清楚,这⾥不再赘述。
请补充编程模板中代码,完成如下功能:
有三个圆柱A、B、C,初始时A上有N个圆盘,N由⽤户输⼊给出,最终移动到圆柱C上。
每次移动步骤的表达⽅式⽰例如下:[STEP 10] A->C。其中,STEP是步骤序号,宽度为4个字符,右对齐。
请编写代码,获得输⼊N后,输出汉诺塔移动的步骤。
输⼊格式
⼀个整数
输出格式
javagame下载器每个步骤⼀⾏,每⾏参考格式如下:[STEP 10] A->C 输⼊输出⽰例
steps =0
def hanoi(src, des, mid, n):
global steps
if n ==1:
steps +=1
print("[STEP{:>4}] {}->{}".format(steps, src, des)) else:
hanoi(src, mid, des, n-1)
steps +=1
我要自学网mastercam视频教程print("[STEP{:>4}] {}->{}".format(steps, src, des))
hanoi(mid, des, src, n-1)
N =eval(input())
hanoi("A","C","B", N)
⼈名最多数统计
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论