程序仅在使用小数时才有效?

时间:2016-07-27 09:44:20

标签: python decimal

我正在研究一个计算时间/速度/距离的个人项目。 我遇到了我的程序有问题,当我输入36分为kms覆盖和100公里/小时作为速度时,该程序应该给我一个结果,如21.6分钟,但它给我0分钟。 / p>

然而,当我输入36.0和100时,程序完全符合我的要求。 为什么当我为我的kms输入一个十进制来覆盖它工作正常但是当输入一个整数时它将无法正确计算。

有兴趣看看问题是什么,是我的代码的顺序吗?也许,使变量浮动或某些这样的事情可能是修复?不确定问题是什么,因为它发生在如此特定的事情上,例如确保数字是小数。 你仍然可以从我的代码中学习Python。

预先感谢您的协助。

代码如下;

print('Welcome to my calculator')

d = float(input('How many kms do you want to cover? '))
s = float(input('How fast will you be travelling (km/h)? '))
t = d/s
  if t < 1:
     t = t * 60
     print('You will reach your destination in ') + str(t) + (' minutes.')
  else:
     print('You will reach your destination in ') + str(t) + (' hours.')

2 个答案:

答案 0 :(得分:0)

我猜你的问题是整数除法。您可以通过将t = d/s更改为t = float(d)/s来修复此问题。

>>> 2/5
0
>>> float(2)/5
0.4

此问题已在Python 3中解决。

答案 1 :(得分:0)

你正在进行整数除法。尝试将ds转换为浮点数。

t = float(d)/s

这将返回预期的输出。你也可以做到:

t = (d * 1.0)/s
如果TypeErrord,则

避免/

默认情况下,在Python2中,当您在两个整数之间使用float时,它会执行整数除法。如果两个数字中的一个是try,则执行十进制除法。

另请注意,建议您将用户输入放在except / public class CustomComparator implements Comparator { List<Integer> user1Time = new ArrayList<>(); List<Integer> user2Time = new ArrayList<>(); int user1Count, user2Count; ParseUser user1, user2; Date user1Date, user2Date; boolean user1Short, user2Short; private String TAG="CustomComparator"; @Override public int compare(Object lhs, Object rhs) { user1 = (ParseUser) lhs; user2 = (ParseUser) rhs; user1Time = user1.getList("timeAvailable"); user2Time = user2.getList("timeAvailable"); //To compare Available time of both users with Searched Time if(user1Time!=null){ user1Time.retainAll(Utils.availableTime); user1Count = user1Time.size(); }else{ user1Count=0; } if(user2Time!=null){ user2Time.retainAll(Utils.availableTime); user2Count = user2Time.size(); }else{ user2Count=0; } Log.d(TAG, "compare: "+user1.getString("name")+" "+user1Count); Log.d(TAG, "compare: "+user2.getString("name")+" "+user2Count); //To compare lastSeen of both the users user1Date = user1.getDate("lastSeen"); user2Date = user2.getDate("lastSeen"); //To compare shortNotice avilablity of both the user user1Short = user1.getBoolean("shortNotice"); user2Short = user2.getBoolean("shortNotice"); if(user2Time!= null && user2Time!= null && user1Date!= null && user2Date!= null){ if (user1Count>user2Count){ if(user1Short){ if(user1Date.compareTo(user2Date)>0){ return -1; }else { return -1; } }else if (user1Date.compareTo(user2Date)>0){ return -1; }else if (user2Date.compareTo(user1Date)>0){ return 1; } }else if(user2Short){ if(user2Date.compareTo(user1Date)>0){ return 1; }else { return -1; } }else if (user2Date.compareTo(user1Date)>0){ return 1; }else if (user1Date.compareTo(user2Date)>0){ return -1; } } return 0; } } 块中。