我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

【】eval()函数合并及复杂模数运算等。

前言

在很多高端项目中,一个需要花费很长时间、耗费大量人力物力才找到的 Bug,往往是一个符号错误、值传递错误,或者对一个基本函数的使用没有仔细考虑等基本问题。所以,地基不牢,整栋楼就会摇摇欲坠。这真的不是开玩笑的。

今天继续更新【】系列。

1. 在该语言中,以下表达式输出值 11:

A、打印(“1+1”)

B、打印(1+1)

C.打印(eval(“1 + 1”))

D.打印(eval(“1”+“1”))

eval() 函数是一个内置函数,eval() 函数的作用是将一个字符串作为有效的表达式进行求值,并返回计算结果。相当于把字符串开头和结尾的引号去掉,去掉引号后执行语句,并返回执行结果。

主要作用有:

参考:企业因安全风险禁用的强大内置功能

本题中,选项A打印的是字符串“1+1”,选项B打印的是表达式1+1的结果2,选项C有eval()函数,会把字符串“1+1”转换成可计算的表达式1+1,与选项B等价,最后打印出结果2。选项D在eval()中先将两个字符串“1”相加得到字符串“11”,然后eval()函数把字符串“11”的引号去掉,打印的结果为11,所以答案为D。注意这里的结果11是整型,而不是字符串类型。

>>> type(eval("1"+"1"))
<class 'int'>

eval()函数比较特殊,为了加深印象,本文会继续更新三个相关问题,以后本文就不再具体介绍eval()了。

2、运行以下程序,当在键盘上输入{1:“清华大学”,2:“北京大学”}时,结果为:

x =eval(input())
print(type(x))

A。

B.

C. 错误

D.

本题中输入的字符串内容符合字典的语法格式,经过eval()函数转换后,结果类型为字典,因此本题答案为D。

3、运行以下程序,从键盘输入1+2和4j,输出结果为:

x = eval(input())
y = eval(input())
print(abs(x+y))

A.5

B.

C。

D.5.0

逐行看这道题的代码,x接收输入字符串“1+2”,经过eval()函数处理后,x的值为计算结果3,数据类型为整型。y接收输入字符串“4j”,经过eval()函数处理后,y的结果是复数4j。y的数据类型是可以打印出来的,类型为。

复数是数学中的一个概念。复数是一个实数和一个虚数的和,表示为a+bi,其中a为实部,b为虚部,i为虚数单位。问题中,虚数单位不是i,而是j。问题中输入的4j是有虚数单位的,解释器会将其识别为复数。

中的复数类型是,复数可以通过两种方式创建:

使用 () 函数创建一个复数:

z = (real, imag),其中 real 是实部,imag 是虚部。

z = complex(3, 4)  # 创建一个复数 3 + 4j

通过添加实数和虚数来创建复数:

z = 3 + 4j

回到正题,第三行代码用到了abs()函数,也就是中的绝对值函数。abs()函数作用于复数时,也叫复数的模。复数的模表示原点到复平面上该复数对应点的距离,也叫复数的绝对值。对于一个复数z = a + bj,它的模计算公式为:|z| = sqrt(a^2 + b^2),其中sqrt()代表平方根。所以本题结果为5.0,答案为D。至于为什么结果是一个浮点数5.0,而不是一个整数5,是因为复数的实部和虚部都是浮点数。

>>> z = 3+4j
>>> z.real
3.0
>>> type(z.real) 
<class 'float'>
>>> z.imag
4.0

4、执行下面程序,输入a,输出结果为:

a = 'python'
try:
    s = eval(input('请输入整数:'))
    ls = s * 2
    print(ls)
except:
    print('请输入整数')

A.一个

B.请输入一个整数

C。

D.

本题中a为字符串变量,其值为字符串“”。在input()中输入a时,变量a经过eval()函数处理后,会将引号去掉,所以变量s的值也是字符串“”。变量ls为s*2的值,结果为字符串“”,所以答案为C。至于input()中的“请输入一个整数:”,是误导,加入了异常捕获try:…:…,避免出错。

5、执行以下程序,输入qp,输出结果为:

k = 0
while True:
    s = input('请输入q退出:')
    if s == 'q':
        k += 1
        continue
    else:
        k += 2
        break
print(k)

A2

B.请输入q退出:

C.3

D. 1

在无限循环while True:中,条件语句判断,如果输入的字符是字母q,则k加1,继续循环();如果输入的字符不是字母q,则k加2,并退出循环(break)。

k 的初始值为 0,第一次输入的是字符 qp(不是字母 q),k 加 2 后退出循环,所以 k 的值是 2。答案为 A。input() 中的“请输入 q 退出:”也是误导,其实输入 q 并不会退出循环。

6.以下程序的输出是:

