DHU Python Curriculumly Learning【5】——大作业_key_by_TA

文章目录

  • 写在前面
  • 第一次大作业
  • 第二次大作业
  • 第三次大作业
  • 第四次大作业
  • 第五次大作业
  • 第六次大作业
  • 第七次大作业
  • 第八次大作业
  • 第九次大作业
  • 第十次大作业

写在前面

助教写的参考答案,嗯~ o( ̄▽ ̄)o,仅供参考
题目见我的另一篇博客,诶不过大多数都有在程序的最顶端有备注题目
这篇只是在复习之余随便写了玩玩的

同学试图用这个复习,发现看不懂,那可不,因为有的部分用了简洁的算法,比如递归什么的,还有的指令书上和ppt里都没有,只是讲解的时候跟我们提到过,让我们了解一下他的代码到底在说个啥
所以说上编程课不听甚至逃课,要么自学力惊人,要么有雄厚底蕴,要么……等死(“明年再见ヾ( ̄▽ ̄)”)

-“老师,帮我看看这个程序呗,上次做的大作业,有个bug不能dig”
-“等会助教会来的鸭,作业问题你问他就好了,还有不是每次都有分析题目的吗?”
-“可是他用的东西,大多数,超纲啊……”
-“噗”

大佬学长:“受人之托(有人出钱让他帮忙给他讲python,顺便做大作业),我只做我该做的事”,“我经常写超纲东西给他交上去,没有什么关系的”

确实

第一次大作业

"""
一年365天,以第1天的能力值为基数,记为1.0,当好好学习时能力值相比前一天提高1‰,当没有学习时由于遗忘等原因能力值相比前一天下降1‰。每天努力和每天放任,一年下来的能力值相差多少呢?输出能力上升与下降两者间的差值。
"""

dayup = (1.0 + 0.01)**365
daydown = (1.0 - 0.01)**365
print("每天努力:{:.2f},每天放任:{:.2f}".format(dayup,daydown))
print("dayup=",dayup)
# -*- coding: utf-8 -*-
"""

一年365天,一周5个工作日,如果每个工作日都很努力,可以提高1%,仅在周末放任一下,能力值每天下降1%,效果如何呢?请输出一年后提高的倍数。

"""

power = 1
for i in range(365):
        if i % 7 in [0,6]:
                power = power * (1 - 0.01)
        else:
                power = power * (1 + 0.01)
print("每周向上5天向下2天的能力值:{:.2f}".format(power))
# -*- coding: utf-8 -*-
"""
如果每周连续努力5天,休息2天,为了达到每天努力1%所达到的的水平,计算:需要在工作日将提高的程度达到多少?
"""

#一     (1+1%)^365=(1+x)^260   52周
x=(1+0.01)**(365/260)-1
print(x)

#二  休息的两天下降1%

def dayUP(df):
    day = 1.0
    for i in range(365):
        if i % 7 in [6, 0]:
            day = day * (1 - 0.01)
        else:
            day = day * (1 + df)
    return day


dayf = 0.01
while (dayUP(dayf)<37.78):
    dayf += 0.001
print("每天的努力参数是: {:.3f}.".format(dayf))

第二次大作业

pos = int(input("请输入月份"))
months=["January","February","March","April","May","June","July","August","September","October","November","December"]
print(months[pos-1]);
# -*- coding: utf-8 -*-
"""
编写一个程序:从键盘输入某个分钟数,将其转化为用小时和分钟表示。
"""

time = int(input("请输入分钟数:"))

minute=time%60

hour=int(time/60)

print(hour,"小时",minute,"分钟")
# -*- coding: utf-8 -*-
"""
编写计算圆面积和球体积的程序,输出结果。
"""


import math

radius = float(input("请输入半径:"))
 
S=math.pi*radius**2
 
V=(4/3)*math.pi*radius**3

print("面积为:{:.2f}".format(S))
print("体积为:{:.2f}".format(V))
# -*- coding: utf-8 -*-
"""
4.输入平面上的两个点,计算两点的距离。
"""

x1 = float(input("请输入x1="))
y1 = float(input("请输入y1="))
x2 = float(input("请输入x2="))
y2 = float(input("请输入y2="))

