2014-10-30 81 views
0

在Python中爲班級製作「Mad Libs」風格的東西,這是我的第一天,我已經拿起了我需要知道的大部分內容,但是我'不知道如何去使用「如果」,「elif」,「其他」的東西。這是迄今爲止,我基本上,當年齡輸入時,我希望它選擇,如果這個人是成年人或孩子。簡單的Python「if」,「elif」,「else」

print "welcome to your short story" 

name = raw_input("Input your name: ") 
age = raw_input("Input your age: ") 

if age > 21: 
    age = "adult" 
elif age < 21: 
    age = "kid" 


print "My name is ",name,"and I am a " ,age,"year old ",age 
+1

這裏有一些事情,這將使你的問題,但因爲它聽起來就像你教我自己會讓你自己解決它們:-)你有一個具體的問題,或具體的東西不起作用? – 2014-10-30 23:17:43

+0

'raw_input()'返回一個*字符串*,不是一個整數。 – 2014-10-30 23:18:28

+0

使用int()函數 – foxygen 2014-10-30 23:19:08

回答

0

1)您正在用輸入的年齡字符串替代孩子。 2)你必須在年齡等於21時處理這個案例。 3)年齡輸入需要轉換爲一個整數。

讓我們重寫代碼,看看我們如何能夠改進:

print "welcome to your short story" 

name = raw_input("Input your name: ") 
# Convert the input to an integer. 
age = int(raw_input("Input your age: ")) 

# This is the status variable being either adult or child 
# before you were overriding age variable with adult or kid 
status = "" 

# Also, you have to handle the case where the age equals 21, before 
# you were just checking if it is less or greater than 21 
if age >= 21: 
    status = "adult" 
elif age < 21: 
    status = "kid" 

print "My name is ", name ," and I am a " , age ," year old " , status 
0

如福克斯伊根建議,需要Int函數到您的輸入從一個字符串轉換爲int

age = int(raw_input("Input your age: ")) 

有字符之間的差爲「1」,「2」,「 3「等等,以及數字1,2,3等等。一些語言試圖爲你轉換,但python不會這樣做,所以你最終將「32」與21比較,這是一個蘋果與橙子的比較。

另外,雖然在這個特殊情況下你是安全的,但你仍然會注意到在你仍然基於其原始值進行計算時,你是如何重新分配年齡的。這不是一般的安全,你會過得更好分配到一個新的變量:

if age > 21: 
    age_label = "adult" 
elif age < 21: 
    age_label = "kid" 
else: 
    age_label = "person" # in case a 21 year old uses your program 

你在這種情況下是安全的,因爲如果/其他建築將只執行一個分支,但它不是最好的養成在你還在諮詢時重寫輸入值的習慣。

0
print "Welcone to your Story" 
name = raw_input("Please enter yout name: ") 
    age = int(raw_input("please enter your age: ")) 
    if age >= 21: 
     status = "an adult" 
    else: 
     #enter code here 
     status = "a kid" 
    print "My name is %r , I am %r and I am %r years old" %(name,status,age) 
+0

這段代碼會給出一個'IndentationError'。 – SethMMorton 2014-10-31 00:06:07