|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
while 1:
try:
a = input("请以列表形式输入一组数:")
b = input("请以列表形式输入一组数:")
except:
print("输入数据有误!")
gap = abs(float(a[0])- float(b[0]))
for x in a:
x = int(x)
for y in b:
y = int(y)
if gap >= abs(x - y):
gap = abs(x - y)
a0 = x
b0 = y
print("差值绝对值最小为:%s,两个数分别为:%s,%s"%(gap,a0,b0))
输入两个数组
[1,2,3,4]
[1,2,3,4]
提示报错:
File "E:/data/学习资料/python学习资料/PythonApp/everydaywork_208.py", line 8, in <module>
gap = abs(float(a[0])- float(b[0]))
ValueError: could not convert string to float: '['
请问各位大佬,这是怎么回事
你输入的字符串是这样的 ''[1,2,3,4,5]
如果利用for循环,你需要把里面的所有字符挨个提取一遍
a = input()
for i in a:
print(i)
这样的i会包括数字 逗号 中括号, 所以需要一个判断
if i in ['[',']',',']:
pass
else:
b.append(int(x))
不过这样做还是会有问题,当你列表中有多位数以上的数字时,列表不会加入多位数,而是会分开
就像 12 不会加 12 会添加 1 或者 2
所以上面的判断又不行,需要修改
于是可以通过字符串方法来修改
a = input()
b = a.split(',')
这样b是一个列表 里面的数字会是 [ '[1' ,'2','3' ,'4]' ] 这样的
你需要把中括号去掉,利用上面的那个条件语句就可以做到
或者你可以利用python 中的re模块,也就是正则表达式
小甲鱼的扩展阅读里面有
https://fishc.com.cn/forum.php?m ... peid%26typeid%3D403
|
|