我是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()
答案 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 answer的join
行。
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