如何将奇数与用户输入分开并将它们放在同一行?

时间:2017-09-30 21:28:59

标签: python

我是python的新手,我正在尝试创建一个允许用户输入三个数字的程序,程序会告诉他们数字的总和,平均值,乘积和奇数。我似乎无法找到一种方法来将奇数列在一行上。这就是我所拥有的:

def main():
    x, y, z = eval(input("Enter three integers, each seperated by a comma: "))

    Sum = (x+y+z)
    Average = (x+y+z)/3
    Product = (x*y*z)

    print("Sum:", Sum)
    print("Average:", Average)
    print("Product:", Product)

    print("Odd Numbers: ")
    if (x % 2) != 0:
        print(x)
    if (y % 2) != 0:
        print(y)
    if (z % 2) != 0:
        print(z)
main()

3 个答案:

答案 0 :(得分:2)

这一个班轮将起作用。

print('Odd Numbers:', ', '.join(str(num) for num in (x,y,z) if num % 2))

"如果是num%2"如果数字为奇数,则解析为布尔值true,如果通过从整数隐式转换为布尔值,则解析为false。接受的所有值都需要通过" str(num)"用于与',' .join一起使用的字符串,它将奇数的字符串版本与','连接起来。他们之间。

答案 1 :(得分:0)

这会将所有奇数加到数组中,然后打印数组,并在数组中的每个值之间留一个空格。得到this SO answerjoin行。

odd_numbers = []
print("Odd Numbers: ")
if (x % 2) != 0:
   odd_numbers.append(x)
if (y % 2) != 0:
   odd_numbers.append(y)
if (z % 2) != 0:
   odd_numbers.append(z)

print " ".join([str(x) for x in odd_numbers] )

答案 2 :(得分:0)

print中,您可以使用end从换行符到空格设置结束字符,以便在一行上打印它们。

    print("Odd Numbers:",end=" ")
    if (x % 2) != 0:
        print(x,end=" ")
    if (y % 2) != 0:
        print(y,end=" ")
    if (z % 2) != 0:
        print(z,end=" ")

输出将是: x y z如果他们都是奇怪的话。

另一个注意事项是,eval需要谨慎使用split,因为security risks

相反,您可以使用userInput = input("Enter three integers, each seperated by a comma: ") userInputList = userInput.split(",") #Split on the comma #Assign x,y,z from userInput x = userInput[0] y = userInput[1] z = userInput[2] 函数完成逗号分隔值的用户输入,以返回用户的值列表。

$123,456,789,123,456.47