从包含逗号分隔的数字的字符串创建列表;蟒蛇 3.



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

此任务将实现从包含逗号分隔的数字(它们之间可能有空格)的字符串创建列表的功能。例如,字符串"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 或浮点数(例如"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,1,2,3
错误

====

================================================================

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

====

================================================================

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

提前谢谢你!

首先,你不希望循环True直到最后,但你希望它返回False并在测试为假时中断。循环在第一次迭代时返回TrueFalse,因此您不希望循环中的两个 return 语句。其次,您可以创建一个列表或字符串,并使用它来检查每个字符是否在该列表中。在这种情况下,它将类似于 ",. "[",", ".", " "] .

你应该写这样的东西:

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

在这里,如果字符不是数字,或者字符不在列表中 [" ", ".", ","] ,则该函数返回 False ,这会自动结束循环。如果循环完成而不返回值,则所有字符都符合您的条件,并且函数转到下一行并返回True

编辑:

如果要使用占位符变量,请将其设置为 True 并编写循环以将其设置为False如果不满足条件。如果循环不修改它,则条件对于整个字符串为 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

你在课堂上讨论过正则表达式吗?如果是这样,您可能应该使用这些。看看 http://docs.python.org/2/howto/regex.html

如果没有,您可能

应该将占位符变量设为 true,遍历整个字符串检查每个字符,如果检测到错误字符,则使占位符变量为 false。在遍历整个字符串之前,不应使用 return 语句。(循环后)

最新更新