2012-02-27 62 views
1

我是一个初学编程的,这里是我的计划至今:我怎样才能打破小数到的年天#?

def getYearsandDays(): 
     c = eval(input("Enter a number: ")) 
     d = c // 1 
     e = (c - d) * 365 
     f = e // 1 
     return f,d 
     print(d , "years and", f, "days") 

    () 

例如,假设c是1.34。将它转换为一个整数可以让你1年= d。现在1.34 - 1给你.34。乘以356给你124.1 = e。做一个整数给你124天= f。所以1.34年是1年(d)和124天(f)。

我已经知道我的打印功能是错误的,因为我坚持,我怎么会得到这样的输出:

6 years and 1 day 
1 year and 137 days 
67 days 

相反的:

6 years and 1 days 
1 years and 137 days 
0 years and 67 days 

我猜我可能有我的整数转换回字符串,使IF-THEN语句,但我不是100%肯定。

+1

此代码将无法正常工作,因为你有'return'后'print'。最后一行的'()'是什么意思? – 2012-02-27 20:53:11

回答

4

这是我会做:

def years_and_days(): 
    # Use input instead of raw_input if you're using Python 3.x 
    time = float(raw_input('Enter a number: ')) 
    years = int(time) 
    days = int((time - int(time)) * 365) 
    if years: 
     print years, 'years' if years > 1 else 'year', 
    if days: 
     print days, 'days' if days > 1 else 'day' 

用法:

>>> years_and_days() 
Enter a number: 3 
3 years 
>>> years_and_days() 
Enter a number: 1.34 
1 year 124 days 
>>> years_and_days() 
Enter a number: 0.32 
116 days 
0

如果C是输入: 你可以做çMOD 1 ...这将让您小数。
为了得到你刚才需要的整数c-cmod1 ...其余的计算应该可以工作...

mod是模数的缩写 - 这基本上是一种计算余数的方法。所以5mod2是的5/2或1

不知道你使用的是什么语言,但如果搜索模量,你就可以找到你在做什么在谷歌你的语言的名称剩余寻找。

希望帮助

def getYearsandDays(): 
     c = eval(input("Enter a number: ")) 
     d = c - c%1 //years 
     e = (c -d) * 365 //days in decimal format 
     f = e - e%1 // days in integer format...you probably would get away with just rounding here too... 
     return f,d 
     print(d , "years and", f, "days") 

    () 
+0

BTW刚刚意识到这是python。在这个例子中使用%符号模数。 – SimaPro 2012-02-27 23:25:17