上机作业-10月18日 说明: 1.在以下题目中,可能需要用到使用if.else.语句做条件判断,进行决策控制,有关语法 见本作业要求后面的“补充材料”。 2.当场完成作业,每个题目文件以:题号py命名,比如第一个题目1py,然后,把5 个文件打包成:你的学号.rar文件,例如:5070309877.rar。用你的学号命名,以便与其他 同学的文件区分。 发送到助教邮箱subaihua.tom@gmail.com Problem 1 问题描述: 请编写程序,从键盘直接输入一个字符串,程序逆序输出原字符串,将结果直接输出。 输入举例:abcdefg 输出举例:gfedcba Problem 2 问题描述: 请编写程序,从键盘输入a(a≠0)、b、c,他们分别代表一元二次方程ax2+bx+c=0 的系数,然后输出方程的解。 输入举例:121 输出举例:-1 输入举例:11-2 输出举例:-12 输入举例:111 输出举例:No solution! Problem 3 问题描述: 请编写程序,从键盘直接输入两个由a、b、c.、g组成的字符串sl、s2,其中a、b、 c、g分别代表0、1、2、9十个自然数。程序将计算乘法s1Xs2,最终结果仍旧 使用字母表示。 输入举例: cf baa 输入举例: cfaa Problem 4 问题描述: 请编写程序,处理给定的record.txt文件(记录了名字、收入、支出、年龄情况),要求输 出:
上机作业-10 月 18 日 说明: 1.在以下题目中,可能需要用到使用 if... else ...语句做条件判断,进行决策控制,有关语法 见本作业要求后面的“补充材料”。 2.当场完成作业,每个题目文件以: 题号.py 命名,比如第一个题目 1.py,...,然后,把 5 个文件打包成:你的学号.rar 文件,例如:5070309877.rar。用你的学号命名,以便与其他 同学的文件区分。 发送到助教邮箱 subaihua.tom@gmail.com Problem 1 问题描述: 请编写程序,从键盘直接输入一个字符串,程序逆序输出原字符串,将结果直接输出。 输入举例:abcdefg 输出举例:gfedcba Problem 2 问题描述: 请编写程序,从键盘输入 a(a≠0)、b、c,他们分别代表一元二次方程 ax²+ bx + c = 0 的系数,然后输出方程的解。 输入举例:1 2 1 输出举例:-1 输入举例:1 -1 -2 输出举例:-1 2 输入举例:1 1 1 输出举例:No solution! Problem 3 问题描述: 请编写程序,从键盘直接输入两个由 a、b、c......、g 组成的字符串 s1、s2,其中 a、b、 c......、g 分别代表 0、1、2......、9 十个自然数。程序将计算乘法 s1×s2,最终结果仍旧 使用字母表示。 输入举例: cf baa 输入举例: cfaa Problem 4 问题描述: 请编写程序,处理给定的 record.txt 文件(记录了名字、收入、支出、年龄情况),要求输 出:
①支出收入比例(支出收入)最高的人的名字: ②最接近30岁的人的名字。 Problem 5 改写以下的futal value.py程序(即教材140页~l42页),要求改写后的程序用折线图代替直 方图。 futval_graph.py from graphics import* def main(): Introduction print "This program plots the growth of a 10-year investment. Get principal and interest rate principal input ("Enter the initial principal:" apr input ("Enter the annualized interest rate:" Create a graphics window with labels on left edge win=Graph Win("Investment Growth Chart",320,240) win.setBackground("white") Text(Point (20.230)."0.0k").draw(win) Text (Point(20,180),"2.5k").draw(win) Text (Point(20,130),"5.0k").draw (win) Text (Point(20,80),"7.5k").draw(win) Text (Point(20,30),"10.0k").draw (win) Draw bar for initial principal height principal 0.02 bar Rectangle (Point(40,230),Point(65,230-height)) bar.setFill("green") bar.setWidth(2) bar.draw (win) Draw bars for successive years for year in range (1,11): calculate value for the next year principal principal *(1+apr) draw bar for this value xll year +25+40 height principal *0.02 bar Rectangle (Point (xll,230),Point(xll+25,230-height)) bar .setFill ("green")
① 支出收入比例(支出/收入)最高的人的名字; ② 最接近 30 岁的人的名字。 Problem 5 改写以下的 futal_value.py 程序(即教材 140 页~142 页),要求改写后的程序用折线图代替直 方图。 # futval_graph.py from graphics import * def main(): # Introduction print "This program plots the growth of a 10-year investment." # Get principal and interest rate principal = input ("Enter the initial principal: ") apr = input ("Enter the annualized interest rate: ") # Create a graphics window with labels on left edge win = GraphWin("Investment Growth Chart", 320, 240) win . setBackground("white") Text (Point (20, 230), "0.0k").draw (win) Text (Point (20, 180), "2.5k").draw(win) Text (Point (20, 130) , "5.0k").draw (win) Text (Point (20, 80) , "7.5k").draw(win) Text (Point (20, 30) , "10.0k").draw (win) # Draw bar for initial principal height = principal * 0.02 bar = Rectangle (Point (40, 230), Point (65, 230-height)) bar. setFill( "green") bar.setWidth(2) bar. draw (win) # Draw bars for successive years for year in range (1,11): # calculate value for the next year principal = principal * (1 + apr) # draw bar for this value xll = year * 25 + 40 height = principal * 0.02 bar = Rectangle (Point (xll, 230), Point (xll+25, 230-height)) bar .setFill ( "green")
bar.setWidth(2) bar.draw (win) raw_input("Press to quit") 补充材料: 在以上题目中,可能需要用到使用if.else.语句做条件判断,进行决策控制(if.else.语 句的内容见第7章),此处做简要介绍。 一、以下是课本209页上的一段代码,这段代码使用了“if..else”语句,用于判断条件(如 discrim<0)的真假,例如这段代码在discrim<0为真时,打印nThe equation has no real roots!” 反之,在discrim<0为假时,计算并打印出rootl,root2. quadratic3.py import math def main(): print "This program finds the real solutions to a quadratic\n" a,b,c=inputC'Please enter the coefficients(a,b,c):" discrim =b*b-4*a*c if discrim <0: print "\nThe equation has no real roots!" else discRoot=math.sqrt(b *b-4*a*c) rootl =(-b+discRoot)/(2 a) root2=(-b-discRoot)/(2 a) print"nThe solutions are:",rootl,root2 main() 二、“if.clse”语句可以嵌套在另一个if.else.”语句中,如下的代码,是对前一代码的 修改,其中在第一个else中嵌套了另一个“if.else”语句。 quadratic4.py import math def main(): print "This program finds the real solutions to a quadratic\n" a,b,c=inputC'Please enter the coefficients(a,b,c):" discrim =b*b-4*a*c if discrim<0: print"\nThe equation has no real roots!" else if discrim ==0: root=-b/(2*a)
bar.setWidth(2) bar .draw (win) raw_input( "Press to quit") 补充材料: 在以上题目中,可能需要用到使用if... else ...语句做条件判断,进行决策控制(if... else ...语 句的内容见第7章),此处做简要介绍。 一、以下是课本209页上的一段代码,这段代码使用了“if... else ...”语句,用于判断条件(如 discrim < 0)的真假,例如这段代码在discrim < 0 为真时,打印“\nThe equation has no real roots!” 反之,在discrim < 0 为假时, 计算并打印出root1,root2. # quadratic3.py import math def main() : print "This program finds the real solutions to a quadratic\n" a, b, c = inputC'Please enter the coefficients (a, b, c) : ") discrim =b*b-4*a*c if discrim < 0: print "\nThe equation has no real roots!" else discRoot = math.sqrt(b *b-4*a*c) rootl = (-b + discRoot) / (2 * a) root2 = (-b - discRoot) / (2 * a) print "\nThe solutions are:", rootl, root2 main() 二、“if... else ...”语句可以嵌套在另一个“if... else ...”语句中,如下的代码,是对前一代码的 修改,其中在第一个else中嵌套了另一个“if... else ...”语句。 # quadratic4.py import math def main() : print "This program finds the real solutions to a quadratic\n" a, b, c = inputC'Please enter the coefficients (a, b, c) : ") discrim =b*b-4*a*c if discrim < 0: print "\nThe equation has no real roots!" else if discrim == 0: root = -b / (2 * a)
print "nThere is a double root at",root else: discRoot math.sqrt(b*b-4*a*c) rootl=(-b+discRoot)/(2*a) root2=(-b-discRoot)/(2*a) print"nThe solutions are:",rootl,root2 main() 三、条件语句中的条件还可以由多个条件通过逻辑运算符and,or,not连接起来,形成 复杂的逻辑条件,例如: if xl >x2 and xl x2 and xl =表示大于或者等于。and表示所连接前后两个条件同时为真,or表示所连接前后 两个条件至少一个为真
print "\nThere is a double root at", root else: discRoot = math.sqrt(b *b-4*a*c) rootl = (-b + discRoot) / (2 * a) root2 = (-b - discRoot) / (2 * a) print "\nThe solutions are:", rootl, root2 main() 三、条件语句中的条件还可以由多个条件通过逻辑运算符 and, or,not 连接起来,形成 复杂的逻辑条件,例如: if xl >= x2 and xl = x2 and xl = 表示大于或者等于。and 表示所连接前后两个条件同时为真, or 表示所连接前后 两个条件至少一个为真