关于我的任务的问题如下:
编写一个函数,该函数以变量
aString
标识的字符串作为参数。如果字符串仅包含数字0和1,则返回通过将参数与字符串“是二进制字符串”连接而形成的字符串。否则,返回一个表示参数长度的字符串,如下面的示例中所指定。将此功能命名为AmIBinary(aString)
。
我无法弄清楚如何形成一个循环,搜索字符串并确定该字符串是否是二进制字符串。我理解如何获取字符串的长度,我只是不明白如何弄清楚它是否是二进制字符串。
试试这个 !
import re
def AmIBinary(aString):
#test_str='Vijay'
if re.match("[01]+",aString):
print('Binary string')
else:
print(len(test_str))
#AmIBinary("Vijay")
AmIBinary('010101')
您可以像使用数字列表一样使用for循环字符串。
例如:
numbers = [1, 2, 3, 4]
您可以使用:
for number in numbers:
# Do something
在您的情况下,您只需要将您收到的字符串作为参数切换数字列表,如下所示:
aString = '100100100'
for number in aString:
# Check if there's a different number than '0' and '1'
看看在这种情况下你需要将它与数字的字符串版本进行比较,因为你正在迭代一个字符串,所以你从for循环中收到的每个值也都是一个字符串。
最后,你可能会有这样的事情:
def AmIBinary(aString):
for number in aString:
if number != '0' and number != '1':
return len(aString)
aString += 'is a binary string'
return aString
正如你所看到的,我正在遍历字符串来检查它的任何元素是否与'1'和'0'不同,如果是,我只返回字符串的长度,否则,如果我检查了每个值字符串,一切都很好,我连接'是一个二进制字符串'到原始字符串并返回它。
我希望这有帮助。
在没有使用循环的情况下尝试内置函数remix。
def AmIBin(s):
try:
if s.startswith('0b'):
int(s, 2)
else:
int('0b{}'.format(s), 2)
except:
return False
else:
return True
二进制字符串已定义为仅包含“0”或“1”的字符串。那么,如何检查字符串中的每个“字符”,如果它不是“0”或“1”,您将知道该字符串不是二进制字符串。