2012-02-27 29 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