【问题标题】:input multiple entries separated by space输入多个以空格分隔的条目
【发布时间】:2021-06-12 05:29:41
【问题描述】:

我是 python 新手,我有一个任务要编写一个程序,提示用户输入一组以空格分隔的正整数 ????????0, ???????? 1, ... , ??????????????????−1。然后程序只读取和存储正整数并忽略任何无效条目

然后,您的程序应该计算减少每个数字的步骤 ????????????????使用这些规则到 0: • 如果是偶数,则除以 2 • 如果数字是奇数,则减1

例如,减少数字 10:

  • 10是偶数,10除以2,就是5
  • 5 为奇数,5 减 1,变为 4 - 4 为偶数,4 除以 2,变为 2
  • 2是偶数,2除以2,就变成了1
  • 1为奇数,1减1,变为0 因此,需要 5 个步骤才能将 10 减少到 0。

到目前为止的代码中,我可以输入一个条目,但我需要多个用空格分隔的条目。

stringInput = input("Enter integers: ")
try:
for e in stringInput:
    listOfintegers = []
    stepsCount = 0
    integerInput = int(stringInput)
    integerToTest = integerInput
    while integerToTest > 0:
        if integerToTest % 2 == 0:
            integerToTest /= 2
        else:
            integerToTest -= 1
        stepsCount += 1
    listOfintegers.append((integerInput, stepsCount))
except:
print("a string was entered")
exit(1)

print(listOfintegers)

应该是这样的: 请输入一组以空格分隔的正整数:3 45 st 59 16 32 89

输出:

[(3, 3), (45, 9), (59, 10), (16, 5), (32, 6), (89, 10)]

你能帮帮我吗?

【问题讨论】:

    标签: python python-3.x loops validation input


    【解决方案1】:

    您只需要使用split() 命令,例如split(" ") 来按空格分割您的输入。

    我修改了你的代码

    #stringInput = "3 45 st 59 16 32 89"
    stringInput = input("Enter integers: ")
    stringInput=stringInput.split(" ")
    listOfintegers = []
    
    for e in stringInput:
        stepsCount = 0
        if(e.isdigit()):
            integerInput = int(e)
        else:
            continue
        integerToTest = integerInput
        while integerToTest > 0:
            if integerToTest % 2 == 0:
                integerToTest /= 2
            else:
                integerToTest -= 1
            stepsCount += 1
        listOfintegers.append((integerInput, stepsCount))
    
    print(listOfintegers)
    

    【讨论】:

    • 非常感谢您的帮助。我真的很挣扎如何拆分输入,所以谢谢你教我这个命令
    【解决方案2】:

    我认为循环的开始是一个问题,因为for e in stringInput: 确实在遍历输入字符串中的每个字符。您可能想要的是遍历每个以空格分隔的条目。有一个很好的功能,split()

    split() 是一个字符串函数,可将字符串“拆分”成一个列表,其中列表中的每个项目由您提供的参数分隔。例如,

    # x1 is ["1", "2", "3", "4", "5"]
    x1 = "1,2,3,4,5".split(",")
    
    # x2 is ["a", "23a", "4a5", "7"]
    x2 = "a-23a-4a5-7".split("-")
    

    所以...既然你想用空格分割你的输入字符串,你可能会写类似

    stringInput = input("Enter integers: ")
    
    # Splits up input string by spaces
    inputList = stringInput.split(" ")
    for e in inputList:
        listOfintegers = []
        stepsCount = 0
        integerToTest = 0
        try:
            integerInput = int(stringInput)
            integerToTest = integerInput
        except:
            print("Element is not a number")
            continue
        while integerToTest > 0:
            if integerToTest % 2 == 0:
                integerToTest /= 2
            else:
                integerToTest -= 1
            stepsCount += 1
        listOfintegers.append((integerInput, stepsCount))
    
    print(listOfintegers)
    

    您可能需要进行更多检查以确保该数字为正数,但这应该可以帮助您入门。

    【讨论】:

    • 非常感谢您的帮助!非常感谢
    猜你喜欢
    • 2016-03-12
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多