distance = ((x2-x1)**2+(y2-y1)**2)**(1/2)
print("距离为{:.2f}.".format(distance))

第三次大作业

# -*- coding: utf-8 -*-
"""
将百分制转换为五级制,即成绩不低于90分用“优秀”表示,80~89用“良好”表示,70~79用“中等”表示,60~69用“及格”表示,低于60用“不及格”表示。
"""


score = float(input("请输入成绩:"))

if score>=90:
    grade="优秀"
elif score>=80 and score<90:
    grade="良好"
elif score>=70 and score<80:
    grade="中等"
elif score>=60 and score<70:
    grade="及格"
elif  score<60:
    grade="不及格"
    
print(grade)
# -*- coding: utf-8 -*-
"""
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

"""
s =input('请输入字符串:')
dic={'letter':0,'integer':0,'space':0,'other':0}
for i in s:
    if i >'a' and i<'z' or i>'A' and i<'Z' :
        dic['letter'] +=1
    elif i in '0123456789':
        dic['integer'] +=1
    elif i ==' ':
        dic['space'] +=1
    else:
        dic['other'] +=1
         
print('统计字符串:',s)
print(dic)
print('------------显示结果---------------') 
for i in dic:
    print('%s='%i,dic[i])

# -*- coding: utf-8 -*-
"""
输入三角形的3条边,判断能否组成三角形。若能,计算三角形的面积。
"""
import math

a=int(input("请输入边长a:"))
b=int(input("请输入边长b:"))
c=int(input("请输入边长c:"))
if a+b > c and a+c > b and b+c > a:
    p = (a+b+c)/2
    temp = p*(p-a)*(p-b)*(p-c)
    s = math.sqrt(temp)
    print("可以构成三角形", "面积为: ", s)
else:
    print("三边不能构成三角形!!")
# -*- coding: utf-8 -*-
"""
4.勾股定理中3个数的关系a^2+b^2=c^2.编写程序,输出30以内,满足上述条件的整数组合,如3,4,5就是一个组合。

"""
for a in range(1,31):
	for b in range(1,31):
		for c in range(1,31):
			if a**2+b**2==c**2 and a<b<c:
				print(a,b,c)
# -*- coding: utf-8 -*-
"""
5.求200以内能够被13整除的最大的整数,并输出。 
"""
list=[]
for i in range(1,201):
	if i%13==0:
		list.append(i)
print(list)
print("能够被13整除的最大的整数为",max(list))
# -*- coding: utf-8 -*-
"""
6.求1~100之间的所有偶数的和。
"""
sum=0
for i in range(1,101):
	if i%2==0:
		sum=sum+i
print("求1~100之间的所有偶数的和为",sum)

第四次大作业

# -*- coding: utf-8 -*-
"""
求1~100之间所有的素数,并统计素数的个数。

"""

num = 2
counter = 0
while num<100:
    flag=1
    i=2
    while i<num:
        if num%i==0:
            flag=0
            break
        i=i+1
    if flag==1:
        counter=counter+1
        print(num)
    num=num+1
print("counter=",counter)
# -*- coding: utf-8 -*-
"""
求200以内能被17整除的最大正整数。(用while)
"""

n=200

while n<=200:
    if n%17==0:
        print(n)
        break
    n=n-1
"""
猜数游戏。预设一个0~9的整数,让用户输入所猜的数。如果大于预设的数,显示“bigger”;如果小于预设的数,显示“smaller”.如此循环,直至猜中该数,显示“right”。

"""

num=7
while True:
    guess = int(input("please input a number"))
    if guess ==num:
        print("right")
        break;
    elif guess >num:
        print("bigger")
    elif guess  <num:
        print("smaller")
# -*- coding: utf-8 -*-
"""
用数字1、2、3、4能组成多少个互不相同且无重复数字的三位数,打印结果。

"""

counter=0
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if (i!=k) and (i!=j) and (j!=k):
                counter+=1
                print(i,j,k)
print("个数:",counter)
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 30 15:17:24 2019

