我只想检查变量是否包含负值,但它不断向我抛出此错误:Traceback (most recent call last): File "C:\...\...\...\file.py", line 88, in <module> main() File "C:\...\...\...\file.py", line 33, in main if '-' in done:TypeError: argument of type 'float' is not iterable[Finished in 0.2s with exit code 1]我看过其他有类似错误的人,但他们都没有给我解决当前问题的想法。对 python 和编程还很陌生,对此没有很好的掌握。希望您能以正确的方式指导我。感谢您的帮助,伙计们!到目前为止,我已经这样做了:def main(): val = '-96000' flo = float(val) if '-' in flo: print('yes')if __name__ == '__main__': main()
2 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
float
对象中不存在字符串字符。只需执行数字比较:
if flo < 0: print('yes')
该关键字in
用于迭代可迭代对象(例如str
实例),因此您的逻辑将使用字符串:
if '-' in val: print('yes')
当然,在第二种情况下,更明智的做法是与第一个字符或字符串的开头进行比较,例如val[0] == '-'
or val.startswith('-')
。
皈依舞
TA贡献1851条经验 获得超3个赞
只需从strto 中删除演员表,就float可以控制减号的存在:
def main():
val = '-96000'
if '-' in val:
print('yes')
if __name__ == '__main__':
main()
或者更好的是,控制str实际上以减号开头:
if val.startswith('-'):
print('yes')
或者更好,仍然转换为浮动,然后控制数据的值:
def main():
val = '-96000'
flo = float(val)
if flo < 0:
print('yes')
if __name__ == '__main__':
main()
添加回答
举报
0/150
提交
取消