2018北理工python语言程序设计课后编程及测试解答(已完结)

注:我发现2019年的MOOC北理工《Python语言程序设计》课程的编程作业有了很多改动,所以本文只能起一个基础的示例程序参考的作用了。请注意,本文是2018年北理工python课程编程作业的解答哦~~

 

一、练习1题目如下:

 

题1:Hello World I

这是学习每种程序设计语言的第一个实例。

输出Hello World,注意大小写。

代码如下

print("Hello World")

 

题2:Hello World II

垂直输出"Hello World",全部代码不超过2行。

代码如下:

for i in "Hello World":

    print(i)

 

题3:N的多次方 

编写一个程序,计算输入数字N的0次方到5次方结果,并依次输出这6个结果,输出结果间用空格分隔。其中:N是一个整数或浮点数。

代码如下:

num = eval(input())

print(num**0, num, num**2, num**3, num**4, num**5)

 

题4:温度转换 II

温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fabrenheit)。

请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。

转换算法如下:(C表示摄氏度、F表示华氏度)

         C = ( F - 32 ) / 1.8

         F = C * 1.8 + 32

要求如下:

(1) 输入输出的摄氏度采用大写字母C开头,温度可以是整数或小数,如:C12.34指摄氏度12.34度;

(2) 输入输出的华氏度采用大写字母F开头,温度可以是整数或小数,如:F87.65指摄氏度87.65度;

(3) 不考虑异常输入的问题,输出保留小数点后两位;

(4) 使用input()获得测试用例输入时,不要增加提示字符串。

代码如下:

#TempConvert.py
TempStr=input("")


if TempStr[0] in ['F', 'f']:                                  
     C=(eval(TempStr[1:]) - 32)/1.8
     print("C{:.2f}".format(C))
elif  TempStr[0] in ['C', 'c']:
     F=1.8 * eval(TempStr[1:])+ 32
     print("F{:.2f}".format(F))
else:

    print("输入格式错误")

 

题5:货币转换 I 

人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:

人民币和美元间汇率固定为:1美元 = 6.78人民币。

程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用RMB表示,美元USD表示,符号和数值之间没有空格。

注意:

(1) 这是一个OJ题目,获得输入请使用input() 

代码如下:

nw=input("")
if nw[0:3] in ["RMB"]:
    c=(eval(nw[3:]))/6.78
    print("USD{:.2f}".format(c))
elif nw[0:3] in ['USD'] :
    c=(eval(nw[3:])) * 6.78
    print("RMB{:.2f}".format(c))
else:

    print("error!")

 

二、练习2题目如下:

 

1~4题不评分,略。

 

题5:长度转换 I

请编写程序,完成米和英寸之间的长度转换,基本需求如下:

输入英寸,转换成米;

输入米,转换成英寸。

英寸采用in标记,放在数值结尾;米采用m标记,放在数值结尾。

1 米 = 39.37 英寸

输入参数请使用input(),不要增加提示字符串信息。

代码如下:

str=input("")
if str[-1] in ["m"]:
    c=eval(str[0:-1])*39.37
    print("{:.3f}in".format(c))
elif str[-2:] in ["in"]:
    c=eval(str[:-2]) / 39.37
    print("{:.3f}m".format(c))
else:

    print("error")

 

三、练习3题目如下:

 

题1:平方值格式化

获得用户输入的一个整数N,计算N的平方值;结果采用宽度20字符方式居中输出,空余字符采用减号(-)填充。

如果结果超过20个字符,则以结果宽度为准。

代码如下

s=input("")


c=eval(s) ** 2

print("{:-^20}".format(c))

 

题2:同符号数学运算

读入一个整数N,分别计算如下内容:

1. N的绝对值;

2. N与10进行同符号加法、减法和乘法运算,同符号运算指使用N的绝对值与另一个数进行运算,运算结果的绝对值被赋予N相同的符号,其中,0的符号是正号。

将上述4项结果在一行输出,采用空格分隔,输出结果均为整数。

代码如下

s=input("")
c=eval(s)
a1=abs(c)
if c>=0:
 a2=(a1+10)
 a3=abs((a1-10))
 a4=(a1*10)
elif c<0:
    a2=-abs((a1+10))
    a3=-abs((a1-10))
    a4=-(a1*10)

print(a1, a2, a3, a4)

 

题3:天天向上的力量 III

一年365天,以第1天的能力值为基数,记为1.0。

当好好学习时,能力值相比前一天提高N‰;当没有学习时,能力值相比前一天下降N‰。

每天努力或放任,一年下来的能力值相差多少呢?其中,N的取值范围是0到100,N可以是小数,假设输入符合要求。

获得用户输入的N,计算每天努力和每天放任365天后的能力值及能力间比值,其中,能力值保留小数点后2位,能力间比值输出整数,输出结果间采用英文逗号分隔。

使用input()获得N。

代码如下

#The power of daydayup.py
N=eval(input(""))/1000

s1,s2=1,1
for i in range(365):
    s1=s1*(1+N)
    s2*=(1-N)


print("{:.2f},{:.2f},{:.0f}".format(s1,s2,s1//s2))

 

题4:星号三角形 I

读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:

第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。

代码如下

N=eval(input(""))
i=0
while 2*i+1 <= N:
    c=(2*i+1)*"*"
    print("{:^{}}".format(c,N))

    i+=1

 

题5:恺撒密码 I

凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:

原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26

上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26

假设用户可能使用的输入仅包含小写字母a~z和空格,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。

代码如下

sr1="abcdefghijklmnopqrstuvwxyzabc"
str1=input("")
str2=""
for i in str1:
    if i==" ":
        str2+=" "
    else:
        j=sr1.find(i)
        str2+=sr1[j+3]

print(str2)

也可修改为

sr1="abcdefghijklmnopqrstuvwxyz"
str1=input("")
str2=""
for i in str1:
    if i==" ":
        str2+=" "
    else:
        j=sr1.find(i)
        str2=str2+sr1[(j+3)%26]

print(str2)

另外,用unicode编码转换函数也是可以实现的,不过,对于后面的xyz字母,用 +3 mod 26就不一定正确了,在unicode编码中,对26取余数可能得到的值并不在字母编号中,所以对于字符编码大于xyz的字母,应该使用 +3-26来置换成abc相应字母。

 

另外补充一下python123第一次编程测试第二题的解答:

本题是对热量单位转换的,代码如下

x = input("")
if x[-3:] in ["cal"]:
    y1=eval(x[0:-3])*4.186
    print("{:.3f}J".format(y1))
elif x[-1] in ["J"]:
    y1=eval(x[0:-1])/4.186
    print("{:.3f}cal".format(y1))
else:

    print("input error!")

比较简单,我就不多做解释了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值