@author: firstmonday
"""

year = int(input("请输入年份:"))

if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):

    print(year,"是闰年"  )
else:
    print(year,"不是闰年" )
# -*- coding: utf-8 -*-
"""
求斐波那西数列第n个数及前n项和
"""
"""
def fun(n):
    list=[1,1]
    
    for i in range(2,n):
        list.append(list[i-1]+list[i-2])
    print(list)
    print("第n个数为",list[n-1])
    
    sum=0
    for j in list:
        sum=sum+j
    print("前n项和为",sum)
    
a = int(input("please input n"))
fun(a)
"""


def fib_recur(n):
  if n <= 1:
      return n
  return fib_recur(n-1) + fib_recur(n-2)

sum=0
n = int(input("please input n"))
for i in range(1, n+1):
    print(fib_recur(i), end=' ')
    sum=sum+fib_recur(i);
print()
print("sum=",sum)

第五次大作业

# -*- coding: utf-8 -*-
"""
编制判断素数的Sub或Function函数,验证哥德巴赫猜想:一个不小于6的偶数可以表示为两个素数之和。例如,6=3+3,8=3+5,10=3+7

"""

def IsPrime(val):
    i=2
    while i<=val:
        if val%i ==0:
            break
        i=i+1
    if i==val:
        return True
    else:
        return False

b=int(input("Please input a even"))
if b%2==0:
    i=1
    while i<=b:
        j=b-i
        if(IsPrime(j)):
            if(IsPrime(b-j)):
                print(j,"+",b-j,"=",b)
        i=i+1
else: 
    print("不是偶数")
# -*- coding: utf-8 -*-
"""
实现计算表达式1+3+...+(2n-1)值的函数。
"""

def sum(n):
    i=1
    s=0
    while i<=2*n-1:
        s=s+i
        i=i+2
    print("sum=",s)
        
n=int(input("please input a number"))
sum(n)
# -*- coding: utf-8 -*-
"""
完成一个函数,将所给的(1,2,3,-5,-4,5,9,-8,-1)重新排列,使得所有负数都在正数的左边。

"""
def fun():
    num=[1,2,3,-5,-4,5,9,-8,-1]
    num.sort()
    print(num)
    num1=[1,2,3,-5,-4,5,9,-8,-1]
    num1.sort(reverse=True)
    print(num1)

fun()
# -*- coding: utf-8 -*-
"""
题目:假设有4种币值,面值分别为二角五分、一角、五分和一分。现在要找给某顾客六角三分钱。怎样找零钱才能给顾客的硬币个数最少
"""
"""
思路:每次选择面值不超过需要找顾客的钱的最大面值
"""
v=[25,10,5,1]
n=[0,0,0,0]
def greedy(T):
    if T==0:
        return
    elif T>v[0]:
        T=T-v[0];
        n[0]=n[0]+1
        greedy(T)
    elif v[0]>=T>v[1]:
        T=T-v[1];
        n[1]=n[1]+1
        greedy(T)
    elif v[1]>=T>v[2]:
        T=T-v[2];
        n[2]=n[2]+1
        greedy(T)
    else:
        T=T-v[3];
        n[3]=n[3]+1
        greedy(T)
    
def change():
    T=int(input("please input money"))
    greedy(T)
    count=0
    for i in n:
        count = count+i
    print(n)
    print("硬币个数:",count)
    
change()

第六次大作业

# -*- coding: utf-8 -*-
"""
1.a+b的n次幂的展开式中各项的系数很有规律,n=2,3,4时展开式中的各项系数分别是:1 2 1,1 3 3 1,1 4 6 4 1。这些系数构成了著名的杨辉三角形

       1
      1 1
     1 2 1
    1 3 3 1
   1 4 6 4 1
  1 5 10 10 5 1
编写代码,输入n值输出杨辉三角形

"""


def get_triangle(num):
	triangle=[]
	for i in  range(0,num+1):
		tmp=[1]*(i+1)
		for j in range(1,i):
			tmp[j]=triangle[i-1][j-1]+triangle[i-1][j]
		triangle.append(tmp)
	return triangle


def print_triangle(triangle):
	n = len(triangle)
	for i in range(0,len(triangle)):
		print(" ")

		for k in range(1,len(triangle)-i):
			print("  ",end='')

		for j in range(0,len(triangle[i])):
			print(triangle[i][j]," ",end='')


triangle=get_triangle(4)
print_triangle(triangle)

"""
2. 如果有两个数,其中任一个数除它本身以外的所有因数的和正好等于另一个数,
则称这两个数互为互满数。求出3000以内所有的互满数并输出。
"""


# 对因数求和
def appsum(x):
    s=0;i=1
    while i<x:
        if x%i == 0:
            s+=i
        i+=1
    return s

# 遍历3000以内所有数
for i in range(1, 3000):
    j = appsum(i)
    if (appsum(j)==i and i>j): #i的因数和=j且j的约数和等于i
        print(i, '与', j, '是互满数')
"""
3.验证任意一个大于5的奇数可表示为3个素数之和。
"""

def IsPrime(val):
    i=2
    while i<=val:
        if val%i ==0:
            break
        i=i+1
    if i==val:
        return True
    else:
        return False

b=int(input("Please input a even"))
if b%2==1:
    for i in range(2,b):
        for j in range(2,b-i):
            k = b-i-j;
            if (IsPrime(j) and IsPrime(j) and IsPrime(k) and i!=j!=k):
                print(i, "+", j,"+", k, "=", b)

else:
    print("不是偶数")

"""
4.若将某素数的各位数字顺序颠倒后得到的数仍是素数,则此数称为可逆素数。
求出100以内的可逆素数。
"""

def IsPrime(val):
    i=2
    while i<=val:
        if val%i ==0:
            break
        i=i+1
    if i==val:
        return True
    else:
        return False

def rev(n):
    x = n // 10
    y = n % 10
    r = y*10+x
    return r

for i in range(2,100):

    if i<10 and IsPrime(i):
        print("%d" % i)

    if (i>=10 and i<100 and IsPrime(i)):
        if IsPrime(rev(i)):
            print("%d" %i)
"""
5.将一个正整数分解质因数。例如:输入90 打印出90=2*3*3*5
"""

#思路:首先判断是否是质数,然后依次进行分解。除1以外的最小质数依次整除,直到自身被整除。
num = int(input("请输入一个数:"))
print(num, end='')
print('=', end='')
while (num!=1):
    for i in range(2,num+1):
        if (num % i) == 0:
            num = int(num / i)
            if num == 1:
                print('%d' %i,end='')
            else:
                print('%d*'%i,end='')
            break

第七次大作业

"""
1、编写人员类(Person),该类具有姓名(Name)、年龄(Age)、性别(Sex)等域。
然后通过对Person类的继承得到一个教师类(Teacher),该类能够存放教师的职称、学历、工资、奖金等信息,
并能计算出总收入(工资+奖金),要求对该类构造函数进行重载。
"""

class Person:
    # __init__方法在类的对象被创建时执行
    def __init__(self, Name, Age, Sex):
        self.Name = Name
        self.Age = Age
        self.Sex = Sex

class Teacher(Person):
    sum = 0
    def __init__(self, Name, Age, Sex, Title, Qual, Salary, Prize):
        self.Name = Name
        self.Age = Age
        self.Sex = Sex
        self.Title = Title
        self.Qual = Qual
        self.Salary = Salary
        self.Prize = Prize

    def p(self):
        print("Name:",self.Name)
        print("Age:", self.Age)
        print("Sex:", self.Sex)
        print("Title:", self.Title)
        print("Qual:", self.Qual)
        print("Salary:", self.Salary)
        print("Prize:", self.Prize)

    def count(self):
        sum=self.Salary+self.Prize
        print("sum is",sum)

tea=Teacher('li ming',20,'male','professor','doctor',5500,2000)
tea.p()
tea.count()
"""
2、实现如下功能:学校成员类具有成员的姓名和总人数属性。
老师类继承学校成员类,具有工资属性。学生类继承学校成员类,具有成绩属性。
创建对象时,总人数增一;对象注销时,总人数减一。

