在实验楼学习python3做的挑战项目做的代码整理。
链接:https://www.shiyanlou.com/courses/596
能够计算出一个半径为2的圆的面积,并且把面积打印出来,保留小数点后10位。
不要使用 input 等方法获得输入,程序不需要输入任何参数,可以使用 python3 CircleArea.py 执行,并直接输出 半径为2 的圆的面积数字。
import math
format
注意脚本名称和路径
导入模块
打印输出
运算符和表达式
#!/usr/bin/env python3
import math
r=2
print("{:.10f}".format(math.pi*r**2))
#!/usr/bin/env python3
import math
r=float(input("Enter the r: "))
print("{:.10f}".format(math.pi*r**2))
创建一个 名为 FindDigits.py 的Python 脚本,请读取一串字符串并且把其中所有的数字组成一个新的字符串,并且打印出来。我们提供的字符串可以通过在命令行中输入如下代码来获取。
使用循环来访问字符串中的单个字符
isdigit()
记得把新的字符串打印出来,print()函数记得要加括号(这里是Python3 的主场!敲黑板)
循环
字符串操作
#!/usr/bin/env python3
file=open('/home/shiyanlou/Code/String.txt')
str_file-file.read()
num=""
for i in range(len(str_file)):
if str_file[i].isdigit():
num+=str_file[i]
print("%s"%num)
实现一个函数 Hours(),将用户输入的 分钟数 转化为 小时数和分钟数,并要求小时数尽量大。讲结果以 XX H, XX M 的形式打印出来。(注意打印格式中的空格)
要求
用户能够通过命令行输入分钟数,程序需要打印出相应的小时数和分钟数
如果用户输入的是一个负值,程序需要报错 ValueError
需要进行 try…except 操作来控制异常。如果异常,在屏幕上打印打印出 ValueError: Input number cannot be negative 提示用户输入的值有误
import sys
raise语句
try…except 语句
异常
文件处理
if-else
#!/usr/bin/env python3
import sys
def Hours(num):
hour=int(num/60)
minute=int(num%60)
print(hour,"H,",minute,"M")
if len(sys.argv)<2:
sys.exit(1)
else:
if int(sys.argv[1])<0:
try:
raise ValueError("A value error happened.")
except ValueError:
print("ValueError: Input number cannot be negative")
else:
Hours(int(sys.argv[1]))
改写我们在第11节类这个模块当中 2.3 继承 部分的 student_teacher.py 脚本,在Person()类中增添函数get_grade()。对于教师类,该函数可以自动统计出老师班上学生的得分情况并按照频率的高低以A: X, B: X, C: X, D: X 的形式打印出来。对于学生类,该函数则可以以Pass: X, Fail: X 来统计自己的成绩情况(A,B,C 为 Pass, 如果得了 D 就认为是 Fail)。
student_teacher.py 文件可以通过在Xfce 终端中输入如下代码来获取
wget http://labfile.oss.aliyuncs.com/courses/790/student_teacher.py
要求
请把最终的student_teacher.py 代码文件放在 /home/shiyanlou/Code/ 路径下
根据命令行中的第一个参数 teacher 或者 student 来判断最终输出的格式。
命令行中第二个输入的参数是需要统计的字符串
import sys
collections 中的 Counter 子类
format() 以及 join
类
Collection 模块
注意最终的打印形式
#!/usr/bin/env python3
import sys
from collections import Counter
class Person(object):
def __init__(self, name):
self.name = name
def get_details(self):
return self.name
def get_grade(self,grade):
if self.name=='teacher':
list=Counter(grade).most_common()
item=["{}:{}".format(x,y) for x,y in list]
return ','.join(item)
elif self.name=='student':
return "Pass:{},Fail:{}".format(len(grade)-grade.count("D"),grade.count("D"))
class Student(Person):
def __init__(self, name, branch, year):
Person.__init__(self, name)
self.branch = branch
self.year = year
def get_details(self):
return "{} studies {} and is in {} year.".format(self.name, self.branch, self.year)
class Teacher(Person):
def __init__(self, name, papers):
Person.__init__(self, name)
self.papers = papers
def get_details(self):
return "{} teaches {}".format(self.name, ','.join(self.papers))
if __name__=='__main__':
if len(sys.argv)<2:
sys.exit(-1)
else:
person=Person(sys.argv[1])
print(person.get_grade(sys.argv[2]))