我在一个非常简单的while循环中遇到了问题,但不是另一个。

大家好,这是我的第一篇帖子,所以我希望我做得对。我刚刚开始学习如何编程,所以如果我的错误很明显,我很抱歉,但我似乎找不到答案。
我在一个测试程序中创建了一个非常简单的While循环,它通过一个简单的计算来确定你的约会范围,然后问你是否想再试一次,然后重复这个问题,直到你拒绝。它工作得很完美。我试着在一个非常简单的程序中做同样的事情,这个程序基本上只计算复利,但While循环似乎工作起来并不相同,尽管它与我的"约会年龄"程序几乎相同。
以下是我使用复利程序时的输出/错误消息:

选择 | 换行 | 行号
  1.  
  2. Hello.
  3. Would you like to try? Please enter yes or no: yes
  4. How old are you? 19
  5. Please enter cash value: 10000
  6. Please enter interest rate in the form of a decimal: .1
  7. What age would you like to check your worth? 35
  8. Here is your worth: 45949.7298636
  9. Here is your profit: 35949.7298636
  10. Would you like to try again? yes
  11. Traceback (most recent call last):
  12.   File "/Users/johnhutchison/Documents/worth.py", line 4, in <module>
  13.     while decision in y:    
  14. TypeError: argument of type 'int' is not iterable
  15. logout
  16.  
  17. [Process completed]
  18.  

以下是我的"约会年龄"程序的代码,它运行得很好:

选择 | 换行 | 行号
  1. print "Welcome! Let's see who you can date!"
  2. y = [ 'yes', 'y', 'Yes', 'Y' ]
  3. decision = raw_input("Would you like to try? Please enter yes or no: ")
  4. while decision in y:
  5.     age = input("Please enter age: ")
  6.     age_min = age / 2 + 7 
  7.     age_max = (age - 7) * 2
  8.     print "Your dating range is between:", age_min, "and", age_max    
  9.     decision = raw_input("Would you like to try again? Please enter y or n: ")            
  10. raw_input("Thank you! Press Enter to exit.")
  11.  

以下是我的复利计划的代码,它似乎不起作用:

选择 | 换行 | 行号
  1. print "Hello."
  2. y = [ 'yes', 'y', 'Yes', 'Y' ]
  3. decision = raw_input("Would you like to try? Please enter yes or no: ")
  4. while decision in y:    
  5.     age = input("How old are you? ")
  6.     p = input("Please enter cash value: ")
  7.     i = input("Please enter interest rate in the form of a decimal: ")
  8.     y = input("What age would you like to check your worth? ") - age
  9.     cash_worth = p * (1 + i)**y
  10.     profit = cash_worth - p
  11.     print "Here is your worth:", cash_worth
  12.     print "Here is your profit:", profit
  13.     decision = raw_input("Would you like to try again? ")
  14. raw_input("Press Enter to leave")
  15.  

我也意识到我的复利计划还有其他明显的问题,比如不舍入小数,但我只是用这个来学习,所以我一次只处理一件事。
非常提前感谢您的帮助!

# 回答1


问题是您使用的是单字母变量名,因此IDE或文本处理器无法找到变量的所有实例。它只能在任何地方找到每一次使用这封信的时间。所以
表示您在代码中的某个地方将"y"设置为一个整数值,这是正确的,但我将把找到那个特定的"y"作为我们为什么应该使用描述性变量名的教训留给您。
# 回答2


哦,我完全明白我的错误了!我分配了两次"y"。我觉得自己像个白痴。我肯定会开始更具描述性地命名变量。非常感谢您的帮助和耐心!

标签: python

添加新评论