执行结果:
学校新加入一个成员:老黄
现在有成员1人
大家好,我叫:老黄
我是老师,我的工资是:3000
学校新加入一个成员:小河
现在有成员2人
大家好,我叫:小河
我是学生,我的成绩是:77
小河离开了,学校还有1人
老黄离开了,学校还有0人
"""

class SchoolMember:
    # 总人数,这个是类的变量
    sum_member = 0
    # __init__方法在类的对象被创建时执行
    def __init__(self, name):
        self.name = name
        SchoolMember.sum_member += 1
        print ("学校新加入一个成员:%s" % self.name)
        print ("现在有成员%d人" % SchoolMember.sum_member)

    # 自我介绍
    def say_hello(self):
        print("大家好,我叫:%s" % self.name)

    # __del__方法在对象不使用的时候运行
    def __del__(self):
        SchoolMember.sum_member -= 1
        print("%s离开了,学校还有%d人" % (self.name, SchoolMember.sum_member))

# 老师类继承学校成员类
class Teacher(SchoolMember):
    def __init__(self, name, salary):
        SchoolMember.__init__(self, name)
        self.salary = salary

    def say_hello(self):
        SchoolMember.say_hello(self)
        print
        "我是老师,我的工资是:%d" % self.salary

    def __del__(self):
        SchoolMember.__del__(self)

# 学生类
class Student(SchoolMember):
    def __init__(self, name, mark):
        SchoolMember.__init__(self, name)
        self.mark = mark

    def say_hello(self):
        SchoolMember.say_hello(self)
        print
        "我是学生,我的成绩是:%d" % self.mark

    def __del__(self):
        SchoolMember.__del__(self)


t = Teacher("老黄", 3000)
t.say_hello()
s = Student("小河", 77)
s.say_hello()

第八次大作业

"""
1、编程序,从函数输入一个字符串,将字符串中的数字删除,
并将大写字母改为小写,最后的结果在函数中打印。
例如输入Abc123De4f,则输出abcdef
"""

def f(A):
    B = []
    for i in A:
        if i >= 'a' and i <= 'z' or i >= 'A' and i <= 'Z':
            B.append(i)
    # join()方法用于将列表中的元素以指定的字符连接生成一个新的字符串
    C = ''.join(B)
    print(C.lower())

A = str(input("请输入一串字符:"))
f(A)
"""
2、编写函数,实现如下功能:从函数输入一个字符串,将
字符串中索引为偶数,同吋ASCII为奇数的字符后面加*号,
新生成的字符串在函数中打印。例如,输入字符串
ABCDEFG12345,则打印A*BC*DE*FG*12345。
"""
def fun(s):
    ret = ''
    # enumerate()函数用于将一个可遍历的数据对象组合为一个索引序列
    # [(0,list[0]),(1,list[1]),... ]
    for i,elem in enumerate(s):
        if i % 2 == 0 and ord(elem) % 2 != 0:
            ret += elem + ('*')
        else:
            ret += elem + ('')
    return ret

s = 'ABCDEFG12345'
print (fun(s))
"""
3、编写函数,统计字符串中的单词个数。例如输入 I am a boy ! 则返回单词个数为4。
"""

def f(x):
    B=[]
    B=x.split() # 字符串操作:默认以空格为切分,返回列表
    n=len(B)
    print(n)

x=str(input("请输入一串字符串:"))
f(x)
"""
4、创建一个字典,关键字为只包含字母的字符串
 a) 把字典中的键按照字母顺序显示出来。
 b) 根据已按照字母顺序排序好的键,显示这个字典中的键和值。
