2020年秋季开课,课程时间为第6-16周
Python第一次作业
Description:
1.Python单行注释和多行注释分别用什么表示?对下面不同格式语句分别进行相应的注释:
(1) “计算机编程是把数学知识转化为实际效益的强有力工具”;(写为一行)
(2) “计算机编程是
把数学知识转化为实际效益的 (保存格式不变,既两行)
强有力工具”。
(1)代码:
#计算机编程是把数学知识转化为实际效益的强有力工具
(2)代码:
'''
计算机编程是
把数学知识转化为实际效益的 (保存格式不变,既两行)
强有力工具
'''
Description:
2.编写脚本文件,命名为pythonfirst.py, 内容为print(“Hello, NAU”). 然后把它保存在桌面位置,最后在spyder的shell框里面运行该文件。写出整个流程与涉及的相应代码。
Answer:
省略
Description:
3.列出下列数学式的python代码:
(1)8×3^2+6%4 (2) ( 2^4+7-34)÷5
Answer:
Description:
4. 给变量str_1赋值“Hello,Stat.andMath.”, 然后输出内容:复制str_1 两遍。
Answer:
省略
Description:
5.写代码,有如下变量,请按照要求实现每个功能。
字符串类型的变量var_1=” #$Youth means limitless possibilities$#, &pursues breakthroughs in your life ! *”。
(1)首先以逗号作为分割符,把该变量分为两部分,记为var_2与var_3; (2)用python命令分别去掉var_2,var_3的两端的空格符,以及“#¥&*”。
Answer:
运行结果:
#$Youth means limitless possibilities$# &pursues breakthroughs in your life ! *
Python第二次作业
# 1. 输出10行内容,每行的内容都是“*****”。
#输出10行内容,每行的内容都是“*****”。
for i in range(10):
print(5*"*")
# 2. 输出10行内容,每行的内容都不一样,第1行一个星号,第2行2个星号,依此类推第10行10个星号。
# 输出10行内容,每行的内容都不一样,第一行一个星号,第二行2个星号,依次类推第十行10个星号。
for i in range(1,11):
print(i*"*")
# 3. 输出9行内容,,第1行输出1,第2行输出12,第3行输出123,以此类推,第9行输出123456789。
#输出九行内容,第一行输出1,第二行输出12,第三行输出123,以此类推,第九行输出123456789。
sum=0
for i in range(1,10):
sum+=i
print(sum)
sum=sum*10
老师的标准答案:
for i in range(1,10):
I=""
for j in range(0,i):
I=I+str(j+1)
print(I)
# 4. 计算10个99相加后的值并输出。
# 计算10个99相加后的值并输出。
sum=0
for x in range(10):
sum+=99
print("10个99相加后的值为{}".format(sum))
# 5. 计算从1加到100的值并输出。
# 计算从1加到100的值并输出。
sum=0
for i in range(1,101):
sum+=i
print("1+2+3+...+100={}".format(sum))
# 6. 计算10的阶乘(1x2x3x4x5x6x7x8x9x10)
# 计算10的阶乘。
# 方法一:使用for循环。
print("方法一:for循环")
sum=1
for i in range(1,11):
sum*=i
print("10!={}".format(sum))
print("-—-—-—-—-—-—-—-—-—-—-—-—-")
# 方法二:使用递归。
print("方法二:递归")
def f(number):
if number==0 or number==1:
return 1
return f(number-1)*number
num=f(10)
print("10!={}".format(num))
# 7. 计算2的20次方。不允许用**和pow()
# 计算2的20次方。不允许用**和pow()
sum=1
for i in range(20):
sum*=2
print("2的20次方为%d"%sum)
# 8. 计算从1到100临近两个整数的合并依次输出。比如第一次输出3(1+2),第二次输出5(2+3),最后一次输出199(99+100)。
#计算从1到100临近两整数的合并依次输出。
for x in range(1,100):
print("{}+{}={}".format(x,x+1,x+x+1))
# 9. 打印99乘法表
#打印99乘法表
for i in range(1,10):
for j in range(1,i+1):
print("{}*{}={} ".format(j,i,i*j),end="")
print("\n")
# 10. 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第n=10次落地时,共经过多少米?
# 一球从100米高度自由落下,每次落地后跳回原高度的一半,再落下。求它在第n=10次落地时,共经过多少米?
sum=0
num=100
for i in range(10):
sum+=num+num/2
num/=2
print("它在第n=10次落地时,一共经过%d米"%sum)
python 第三次作业
1,输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。(显示程序运行时间)
#第一题
'''
1.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。(显示程序运行时间)
'''
import time
t1 = time.perf_counter()
count_letter,count_space,count_digit=0,0,0
#-------------------start-------------------------
a=input("请输入一行字符:")
for i in a:
if i.isalpha():
count_letter+=1
elif i.isspace():
count_space+=1
elif i.isdigit():
count_digit+=1
print("该字符的中,字母的个数{},空格的个数{},数字的个数{}\n".format(count_letter,count_space,count_digit))
#-------------------end-------------------------
t2 = time.perf_counter()
print("程序运行时间:",t2-t1)
2,一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。(显示程序运行时间)
#第二题
'''
2.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。(显示程序运行时间)
'''
import time
t1 = time.perf_counter()
for i in range(1,1001):
s = 0
for j in range(1,i):
if i%j==0:
s+=j
if i==s:
print("1000以内的完全数有{} \n".format(s))
t2 = time.perf_counter()
print("程序运行时间:",t2-t1)
3,判断101-200之间有多少个素数,并输出所有素数。(显示程序运行时间)
#第三题
'''
3,判断101-200之间有多少个素数,并输出所有素数。(显示程序运行时间)
'''
#第三题
'''
3,判断101-200之间有多少个素数,并输出所有素数。(显示程序运行时间)
'''
import time
t1 = time.perf_counter()
#--------------------start---------------------------------
l=[ ]
for i in range(101,200):
for j in range(2,i-1):
if i % j==0:
break
else: #for......else 中,else语句会在 for 不通过 break 跳出而中断的情况下执行。
l.append(i)
print(l)
print('总数为:%d'%len(l))
#--------------------end---------------------------------
t2 = time.perf_counter()
print("程序运行时间:",t2-t1)
4,打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
#第四题
'''
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。(显示程序运行时间)
'''
import time
t1 = time.perf_counter()
#--------------------start---------------------------------
# 循环遍历出所有三位数
def digit_all(a,b):
for tmp in range(a, b):
# 取余找出个位数
x = tmp % 10
# 求商取整找出百位数
y = tmp // 100
# 通过求商取整找出百位和十位,然后求商找出十位
z = tmp // 10 % 10
if tmp == x**3 + y**3 + z**3:
print("{}~{}水仙花数有{}".format(a,b-1,tmp))
digit_all(100,1000)
#--------------------start---------------------------------
t2 = time.perf_counter()
print("程序运行时间:",t2-t1)
5,有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。(显示程序运行时间)
#第五题
'''
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。(显示程序运行时间)
'''
import time
t1 = time.perf_counter()
#--------------------start---------------------------------
n = int(input('请输入项数: '))
fenzi = 2#分子
fenmu = 1#分母
l = []
s = 0
for i in range(1,n+1):
a = fenzi
b = fenmu
s += (a/b)
l.append('%s/%s'%(a,b))
fenzi = a+b
fenmu = a
print('+'.join(str(i) for i in l),end = '')
print('=%.2f'%s)
#--------------------start---------------------------------
t2 = time.perf_counter()
print("程序运行时间:",t2-t1)
6,求1+2!+3!+…+20!的和。(显示程序运行时间)
#第六题
'''
求1+2!+3!+...+20!的和。(显示程序运行时间)
'''
import time
t1 = time.perf_counter()
#--------------------start---------------------------------
n = 0
s = 0
t = 1
for n in range(1,21):
t *= n
s += t
print("1+2!+3!+...+20!={}".format(s))
#--------------------start---------------------------------
t2 = time.perf_counter()
print("程序运行时间:",t2-t1)