【第1周程序】Python 基本语法元素

2020-12-28
2022-04-06
4 min read
Hits

  程序设计练习题和考试题

温度转换

这是"实例"题,与课上讲解实例相同,请作答检验学习效果。

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

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

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

C = ( F - 32 ) / 1.8

F = C * 1.8 + 32

要求如下

  1. 输入输出的摄氏度可采用大小写字母 C 结尾,温度可以是整数或小数,如:12.34C 指摄氏度 12.34 度;
  2. 输入输出的华氏度可采用大小写字母 F 结尾,温度可以是整数或小数,如:87.65F 指华氏度 87.65 度;
  3. 输出保留小数点后两位,输入格式错误时,输出提示:输入格式错误;
  4. 使用 input() 获得测试用例输入时,不要增加提示字符串。

参考答案

##TempConvert.py
TempStr = input()
if TempStr[-1] in ['F', 'f']:
    C = (eval(TempStr[0:-1]) - 32)/1.8
    print("{:.2f}C".format(C))
elif TempStr[-1] in ['C', 'c']:
    F = 1.8*eval(TempStr[0:-1]) + 32
    print("{:.2f}F".format(F))
else:
    print("输入格式错误")

答案解析

  1. 将输入字符串转换为数字时使用 eval() 函数,不要用 int() 函数,因为输入的数字可能不是整数;
  2. 采用 {:.2f} 将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为 10 度,输出为 10.00。

最优解

T = input()
if T[-1] in ['F','f']:
    print('{:.2f}C'.format((eval(T[0:-1])-32)/1.8))
elif T[-1] in ['C','c']:
    print('{:.2f}F'.format(eval(T[0:-1])*1.8+ 32))
else:
    print('输入格式错误')

Hello World I

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

输出 Hello World,注意大小写。

参考答案

print('Hello World')

数字形式转换 I

获得用户输入的一个正整数输入,输出该数字对应的中文字符表示。

0 到 9 对应的中文字符分别是:零一二三四五六七八九

参考答案

template = "零一二三四五六七八九"

s = input()
for c in s:
    print(template[eval(c)], end="")

答案解析

print() 中增加 end="" 参数表示输出后不增加换行,多个 print() 可以连续输出。

温度转换 II

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

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

转换算法如下:(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']:
    C = (eval(TempStr[1:]) - 32)/1.8
    print("C{:.2f}".format(C))
elif TempStr[0] in ['C']:
    F = 1.8*eval(TempStr[1:]) + 32
    print("F{:.2f}".format(F))
else:
    print() #不输入任何错误提示

答案解析

这个实例扩展自实例1,请注意以下三点:

  1. 将输入字符串转换为数字时使用 eval() 函数,不要用 int() 函数,因为输入的数字可能不是整数;
  2. 采用 {:.2f} 将输出数字变成两位小数点表示时,即使数学上该输出值是整数,也会按照小数方式输出,例如,转换后温度为 10 度,输出为 10.00;
  3. TempStr[1:] 表示字符串除首字符外的所有字符。

最优解

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

货币转换 I

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

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

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

注意:

  1. 这是一个 OJ 题目,获得输入请使用 input();
  2. 不提示输出格式错误,结果小数点后保留两位。

参考答案

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

答案解析

这个代码是实例 1 的一个扩展,注意以下 3 点:

  1. eval()函数将字符串转换成数字,不能省略;
  2. == 表示 “等于”,in 表示成员包含,对于这个题目,由于只允许输入采用全大写方式,两种方法均可;
  3. :.2f 输出小数点后两位。

Hello World的条件输出

获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求:

如果输入值是 0,直接输出"Hello World"

如果输入值大于 0,以两个字符一行方式输出"Hello World"(空格也是字符)

如果输入值小于 0,以垂直方式输出"Hello World"

参考答案

n = eval(input())
if n == 0:
    print("Hello World")
elif n > 0:
    print("He\nll\no \nWo\nrl\nd")
else:
    for c in "Hello World":
        print(c)

数值运算

获得用户输入的一个字符串,格式如下:

M OP N

其中,M 和 N 是任何数字,OP 代表一种操作,表示为如下四种:+, -, *, /(加减乘除)

根据 OP,输出 M OP N 的运算结果,统一保存小数点后2位。

注意:M 和 OP、OP 和 N 之间可以存在多个空格,不考虑输入错误情况。

参考答案

s = input()
print("{:.2f}".format(eval(s)))

答案解析

体会 eval() 函数的作用,在编程中用处很大。

最优解

print("{:.2f}".format(eval(input())))