"""

# 创建一个字典,并把这个字典中的键按照字母顺序显示出来
user = {'A': 'jim', 'C': 'male', 'B': 18}
a = user.keys() #keys() 函数以列表返回一个字典所有的键
b = sorted(a)
for i in b:
    print(i)
# 现在根据已按照字母顺序排序好的键,显示出这个字典中的键和值
for i in b:
    print (i, user[i])
"""
5、建立字典。输入两个长度相同的列表,比如说,列表[1,2,3,...]和['abc', 'def', 'ghi', ...],
用这两个列表里的所有数据组成一个字典。像这样:{1:'abc', 2:'def', 3:'ghi', ...}。
"""


# dict()函数用于创建一个字典
# zip() 将对象中对应的元素打包成一个个元组


# 映射函数方式来构造字典
listdict = dict(zip([1,2,3], ['abc','def','ghi']))
print(listdict)

"""
6. 使用random模块中的randint()生成一个随机数集合:
从0到9(包括9)中随机选择,生成1到10个随机数。这些数
字组成集合A(A可以是可变集合,也可以不是)。同理,按此
方法生成集合B,显示结果 A丨B和 A & B 。
"""
import random

tmp = []
for i in range(0, 10):
    tmp.append(random.randint(0, 9))
A = set(tmp)
tmp = []
for i in range(0, 10):
    tmp.append(random.randrange(0, 10))
B = set(tmp)

print (A)
print (B)
print (A | B)
print (A & B)

第九次大作业

"""
1、将file1.txt文件中的每行按逆序方式输出到file2.txt文件中。
"""

trans_file = ''

# 保证无论是否出错都能正确地关闭文件,
# Python引入了with语句来自动帮我们调用close()方法

with open('file1.txt') as file:
    # 遍历file的每一行line
    for line in file:
        # Python列表切片应用,字符串逆序输出
        trans_file += line[ : :-1].strip()
        trans_file += '\n'

with open('file2.txt', 'w') as file:
    file.write(trans_file)

x= 'abcdaerea'
z=x[-1:3:-1]
print(z)

# b = a[i:j]  表示:复制a[i]到a[j-1],以生成新的list对象
# b = a[i:j:s]  表示:i,j与上面的一样,但s表示步进,缺省为1
# 当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
"""
2、scores.txt文件存放着某班学生的计算机课成绩,包含学号、平时成绩、期末成绩三列。
请根据平时成绩占40%,期末成绩占60%的比例计算总评成绩,并按学号、总评成绩两列写入另一个文件scored.txt中。
同时在屏幕上输出学生总人数,按总评成绩计算90分以上、80-89分、70-79分、60-69分、
60分以下各成绩区间的人数和班级总平均分(取小数点后两位)
"""

f = open("F:\\本科\\大一\\Python\\大作业\\python作业答案\\作业9\\2\\scores.txt")
a = f.readline()
line = (f.readline()).strip() # 移除字符串头尾空格,返回字符串
f2 = open("F:\\本科\\大一\\Python\\大作业\\python作业答案\\作业9\\2\\scored.txt",'w')
f2.write("学号 平均成绩\n")
L2 = [0,0,0,0,0]
count = 0
sum = 0
while (len(line) != 0):
    L1 = line.split() # 字符串操作:默认以空格为切分,返回列表
    f2.write(L1[0]+" ")
    f_score = int(int(L1[1])*0.4+int(L1[2])*0.6)
    if 90<f_score <=100:
        L2[0] += 1
    elif f_score >=80:
        L2[1] += 1
    elif f_score >=70:
        L2[2] += 1
    elif f_score >=60:
        L2[3] += 1
    else :
        L2[4] += 1
    count += 1
    sum += f_score
    f2.write(str(f_score)+"\n")
    line = (f.readline().strip())
f.close()
f2.close()
avg_score = int(sum/count)
print("学生总人数为{0},按总评成绩计,90以上{1}人,80-90有{2}人,"
      "70-80有{3}人,60-70有{4}人,60以下有{5}人,班级总平均分为{6}"
      .format(count,L2[0],L2[1],L2[2],L2[3],L2[4],avg_score))

第十次大作业

# 作业1:加法程序

from tkinter import *

def fun1(x,y):
    a = x
    b = y
    s='%s+%s=%.2f\n'%(str(a),str(b),float(a)+float(b))
    txt.insert(END,s)

def fun2():
    inp1.delete(0,END)
    inp2.delete(0,END)
    txt.delete(0.0,END) # text.delete(index1, index2) index1, index2 必须为 n.n的形式,
    #0.0代表的是下标为第0行的第0个元素,后面的tkinter.END表示末尾,


#初始化Tk()
root = Tk()
root.geometry('450x350')
root.title('加法')
inp1=Entry(root)
inp1.place(relx=0.15,rely=0.1,relwidth=0.2,relheight=0.1)
inp2=Entry(root)
inp2.place(relx=0.65,rely=0.1,relwidth=0.2,relheight=0.1)
btn1=Button(root,text='加法',command=lambda:fun1(inp1.get(),inp2.get()))
btn1.place(relx=0.15,rely=0.3,relwidth=0.2,relheight=0.1)
btn2=Button(root,text='清空',command=fun2)
btn2.place(relx=0.65,rely=0.3,relwidth=0.2,relheight=0.1)
txt=Text(root)
txt.place(relx=0.15,rely=0.5,relwidth=0.7,relheight=0.4)

root.mainloop()
# 作业2:四则运算程序

from tkinter import *

def fun1(x,y):
    a = x
    b = y
    s='%s加%s等于%.2f\n'%(str(a),str(b),float(a)+float(b))
    lab.config(text=s)

def fun2(x,y):
    a = x
    b = y
    s='%s减%s等于%.2f\n'%(str(a),str(b),float(a)-float(b))
    lab.config(text=s)

def fun3(x,y):
    a = x
    b = y
    s='%s乘以%s等于%.2f\n'%(str(a),str(b),float(a) * float(b))
    lab.config(text=s)

def fun4(x,y):
    a = x
    b = y
    s='%s除以%s等于%.2f\n'%(str(a),str(b),float(a) / float(b))
    lab.config(text=s)


#初始化Tk()
root = Tk()
root.geometry('450x350')
root.title('四则运算程序')


ent1=Entry(root)
ent1.place(relx=0.1,rely=0.1,relwidth=0.2,relheight=0.1)
ent2=Entry(root)
ent2.place(relx=0.6,rely=0.1,relwidth=0.2,relheight=0.1)

var = IntVar()
rb1=Radiobutton(root,text='加',variable=var,value=1,command=lambda:fun1(ent1.get(),ent2.get()))
rb1.place(relx=0.4,rely=0.3)
rb2=Radiobutton(root,text='减',variable=var,value=2,command=lambda:fun2(ent1.get(),ent2.get()))
rb2.place(relx=0.4,rely=0.4)
rb3=Radiobutton(root,text='乘',variable=var,value=3,command=lambda:fun3(ent1.get(),ent2.get()))
rb3.place(relx=0.4,rely=0.5)
rb4=Radiobutton(root,text='除',variable=var,value=4,command=lambda:fun4(ent1.get(),ent2.get()))
rb4.place(relx=0.4,rely=0.6)

lab=Label(root,text=' ')
lab.place(relx=0.35,rely=0.75)

root.mainloop()
from tkinter import *

#初始化Tk()
root=Tk()
root.title("售票程序")
root.geometry("500x500")
label1=Label(root,text="请选择景点:")
label1.pack()

var=IntVar()

rd1=Radiobutton(root,text=("东方明珠"),variable=var,value=1)
rd1.pack()

rd2=Radiobutton(root,text=("野生动物园"),variable=var,value=2)
rd2.pack()

rd3=Radiobutton(root,text=("科技馆"),variable=var,value=3)
rd3.pack()

def fun():
    if var.get()==1:
        a=160
        b=int(num.get())
        if b>=50:
            sum=a*0.8*b
        elif b>=20 and b<50:
            sum=a*0.95*b
        else:
            sum=a*b
        s=("购买东方明珠票%s张,票价%d元 \n"%(b,sum))
        txt.insert(END,s)
        num.delete(0,END)
    elif var.get()==2:
        a=130
        b=int(num.get())
        if b>=50:
            sum=a*0.8*b
        elif b>=20 and b<50:
            sum=a*0.95*b
        else:
            sum=a*b
        s=("购买野生动物园票%s张,票价%d元 \n"%(b,sum))
        txt.insert(END,s)
        num.delete(0,END)
    elif var.get()==3:
        a=60
        b=int(num.get())
        if b>=50:
            sum=a*0.8*b
        elif b>=20 and b<50:
            sum=a*0.95*b
        else:
            sum=a*b
        s=("购买科技馆票%s张,票价%d元 \n"%(b,sum))
        txt.insert(END,s)
        num.delete(0,END)

label2=Label(root,text=("请输入购票张数:"))
label2.pack()

num=Entry(root)
num.pack()
bt = Button(root,text = '计算',command = fun)
bt.pack()

txt=Text(root)
txt.place(relx=0.1,rely=0.45,relheight=0.5,relwidth=0.8)

root.mainloop()

你可能感兴趣的:(DHU Python Curriculumly Learning【5】——大作业_key_by_TA)