2013-11-24 88 views
0

我想要製作一個非常基本的計算器來熟悉python的基礎知識。部分代碼涉及到要求輸入並設置這些不同的變量,但在把作爲輸入的變量存儲爲字符串,即使它們輸入爲數字:Python 3.3字符串錯誤

def change_x_a(): 
    velocity_i = input("Initial Velocity?") 
    velocity_f = input("Final Velocity?") 
    time = input("Time?") 
    float(velocity_i) 
    float(velocity_f) 
    float(time) 
    answer = (0.5*(velocity_i+velocity_f)*time) 
    print(answer) 

是否有修復此?

+0

請解決您的壓痕。 – jazzpi

回答

6

float()不會修改您傳遞它的變量。相反,它會將您給它的值和返回 a float

所以

float(velocity_i) 

通過本身並沒有什麼,其中

velocity_i = float(velocity_i) 

會給你正在尋找的行爲。


請記住,如果你通過他們的東西他們不期望float()(和其他類型轉換函數)將拋出一個異常。爲了獲得更好的用戶體驗,您應該使用handle these exceptions 。通常情況下,一個做到這一點的一個循環:

while True: 
    try: 
     velocity_i = float(input("Initial Velocity?")) 
     break    # Valid input - stop asking 
    except ValueError: 
     pass    # Ignore the exception, and ask again 

我們最多可以包這種行爲變成一個可愛的小功能,使其更具可重用:

def get_input(prompt, exptype): 
    while True: 
     try: 
      return exptype(input(prompt)) 
     except ValueError: 
      pass    # Ignore the exception, and ask again 

,並調用它像這樣:

val_f = get_input('Give me a floating-point value:', float) 
val_i = get_input('Give me an integer value:', int) 

1 - 哇,我只是意識到,我獨立寫了幾乎完全相同的代碼作爲Python教程,我鏈接到,事後。

1

您可以將輸入轉換爲浮動,當您從用戶拿走它們時。

嘗試

velocity_i = float(input("Initial Velocity?") 

等。

1

是的。只需將它轉換爲浮動:

velocity_i = float(input("Initial Velocity?")) 

或整數

velocity_f = int(input("Final velocity?"))