gpt4 book ai didi

python - For 循环利用 != 表示字符串字符在 Python 中不起作用

转载 作者:行者123 更新时间:2023-12-01 04:31:48 26 4
gpt4 key购买 nike

我是学习 Python 3.4 的初学者,正在开发一个程序,从用户那里读取位,并根据偶校验确定奇偶校验位。

我正在检查用户是否输入了正确的 8 位,以及他们是否只输入了 1 或 0。

用户正在使用 input() 函数输入值,并且以字符串形式输入。我的误差比较函数如下:

#Check for errors in user defined string
def errors(check):
for i in check:
if (i != '1' or i != '0') and len(check) == 8:
result = 0 #return value means not binary, but right amount of digits
#break
elif (i != '1' or i != '0') and len(check) != 8:
result = 1 #Not binary and wrong amout of digits
break
elif len(check) != 8:
result = 2 #wrong amount of digits but binary
break
elif (i == '1' or i == '0'):
result = 3 #Binary, and correct amount of digits
else:
print('Error checking loop messed up')
return result

基本上我的第一个 if 语句正在执行(即使我输入的是 10101010),或者我的第二个 if 语句(101010101010 或 1010ag1010 类似的东西)。

我的输出如下:

enter a string of bits (must be 1 or 0, max. 8): 10101010

You entered a value that is not a 1 or 0

出于某种原因,程序无法识别我的 1 和 0。任何帮助我指明正确方向的帮助将不胜感激。

最佳答案

首先,第一个 if 条件是错误的 -

if (i != '1' or i != '0') and len(check) == 8:
为什么?因为我们可以说 i1,所以在条件的第一部分,我们看到 i 不等于 0 > ,所以它是 True,在第二部分中,如果 check 等于 8 ,我们输入 if 条件。

理想情况下应该是 and -

if (i != '1' and i != '0') and len(check) == 8:

类似地,在第二个条件中也使用and

<小时/>

但鉴于此,我认为理想情况下您应该将字符串的长度和每个字符 10 视为完全不同,并返回一个列表,其中一个第一个元素表示数组长度是否正确,第二个元素表示字符是否都是10

示例 -

def errors(check):
result = []
if len(check) == 8:
result.append(1)
else:
result.append(0)
for i in check:
if i not in {'1','0'}:
result.append(0)
break
else:
result.append(1)
return result

然后,您可以在主代码中(或从任何地方调用该函数,并确定哪些地方出了问题)与此列表进行比较。

如果长度错误,它将在第一个元素中返回 0,否则返回 1。

如果所有字符都是 10 ,它将在第二个元素中返回 1 ,否则返回 0

关于python - For 循环利用 != 表示字符串字符在 Python 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32292895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com