Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从包含以逗号分隔的数字的字符串创建列表;Python 3_Python_List_Function - Fatal编程技术网

从包含以逗号分隔的数字的字符串创建列表;Python 3

从包含以逗号分隔的数字的字符串创建列表;Python 3,python,list,function,Python,List,Function,嗨,首先我想说这是作业,所以我不想直接回答。问题是: 此任务将实现从包含以逗号分隔的数字(数字之间可能有空格)的字符串创建列表的功能。例如,字符串“1,2,3,4.5,6.7,8”将成为列表:[1,2,3,4.5,6.7,8]编写以下函数: is_numeric()-此函数有一个字符串参数,如果字符串中的所有字符都是数字、逗号、空格或点,则返回True。如果有任何其他字符,函数应返回False。 string_to_list()-此函数接受字符串参数并返回字符串中的数字列表。首先,它应该调用is

嗨,首先我想说这是作业,所以我不想直接回答。问题是:

此任务将实现从包含以逗号分隔的数字(数字之间可能有空格)的字符串创建列表的功能。例如,字符串“1,2,3,4.5,6.7,8”将成为列表:[1,2,3,4.5,6.7,8]

编写以下函数:

is_numeric()-此函数有一个字符串参数,如果字符串中的所有字符都是数字、逗号、空格或点,则返回True。如果有任何其他字符,函数应返回False。

string_to_list()-此函数接受字符串参数并返回字符串中的数字列表。首先,它应该调用is_numeric()函数来检查字符串是否没有坏字符(例如字母)。如果有任何坏字符,它应该返回空列表。如果没有坏字符,它应该尝试用字符串中的数据构建列表。为此,它应该查看两个连续逗号之间的每个子字符串。如果该子字符串中没有点,则该子字符串应转换为整数。如果只有一个点(不多也不少),则应将其转换为浮点。如果两个连续逗号之间的任何子字符串不能转换为int或float(例如“4.5.8”,因为它有太多的点),函数仍应返回空列表。提示:split()方法可能对此任务有用。

main()-将从用户处获取字符串的main()函数,然后它将调用string_to_list()函数以从用户字符串构建列表,然后打印生成的列表。接下来,它将询问用户是否要继续。如果他们想继续,他们应该输入“y”。在这种情况下,函数(main)应该重复前面的步骤:请求用户输入,将其转换为列表,如果用户希望继续,则再次请求用户。依此类推,直到用户不想继续,在这种情况下,他或她应该输入“n”


我仅有的一段代码只检查字符串中的第一个字母,看它是数字还是字母。我需要检查是否有字母、数字、逗号、句点或空格。读这个节目我真的迷路了。我知道我需要从用户那里获取一个字符串,然后将该字符串放入列表中,前提是所有内容都是可接受的输入(字母、数字、逗号、句点、空格),下面是我的代码,以及我的代码将在shell中读取的内容

s = input("Enter a set of numbers (integers or floats) separated by comma:")

def is_numeric(s):
    for char in list(s):
        if char.isdigit():
            return True
        if char.isalpha():
            return False
            break


if is_numeric(s) == True:
    print(s)
else:
    print('Error')
=================================================重新启动================================

输入一组以逗号分隔的数字(整数或浮点数):1,2,3,4
1,2,3,4

=================================================重新启动================================

输入一组以逗号分隔的数字(整数或浮点数):1,2,3,a
1,2,3,a

=================================================重新启动================================

输入一组以逗号分隔的数字(整数或浮点数):a、1、2、3
错误

=================================================重新启动================================

输入一组以逗号分隔的数字(整数或浮点数):1234a
1234a

=================================================重新启动================================

输入一组以逗号分隔的数字(整数或浮点数):asdf3
错误


提前谢谢你

你在课堂上讲过正则表达式吗?如果是这样的话,您可能会使用这些。看看


如果不是,则可能需要将占位符变量设置为true,循环检查整个字符串中的每个字符,如果检测到错误字符,则将占位符变量设置为false。在完成整个字符串之前,不应该使用return语句。(循环后)

首先,您不希望循环在结束前返回
True
,但希望它返回
False
,如果测试为False,则中断。您的循环在第一次迭代时返回
True
False
,因此您不希望在循环中使用这两个返回语句。其次,您可以创建一个字符列表或字符串,并使用它检查每个字符是否在该列表中。在本例中,它将类似于
,.“
[,,,,,,,”]

你应该这样写:

def is_numeric(s):

    for char in s:
        if not char.isdigit() and char not in [" ", ".", ","]:
            return False

    return True
这里,如果字符不是数字,或者字符不在列表中,则函数返回
False
,这将自动结束循环。如果循环完成而未返回值,则所有字符都符合条件,函数将转到下一行并返回
True

def is_numeric(s):
    is_digit = True

    for char in s:
        if not char.isdigit() and char not in [" ", ".", ","]:
            is_digit = False
            break

    return is_digit
编辑:

如果要使用占位符变量,请将其设置为
True
,如果不满足条件,则写入循环以将其设置为
False
i。如果循环不修改它,则整个字符串的条件为true,因此它保持为
true

def is_numeric(s):
    is_digit = True

    for char in s:
        if not char.isdigit() and char not in [" ", ".", ","]:
            is_digit = False
            break

    return is_digit

“我仅有的一段代码只检查第一个字母”-如果你知道这一点,为什么你还没有修复它?你甚至已经在那里找到了回路。另外,在假设
是数值的情况下尝试编写程序的其余部分。删除“if char.isdigit():return True”部分,您应该可以正确获得该函数。您只需编写解析器来解析以逗号分隔的输入,然后在每个分区上检查isnumeric。@Bogdan这是我第一次体验For循环和定义函数,我尝试添加计数器来继续循环,但我没有任何运气。我们没有涉及解析器或解析,所以我不知道你们在说什么lol,但谢谢@justhalby解析器,我的意思是“代码行”