首页 > Python资料 博客日记
【全解析 | PTA】浙大版《Python 程序设计》题目集-第二章
2024-03-18 14:00:07Python资料围观301次
第二章 Python语言概述
一、判断题
1.输入正整数6和5,要求和,6+66+666+6666+66666,下面程序正确吗?F
a=int(input())
n=int(input())
print(sum([int('a'*i) for i in range(1,n+1)]))
在代码中,使用了字符串 ‘a’ 而不是变量 a 的值是因为字符串 ‘a’ 在引号内被视为文本常量,而不是变量。这意味着在表达式 int('a'*i) 中,‘a’ 被视为字符 ‘a’ 的文本表示,而不是变量 a 所代表的用户输入的值。
如果您想要使用变量 a 中的值,您需要使用实际的变量而不是字符串 ‘a’。因此,需要将 ‘a’ 替换为 str(a)
2.下面程序的运行结果是4。F
i=3
++i
Python没有自增自减运算符
3.当输入是:45,8 时,下面程序的输出结果是37。F
a,b = input().split(',')
b=int(b)
c=int('a',b)
print(c)
int()函数的进制转换,这道题代码错了c=int('a',b),书p40
4.当输入是10.0时,下面程序的输出是f(10.0) = 0.1。F
x=int(input())
if x==0:
result=0
else:
result=1/x
print('f({0:.1f}) = {1:.1f}'.format(x,result))
第1行代码就错了,int不能把字符串10.0转为整型(改成float可以),因为还有一个点号呀,int能怎么对点号进行处理呢
5.表达式 -2**4 等于16。F
牢记运算符优先级
6.下面程序的输入是5,输出是:F
*****
*****
m=int(input())
print('{:^5}'.format('*'*m))
print('{:^m}'.format('*'*m))
第三行错了,m不会被直接替换为变量值
7.下面程序的输出是:这是字符串输出格式□□123。□表示空格。F
print("这是字符串输出格式{:5s}".format("123"))
无对齐格式控制,默认左对齐,填充的两个空格在右侧!!!理解清楚左对齐,正确为print("这是字符串输出格式{:>5s}".format("123")),书p66
8.下面语句的输出是:这是数字输出格式□□123。 □表示空格。T
print("这是数字输出格式{:5d}".format(123))
f ormat对于部分对象默认左对齐,对于数字默认右对齐
9. int(True)的返回值是1。T
在Python中,布尔值 `True` 和 `False` 分别对应等价为整数 `1` 和 `0`。
10. bool(FALSE)的返回值是True。F
`bool()` 函数将某个值转换为布尔类型时,遵循以下规则:
1. 任何数值类型的零值(如 `0`、`0.0`、`0j`)、空序列(如 `''`、`[]`、`()`、`{}`)以及特殊值 `None` 都会被转换为布尔值 `False`。
2. 非零数值、非空序列以及其他非空对象(包括字符串中含有内容的情况)都会被转换为布尔值 `True`。
`bool(False)` 会返回 `False`,因为 `False` 本身就是布尔值。
并且需要注意的是,FALSE是错误的,要写成False,True也同理
11. bool([])的返回值是False。T
12. bool(None)的返回值是False。T
None不能理解为0,None == 0 -> False
13. print(bin(12.5))的输出是0b1100.F
`bin()` 函数用于将整数转换为二进制字符串表示形式。然而,`bin()` 函数并不适用于浮点数。当你尝试使用 `bin()` 函数来处理浮点数时,Python 会报错,因为该函数要求输入的是整数。
14. int("92",8)的值是74。F
代表把八进制数字字符92转换成十进制数,但是9是不合法的八进制数
15.表达式3 and 0 and "hello"的值是False。F
按照从左到右的顺序进行计算。当遇到 and 运算符时,如果左边的表达式结果为 False 或者等价于 False 的值,Python 将立即返回该值;如果左边的表达式结果为 True 或者等价于 True 的值,Python 将继续计算右边的表达式。值为0!!!
print(3 and 0 and "hello");print( 3 and 0 and 5) 都是0不是False
16. z已赋值,x=(y=z+1)语句是错误语句。T
在Python中,赋值语句并不像一些其他编程语言那样可以嵌套进行。在语句 x=(y=z+1) 中,y=z+1 是一个赋值表达式,它将 z+1 的值赋给 y,然后尝试将这个赋值表达式的结果赋给 x。但这种嵌套赋值并不是 Python 语法所支持的。
二、单选题
1.下列数据类型中, Python不支持的是A.char
2. Python 语句print(type(1J))的输出结果是A.<class'complex'>
3. Python 语句print(type(1/2))的输出结果是C.<class 'float'>
4. Python 语句print(type(1//2))的输出结果是A.<class 'int'>
5. Python 语句 a=121+1.21; print(type(a))的输出结果B.<class 'float'>
整数和浮点数混合运算的结果是浮点数
6. Python 语句 print(0xA + 0xB)的输出结果是D.21
0b二进制,0o八进制,0X十六进制,输出结果为10+11=21
7. Python 语句x=’car’; y = 2; print (x+y)的输出结果是A.
语法错
字符串拼接:1、多个字符串+号拼接;2、直接放在字符串后面实现拼接,注意不能是字符串变量;3、用*号实现字符串复制‘p’*3=ppp
8.表达式1+2*3.14>0的结果类型是: D.bool 优先级,p37
9.如math模块已引入,Python 表达式 math.sqrt(4)*math.sqrt(9)的值为D.6.0
Ps:math库函数好像返回都是浮点数,可以自己编译运行一下
10.关于Python中的复数,下列说法错误的是C.虚部必须后缀j, 且必须是小写
虚部后缀j/J大小写都可以;表示复数的语法是real + imag j;实部和虚部都是浮点数;方法conjugate 返回复数的共轭复数
11. Python 语句 print(chr(65))的运行结果是D.A
12.关于Python字符串,下列说法错误的是 B.字符串以\0标志字符串的结束
在Python中,字符串不需要使用\0来标志字符串的结束。通常情况下,在Python中,字符串可以用单引号'或双引号"括起来,Python会自动识别字符串的结束位置。在C语言等其他语言中,使用\0来表示字符串的结束,但在Python中不需要这样做。
D.在三引号字符串中可以包含换行回车等特殊字符;不需要转义字符
三、填空题
1.Python表达式 10 + 5//3 –True+False的值为10
//整除运算,余数会被截取
2.Python表达式 3**2**3 的值为6561
幂的优先级最高,且是从右往左结合
3.Python表达式 round(17.0/3**2,2) 的值为1.89
round(x,n)函数返回x的四舍五入值,n为保留小数位数
4.Python表达式 0 and 1 or not 2<True 的值为True
牢记运算符优先级和结合性 P37;>,<,= > not > and > or
5. Python语句print(int("20",16), int("101",2))的输出结果是32 5
6. Python语句print(hex(16), bin(10))的输出结果是(进制用小写字母表示)0x10 0b1010
hex()0x为默认前缀,返回16进制字符串:同理还有bin(),oct(),注意返回的都是字符串
7.已知a=3;b=5;c=6;d=True,则表达式 not d or a>=0 and a+c>b+3的值是True
8. Python语句 print(abs(-10.2), round(abs(8-2j),3)) 的输出结果是10.2 8.246
abs()取绝对值,就是算复数的模
9.Python语句x=True; y=False; z=False; print(x or y and z)的程序运行结果是True 优先级啊!!!not>and>or!!!
10.Python语句 x=0; y= True; print(x>=y and‘A'<'B') 的程序运行结果是False
11.Python表达式16-25>78/2 or "XYZ"!="xyz"and not (10-6>18/2)的值是True
12. Python输出 print("hello" 'world')的结果是helloworld
13.表达式((2>=2) or (2<2)) and 2的值为多少?2
这个表达式中,((2>=2) or (2<2)) 结果为 True,因为其中一个条件 (2>=2) 为 True。然后,True and 2 等于 2,因为 and 运算符返回最后一个条件的值,而最后一个条件为 2。所以整个表达式的值为 2。(如果and中计算表达式的所有值都为真,则返回最后一个真值)
14.表达式 3 and 0 and 5的结果是什么?0
在Python中,布尔上下文中的数字0被视为False,而非零数字被视为True。在逻辑运算中,and 运算符会从左至右逐个检查表达式中的值,如果遇到 False 的情况,就会停止并返回这个 False 值。
15. 表达式 --3 的结果是什么?3
16. 表达式 ---3 的结果是什么?-3
17. 表达式32.2//6-24//6的值是1.0
18. 猜生日
运行下面程序,输入是10011时,输出是25
如果你的生日在列表中,输入1,否则输入0。如你的生日是19号,输入11001。这个程序能猜到你的生日吗?yes。能,填yes;不能,填no。
lst1=[1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31]
lst2=[2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31]
lst3=[4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31]
lst4=[8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31]
lst5=[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
s=input()
print((lst1[0] if s[0]=="1" else 0)
+(lst2[0] if s[1]=="1" else 0)
+(lst3[0] if s[2]=="1" else 0)
+(lst4[0] if s[3]=="1" else 0)
+(lst5[0] if s[4]=="1" else 0))
19. 汉字张的Unicode编码是24352(十进制)(U+5F20 十六进制)
ord("张")
20.下面程序输出是6
n = 39
remainders = []
while n>0:
n,remainder = divmod(n,2)
#元组解包的方式分离出整除结果和余数
remainders.insert(0,remainder)
print(len(remainders))
#divmod函数是Python的内置函数,它可以把除数和被除数的运算结果结合起来,返回一个包含商和余数的元组。
21.-7 & 5 的结果是 1
-7 | 9 的结果是 -7
-7 ^ 9 的结果是 -16
~9 的结果是 -10
&:按位与运算符的步骤:对应的二个二进位都为 1 时,结果位就为 1,否则为 0。(-7的二进制表示为,先求7的二进制00000111再取反得到反码11111000,再加1得到其补码11111001就是-7 的计算机表示形式:负数的二进制用补码表示法)
|:按位或运算符的步骤:只要对应的二个二进位有一个为 1 时,结果位就为 1,否则为 0 。-7的二进制11111001与9的二进制00001001进行按位或运算得11111001,结果仍为-7,结果都以补码形式,遵循补码表示法
^:异或运算符是对两个参数进行运算,按位异或运算符的步骤:两个二进位不相同,结果位就为 1;两个二进位相同,结果位就为 0 。-7的二进制11111001与9的二进制00001001进行按位异或运算得11110000(再算出补码的补码才知道本来的值,取反再加1)
~:按位取反运算符的步骤:二进位为 1 时,结果位就为 0;二进位为 0 时,结果位就为 1;9的二进制为00001001,按位取反为11110110,即结果为10
原码:原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。
反码:正数的反码就是自身,负数的反码除符号位外,其他各位求反。对于正数,反码和原码一致,不需要修改。对于负数,保留符号位,其余位取反。
补码: 补码,正数的补码和原码、反码一样。而负数的补码,则在反码的基础上+1。
计算机中,使用补码代表正负数,而不是原码或者反码。使用补码可以把减法或负数,转换为加法运算,从而简化计算机的硬件。
四、编程题
7-1 计算 11+12+13+...+m
m = int(input())
s = 0
for i in range(11,m+1):
s += i
print("sum = {0}".format(s))
7-2 计算分段函数
x = float(input()) #int直接取整,小数就错了
if x == 0:
g = 0
else:
g = 1/(2*x)
print("g({0:.3f}) = {1:.3f}".format(x,g))
7-3 阶梯电价
a,b = input().split()
a = int(a)
b = float(b)
if a <= 50:
expense = a * 0.53
else:
expense = 50 * 0.53 + (a - 50) * (0.53 + b)
print("cost = {:.2f}".format(expense))
7-4 求奇数分之一序列前N项近似和
# ceil 向上取整 & 列表推导式 & math数学库
import math
n = int(input())
rlt = sum([1/i for i in list(range(1,n+1,2))])
s = math.ceil(rlt)
print("sum ≈ {}".format(s))
7-5 求交错序列前N项和
n = int(input())
lrt = [i/(2*i-1) if i%2==1 else -i/(2*i-1) for i in range(1,n+1)]
result = sum(lrt)
print("{:.3f}".format(result))
# sum求和 以及 列表推导式
7-6 产生每位数字相同的n位数
#字符串删去前后空格
a,b = input().split(',')
a=a.strip()
b=b.strip()
b=int(b)
print(a*b)
7-7 转换函数使用
a,b = input().split(',')
b = int(b)
#类型转换左边要为字符类型,右为整数类型
c = int(a,b)
print(c)
7-8 比较大小
#初学者愚蠢做法,大家别学我这个
a,b,c = input().split()
a = int(a)
b = int(b)
c = int(c)
# chr别写错了char;chr的参数类型为整数
a = chr(a)
b = chr(b)
c = chr(c)
if c<b<a:
print("{}<{}<{}".format(c,b,a))
elif b<c<a:
print("{}<{}<{}".format(b,c,a))
elif b<a<c:
print("{}<{}<{}".format(b,a,c))
elif c<b<a:
print("{}<{}<{}".format(c,b,a))
elif a<b<c:
print("{}<{}<{}".format(a,b,c))
elif a<c<b:
print("{}<{}<{}".format(a,c,b))
7-9 输出摄氏-华氏温度转换表
low,upp= input().split()
low = int(low)
upp = int(upp)
# f = c*1.8 + 32
if low > upp or upp >50:
print("Invalid.")
else:
print("celsius fahr")
for i in range(low,upp+1,2):
fahr = i*1.8 +32
# 注意输出格式
print("{0}{1:>14.1f}".format(i,fahr))
7-10 偶数位特殊序列和
a,n = input().split()
# a = int(a)
n = int(n)
lst = [int(a*i) for i in list(range(2,n+1,2))]
print(sum(lst))
7-11 求平方与倒数序列的近似和
import math
m,n = input().split()
m = int(m)
n = int(n)
lst_1 = [ i**2 for i in list(range(m,n+1))]
lst_2 = [ 1/i for i in list(range(m,n+1))]
result = math.floor(sum(lst_1)+sum(lst_2))
print("sum ≈ {}".format(result))
7-12 计算函数f(x)
# math库函数的使用 精度问题 角度弧度 log函数
import math
x = float(input())
# 35是角度的单位,需要转换成弧度!
a = math.sin(35*math.pi/180)
b = (math.pow(math.e,x) - 15*x)/math.sqrt(x**4 + 1)
# c = math.log10(7*x)
c = math.log(7*x,math.e)
result = a + b - c
print("f({})={:.3f}".format(x,result))
7-13 分段计算居民水费
x = float(input())
if x <= 15:
y = 4*x/3
else:
y = 2.5*x - 17.5
print("{:.2f}".format(y))
7-14 输出指定图形
n = int(input())
for i in range(1,n+1):
rsl = "* " * i
print(rsl)
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj