上机实验(变量和数据类型)

  1. 对于如下代码中的各个 print 语句,请先预测其计算结果,在代码中把预测结果写到行尾注释中;然后运行代码,比较运行结果是否与预期相符合,并分析不符合预期的原因。

    i1 = 3
    i2 = 12
    i3 = 2
    f1 = 3.
    f2 = 10.2
    s1 = '3'
    
    print(i1 * i2)  # 36
    print(i1 - i2)
    print(i1 ** i3)
    print(float(i1 * i2))
    print(i2 / i1)
    
    print('-'*20)
    
    print(i2 // i1)
    print(i2 % i1)
    print(i1 + i1 * i2 / i3)
    print(f1 * f2)
    print(i2 / f1)
    
    print('-'*20)
    
    print(f2 // f1)
    print(f2 % f1)
    print(i3 ** f1)
    print(int(i2 / f1))
    print(str(i2 / f1))
    
    print('-'*20)
    
    print(i2 / int(s1))
    print(i2 / int(f1))
    print(abs(i1 - i2))
    print(max(i1, i2))
    print(round(f2 / f1))

    注:以上代码用到了一些 Python 内置函数,请点击此链接查看这些函数的作用。

  2. 通过编程实现从键盘上输入一个整数,将其转换为整数,并将该数字乘以 2,在显示器上打印运算结果,同时打印结果的数据类型。

  3. 如何将一个整数转换为浮点数?请至少给出两种方法。

  4. 请编写程序从键盘上输入一个整数,然后分别打印该数字的 10 进制、2 进制、8 进制和 16 进制字面值。

  5. 已知 $\alpha = 30°$,请通过编程验证如下两个倍角公式的正确性:

    $$\sin 2\alpha =2\sin \alpha \cos \alpha\tag{1}$$ $$\tan 2\alpha =\frac{2\tan \alpha}{1-\tan ^2\alpha}\tag{2}$$

    注:该题必须要用到 math 模块的 radians()sin()cos()tan()isclose() 函数,需要先通过 import math 导入该模块,请自行查看这些函数的作用并使用。

  6. 自行学习 Python 的 math 模块,说明并演示如何截断或舍去浮点数的小数部分,各种方式有什么效果。

  7. 对于如下代码中的各个 print 语句,请先预测其计算结果,在代码中把预测结果写到行尾注释中;然后运行代码,比较运行结果是否与预期相符合,并分析不符合预期的原因。

    s1 = "Hello,"
    s2 = 'world!'
    s3 = "Python 程序设计"
    c = chr(65)  # 65 是字符 'A' 的码点(Unicode 编码值)
    
    print(len(s1))  # 6
    print(len(s3))
    print(s1, s2)
    print(s1 + s2)
    print(s3[6])
    print(s3[0:6])
    print(s3[:6])
    print(s3[:-5])
    print(s3[7:])
    print("Hello, \nworld!")
    print("Hello, \rman!")
    print(len("Hello, \rworld!"))
    print(len(r"Hello, \rworld!"))
    print(len("您\u597d!"))
    print(type(str(33)))
    print(c)
    print(ord(c))
    
    print(s1.find('lo'))
    print(s1.startswith('He'))
    print(s1.replace('el', 'a'))
    print(s1.islower())
    print(s1.upper())

    注:此题用到了 Python 的内置函数 chr()ord(),这是一对互逆函数,前者将返回某整数码点对应的字符构成的字符串,后者将某个字符构成的字符串转换为整数码点。另外,此题也用到了多个字符串的方法,需要自行查阅了解。

  8. 已有如下代码:

    name1 = 'Tom'
    score1 = 89.352
    name2 = 'Christine'
    score2 = 77.000
    name3 = 'Shirley'
    score3 = 69.025
    
    print(f'{"Name":15}{"Score"}')

    请继续完成此段代码,利用格式字符串字面值(f-string),做到在完全不使用空格和水平制表符进行对齐的条件下,以如下规范的格式打印成绩单:

    Name           Score
    Tom            89.4
    Christine      77.0
    Shirley        69.0
  9. 对于如下代码中的各个 print 语句,请先预测其计算结果,在代码中把预测结果写到行尾注释中;然后运行代码,比较运行结果是否与预期相符合,并分析不符合预期的原因。

    i = 3
    print(i > -3)
    print(i == 3)
    print(i == 3.0)
    print(1 < i < 3)
    print(1 < i <= 3)
    
    print('-' * 20)
    
    print(i > 1 and i < 3)
    print(i > 1 or i < 3)
    print(1 < i < 3 and 1 < i <= 3)
    print(1 < i < 3 or 1 < i <= 3)
    print(not i < 10)
    
    print('-' * 20)
    
    print(False + i)
    print(True + i)
    print(True and i)
    print(False and i)
    print(True or i)