使用Python input()调用从用户读取名称时出错

使用Python input()调用从用户读取名称时出错,python,string,if-statement,Python,String,If Statement,我是python新手,已经编写了一个简短的程序。第一部分可以工作,但是if语句部分有回溯/语法?问题建议 hours = input("How many hours did you work this week?") wage = input("How much do you make each hour?") weeklySalary = hours * wage print "You made", weeklySalary, "dollars this week." daily = str(

我是python新手,已经编写了一个简短的程序。第一部分可以工作,但是if语句部分有回溯/语法?问题建议

hours = input("How many hours did you work this week?")
wage = input("How much do you make each hour?")
weeklySalary = hours * wage
print "You made", weeklySalary, "dollars this week."
daily = str(input("Would you like to know your daily average this week?"))
if daily in ['Yes' , 'yes' , 'Y' , 'y']:
    print "You averaged", (weeklySalary / 7), "dollars per day."
else:
    print "Maybe next week..."
以下是错误:

How many hours did you work this week?10
How much do you make each hour?10
You made 100 dollars this week.
Would you like to know your daily average this week?yes
Traceback (most recent call last):
  File "/Users/jake/Desktop/Python_U_M/weekly_salary.py", line 5, in <module>
    daily = str(input("Would you like to know your daily average this week?"))
  File "<string>", line 1, in <module>
NameError: name 'yes' is not defined
How many hours did you work this week?10
How much do you make each hour?7
You made 70 dollars this week.
Would you like to know your daily average this week?y
Traceback (most recent call last):
  File "hmm", line 5, in <module>
    daily = str(input("Would you like to know your daily average this week?"))
  File "<string>", line 1, in <module>
NameError: name 'y' is not defined
你这周工作了多少小时?10
你每小时挣多少钱
你这周赚了100美元。
你想知道你这周的日均工资吗?是的
回溯(最近一次呼叫最后一次):
文件“/Users/jake/Desktop/Python\U\M/weekly\U salary.py”,第5行,在
daily=str(输入(“您想知道本周的日平均值吗?”)
文件“”,第1行,在
名称错误:未定义名称“是”

问题在于
输入
正在评估您的输入,因此
评估(y)
会引发错误:

How many hours did you work this week?10
How much do you make each hour?10
You made 100 dollars this week.
Would you like to know your daily average this week?yes
Traceback (most recent call last):
  File "/Users/jake/Desktop/Python_U_M/weekly_salary.py", line 5, in <module>
    daily = str(input("Would you like to know your daily average this week?"))
  File "<string>", line 1, in <module>
NameError: name 'yes' is not defined
How many hours did you work this week?10
How much do you make each hour?7
You made 70 dollars this week.
Would you like to know your daily average this week?y
Traceback (most recent call last):
  File "hmm", line 5, in <module>
    daily = str(input("Would you like to know your daily average this week?"))
  File "<string>", line 1, in <module>
NameError: name 'y' is not defined
文件:

如文档中所述,“考虑对用户的常规输入使用raw_input()函数。”进行此更改可防止对“y”求值,从而将其视为字符串,如您所期望的那样

由于
eval(10)
仍然是
10
,因此问题不会在整数上出现


通过Python 2.6.5进行确认。您的代码可能与Python3中的代码一样工作——Python3中用于输入的文档不包括隐式的
eval

假定这是Python2.x,因此您应该使用
raw\u input
。但是,提供完整的错误回溯通常是有帮助的,而不是一个模糊的问题描述。那里没有语法错误……显示您得到的语法错误会很有用。@JoranBeasley:但是如果您输入“Y”,将引发一个
NameError
。大量重复:,,,,
eval(010)如何
被视为八进制,结果将是
8
?谢谢。我将输入更改为原始输入,结果成功了。我应该在任何地方使用原始输入吗?即使需要整数?它必须被引用--
eval('010')
计算为8,而
eval(010)
会引发类型错误。当然可以。:-)@可怕的海盗之声,但我在思考原始输入或输入,但你是对的。杰克——文档是你的指南。“考虑使用原始输入”的建议已经复制到我的答案中。。。然后,假设
input(prompt)
等同于
eval(raw_input(prompt))
,那么您的问题是,“您希望对用户的输入进行评估吗?”也就是说,您希望用户能够输入
10+4
来传达他们工作了14小时吗?不要
eval
事物,除非你希望它们被
eval
ed。