def test(b=2, a=4):
    global z
    z += a * b
    return z
z = 10
print(z, test())

A.18 无

B.10 18

C。

D.18 18

本题中,在自定义函数test()中使用关键字将z声明为全局变量,因此即使函数中没有为z定义初值,z在函数外也能获取当前环境中定义的值。

函数下面定义了z的值是10,所以第一个打印的z值就是10。在调用test()函数时,会将z的值加上a*b,再将返回的z的值加上8,也就是18,所以答案为B。

这里要注意的是,由于z的作用,整个运行环境中只有一个z变量(全局变量)。需要知道z值是什么时候定义的,什么时候修改的,修改前值是多少,修改后值变成什么。为了方便理解,可以从三个位置查看z的值。

1.函数定义完后立即调用test(),此时函数中并没有定义z的初值,当前环境中也没有定义z的值,即使在函数中使用,z也没有值,会报错:name 'z' is not。

2、当前运行环境中定义z=10之后,此时打印的z的值为10。

3、在当前运行环境中定义 z=10 后,调用函数 test(),z 的值被函数修改,返回值为 18。如果直接打印 z,值也是 18。因为影响了环境中 z 的值,所以函数直接修改了全局的 z 值。如果再次调用 test(),z 的值就会变成 26。

7.以下程序的输出是:

ss = list(set("jzzszyj"))
ss.sort()
print(ss)

答案:[‘z’, ‘j’, ‘s’, ‘y’]

B. [‘j’, ‘s’, ‘y’, ‘z’]

复制代码

D. ['j', 'j', 's', 'y', 'z', 'z', 'z']

set() 是 中的内置函数,也是 中的数据类型,表示集合。集合是无序且不重复的元素序列。如果将可迭代对象传递给 set(),set() 会将可迭代对象转换为集合,结果将删除重复的元素。

本题先将字符串“”转换成集合{‘j’, ‘z’, ‘s’, ‘y’},集合本身无序,所以顺序是随机的。再将集合转换成列表[‘j’, ‘z’, ‘s’, ‘y’],最后对列表进行排序,字母按照ASCII编码表排序,结果为[‘j’, ‘s’, ‘y’, ‘z’]。答案为B。

8.以下程序的输出是:

ls = list({'shandong': 200, 'hebei': 300, 'beijing': 400})
print(ls)

答案:['300', '200', '400']

B.['', '河北', '']

C.[300, 200, 400]

D.'', ​​'河北', ''

这道题是将字典转为列表,字典转为列表的时候,获取的是字典的key,所以结果为['','hebei',''],答案为B。

9.以下程序将以下结果输出到文件text.csv:

fo = open("text.csv", 'w')
x = [90, 87, 93]
z = []
for y in x:
    z.append(str(y))
fo.write(",".join(z))
fo.close()

答:[90,87,93]

版 90, 87, 93

C.“[90, 87, 93]”

D.'90, 87, 93'

代码中,首先创建一个text.csv文件。open(,mode)函数打开一个文件,如果文件不存在,则创建。mode为write mode w。x为数字列表。每个元素都转换成字符串,并添加到列表z中。join()函数将列表z中的所有元素连接成一个字符串。连接符为逗号,因此写入文件text.csv的内容为90,87,93。答案为B。

csv 是逗号分隔值的缩写,顾名思义,内容之间用逗号分隔,因此写入 csv 文件的正确格式是用逗号分隔。

参考:使用csv模块读写csv文件

10、假如当前时间是2018年5月1日 10点10分09秒,则以下代码的输出为:

import time
print(time.strftime("%Y=%m-%d@%H>%M>%S", time.gmtime()))

答:2018=05-01@10>10>09

B.2018=5-1 10>10>9

C. True@True

星期四, 2018=5-1@10>10>9

time 是一个内置库,可以用来获取时间以及转换时间格式,比如在时间戳和时间字符串之间进行转换。题目中就是导入time库,获取time.()的值,然后使用time.()函数拼接成想要的格式。

首先我们看一下time.()的结果。time.()将传入的UTC秒数转换成UTC时间元组,如果不传入任何参数,则转换当前时间。元组格式为 (, , , , , , , , )。题目中得到的元组为 (=2018, =5, =1, =10, =10, =9, =1, =121, =0)。

time.() 拼接的目标格式为“%Y=%m-%d@%H>%M>%S”,其中 Y 为年,m 为月,d 为日,H 为时,M 为分,S 为秒。将上述元组中的值拼接到相应位置,结果为 2018=05-01@10>10>09。注意 time.() 拼接时,月、日、时、分、秒均为两位数,因此答案为 A。

参考:将时间转换为时间戳和时间字符串

二维码
扫一扫在手机端查看

本文链接:https://by928.com/2767.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线