为什么这个Python函数不起作用?

时间:2017-03-31 16:01:42

标签: python

即使输入少于30

,也会继续“你比某些山丘还要老”
age = raw_input("What age are you?") 
def old(n):
  if n >= 30:
    print "You are older than some hills"
  else:
    print "Youth"

old(age)   

3 个答案:

答案 0 :(得分:8)

因为您忘记将输入转换为数字,因为它是一个字符串,而在Python 2中,任何字符串总是大于任何数字。

使用public class MyFirstClass1 { public static void main(String[] args) { int halfSize; int p = 0; String message; System.out.println("Please enter a string: "); Scanner input = new Scanner(System.in); message = input.nextLine(); //System.out.println((int)Math.ceil(message.length() / 2) + 1); halfSize = message.length() / 2; for (int i = 1; i <= message.length(); i++) { //Print spaces for (int k = 0; k < halfSize; k++) System.out.print(" "); halfSize--; System.out.print("\n"); if((int)Math.ceil((float)message.length() / 2) + 1 >= p) { for (int j = 0; j < p + 1; j++) System.out.print(message.charAt(j)); } p+=2; } } }

(当您尝试比较字符串和数字时,Python 3会引发错误,这是一个很好的设计决策。)

答案 1 :(得分:0)

raw_input()函数将输入用作字符串,因此,您应该将输入转换为int类型。

age = int(raw_input("What age are you?")) 
def old(n):
if n >= 30:
  print "You are older than some hills"
else:
  print "Youth"

old(age)  

这样可行。

答案 2 :(得分:0)

正如其他人所说,您需要将输入转换为整数。但是,如果用户输入一个字母,程序将抛出错误。为了确保不会发生这种情况,我建议使用try获取输入,除了,这可以按如下方式完成:

age = raw_input("What age are you?") 
try:
    int(age)
except ValueError:
    print('That is not a number')