Python 整数仍为整数,但带小数点的数字在我的输出答案中仍为小数点?

Python 整数仍为整数,但带小数点的数字在我的输出答案中仍为小数点?,python,Python,我目前的代码如下: num = input() numlist = num.split(",") def even(list): string = "" for number in list : number = float(number) if number %2 == 0: string += "~"+str(number) return(string) def odd(list): string =

我目前的代码如下:

num = input()
numlist = num.split(",")

def even(list):
    string = ""
    for number in list :
        number = float(number)
        if number %2 == 0:
             string += "~"+str(number)
    return(string)
def odd(list):
    string = ""
    for number in list:
        number = float(number)
        if number %2 != 0:
           string += "~"+str(number)
    return(string)

print "even numbers :" ,even(numlist)
print "odd numbers :" ,odd(numlist)
我的输出: 偶数:~56.0 奇数:~3.0~1.0~5.9~12.6~8.9

预期产出: 偶数:~56 奇数:~3~1~5.9~12.6~8.9
感谢您的帮助

因为您获得了字符串,请尝试在您的方法中使用拆分
,即:

 if string.split('.')[-1] == '0':
       string = string.split('.')[0]
完整程序:

num = input()
numlist = num.split(",")

def even(list):
    string = ""
    for number in list :
        number = float(number)
        if number %2 == 0:
             string += "~"+str(number)
        if string.split('.')[-1] == '0':
            string = string.split('.')[0]
    return(string)

def odd(list):
    string = ""
    for number in list:
        number = float(number)
        if number %2 != 0:
            string += "~"+str(number)
        if string.split('.')[-1] == '0':
            string = string.split('.')[0]
    return(string)

print ("even numbers :" ,even(numlist))
print ("odd numbers :" ,odd(numlist))
样本输出:

5,5.6
even numbers : 
odd numbers : ~5~5.6

注:浮体上不得使用模量。在这里,它只考虑整数部分,而不是小数部分

简单的方法是将
numlist
中的原始字符串附加到输出字符串

我还更改了函数参数的名称:不应将
list
用作变量名,因为这会影响内置的
list
类型

def even(lst):
    string = ""
    for s in lst :
        number = float(s)
        if number %2 == 0:
             string += "~" + s
    return string

def odd(lst):
    string = ""
    for s in lst:
        number = float(s)
        if number %2 != 0:
           string += "~" + s
    return string

# Test

data = '3,1,56,5.9,12.6,8.9'
numlist = data.split(',')
print numlist
print "even numbers :" ,even(numlist)
print "odd numbers :" ,odd(numlist)
输出

['3', '1', '56', '5.9', '12.6', '8.9']
even numbers : ~56
odd numbers : ~3~1~5.9~12.6~8.9

您可以使用floats的is_integer()方法检查浮点是否为整数。如果它是整数,则将其强制转换为int,否则保持原样。 所以你可以这样做:

num = input()
numlist = num.split(",")

def even(list):
    string = ""
    for number in list :
        number = float(number)
        if number.is_integer():
            number = int(number)
        if number %2 == 0:
            string += "~"+str(number)
    return(string)

def odd(list):
    string = ""
    for number in list:
        number = float(number)
        if number.is_integer():
            number = int(number)
        if number %2 != 0:
           string += "~"+str(number)
    return(string)

print "even numbers :" ,even(numlist)
print "odd numbers :" ,odd(numlist)
输入:56,3,5.9,12.6,8.9

输出:偶数:~56
奇数:~3~5.9~12.6~8.9


无论如何,我同意其他人的观点,即对非整数使用模真的很奇怪。

我的预期输出是偶数:~56奇数:~3~8.9~7.7~5你的问题包括你的输入、预期输出和观察到的输出。什么不起作用在我的PCeidted中一切都很好,检查我的期望值output@Bharathshetty我的观点是,在以前的版本中,
input
函数实际上没有被调用。