我目前正在使用Python 3.3.0編寫一個程序,它打印出n個第一個方形數字並最終打印出它們的總和。條件是用戶只能計算大於零的整數項。這裏是代碼:檢查輸入是否是一個循環中的字符串
print("WELCOME!")
n = input("How many numbers to sum up?: ")
while n <= 0:
print("You have to write a positive integer; try again!")
n = input("How many numbers to sum up?: ")
i = 1
sum = 0
while 0 < i <= n:
print(i,"*",i,"=", i**2)
sum += i**2
i += 1
print("Sum:", sum)
現在,我設法編寫錯誤消息,當用戶鍵入一個負數。但是,在用戶鍵入字符串時(例如「十五」),編碼錯誤消息時遇到困難。
我希望程序允許用戶嘗試一次又一次地賦值'n'的值,就好像他們輸入了一個負數;基本上我想編寫一個循環,如果用戶輸入一個字符串,就會一遍又一遍地詢問相同的事情。
問題是input()總是將一個字符串賦值給一個任意變量,所以我試圖編寫將字符串轉換爲整數的代碼。當用戶輸入一個整數值時它工作正常,但是如果'n'不是整數,它不能定義int(n)。
我在這個問題上搜索了很多,我發現了一些使用try和except ValueError的例子,但是他們都沒有能夠創建一個循環。
有人有想法嗎?
您還可以看看['ast.literal_eval'(http://docs.python.org/2/library/ast.html#ast.literal_eval) – Bakuriu 2013-02-10 07:36:47