助教写的参考答案,嗯~ 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()