2015-09-10 74 views
-7

我在這裏粘貼了一些代碼從我的互動故事,我想讓用戶選擇一個角色的汽車,並使其在整個故事中使用,但因爲我是新的python我可能已經完成這完全錯了。Python。問題與我的互動故事

print("Help Rick P. choose a car to drive.") 

print() 

print("1 Chevrolet Camaro") 
print("2 Chevrolet SS Sedan") 
print("3 BMW M3 Sedan") 
print("4 Mercedes-Benz GLE Coupé") 

print() 

def cars(car): 
    Camaro = car1 
    SS_Sedan = car2 
    M3_Sedan = car3 
    GLE_Coupé = car4 

def choice_car(): 
    car = input("Input the corresponding number to the car that you'd like Rick P. to drive... ") 
    print() 
    cars(car) 

choice_car() 

print(car) 
+4

什麼是你的問題? – BrenBarn

+0

我需要幫助才能讓用戶爲角色選擇汽車 –

+2

您可能需要重新閱讀python教程。這裏有很多問題在大多數教程中都有介紹。 –

回答

0
from collections import OrderedDict 

cars = OrderedDict([(1, 'Camaro'), (2, 'SS Sedan'), (3, 'M3 Sedan'), (4, 'GLE Coupé')]) 

print('Help Rick P. choose a car to drive.\n') 
print('\n'.join([str(key) + ' ' + val for key, val in cars.items()]) + '\n') 

def choice_car(invalid = False): 
    if invalid: 
     choice = int(input('Invalid car. Try again...\n')) 
    else: 
     choice = int(input('Input the corresponding number to the car that you\'d like Rick P. to drive...\n')) 
    car = cars.get(choice) 
    if not car: 
     return choice_car(True) 
    return car 

car = choice_car() 

print(car) 
0

好的,我冒昧地以開放的方式解釋你的問題。看起來你想做點什麼,但你不確定如何去做。我將提供一個答案,幫助您學習如何調試程序以及如何在算法上實現。

程序的第一部分幾乎是正確的。這沒有什麼錯。你想要做的是從打印的選擇中選擇一輛汽車。代碼問題在於以下部分:

def cars(car): 
    Camaro = car1 
    SS_Sedan = car2 
    M3_Sedan = car3 
    GLE_Coupé = car4 

這在許多方面都是錯誤的。首先,car1,car2等,將不會按照您的設想工作。 Python將嘗試在函數的本地範圍中查找名爲car1car2等的對象。 ref如果找不到它,它將在全局空間中搜索該變量的綁定。如果沒有找到它會引起NameError

此外,此代碼不會允許您選擇汽車。你想要做的是:檢查參數car包含什麼值,並基於它返回一個特定的值。你會做一些與if/elif聲明那樣:

def cars(car): 
    if car == 1: 
     return 'Camaro' 
    elif car == 2: 
     return 'SS_Sedan' 
    elif car == 3: 
     return 'M3_Sedan' 
    elif car == 4: 
     return 'GLE_Coupe' 

現在,好的做法也有它,你考慮是不是預期的輸入。在這種情況下,有一個額外的else事件帳戶的錯誤輸入,並讓用戶現在這可能是一個好主意,所以你可以添加。

... (snip) ... 
elif car == 4: 
    return 'GLE_Coupe' 
else: 
    return 'Invalid Car' # you could return None or even better raise an exception, but since you are a beginner let's keep it simple 

注意,在所有情況下,你的函數返回一個string包含汽車模型,並且不只是隨機的對象綁定到名稱。你編碼的東西,如果它按照你的預期工作的話,就會類似於枚舉(你可能想要閱讀關於enums here的文章)。

0

我的建議是不使用汽車功能,但汽車list。如果您想要函數返回值,請使用return語句。

在附註中,您的代碼使您看起來好像還沒有真正研究過Python tutorial。請做。

cars = ['Camaro', 
     'SS Sedan', 
     'M3 Sedan', 
     'GLE Coupé'] 

def choose_car(): 
    car = int(input("Input the corresponding number to the car that you'd like Rick P. to drive... \n")) + 1 
    return cars[car] 

或者,如果你不想把一個字符串轉換爲integer工作,使用dictionary

cars = {'1': 'Camaro', 
     '2': 'SS Sedan', 
     '3': 'M3 Sedan', 
     '4': 'GLE Coupé'} 

def choose_car(): 
    car = input("Input the corresponding number to the car that you'd like Rick P. to drive... \n") 
    return cars[car]