風變編程第18關,快要結束了,捎帶着復習了一下前面的基礎。結果悲劇了。
打開題目是這樣的:
比如我們想寫一個根據圓的半徑(R)來求面積(S)和周長(L)的代碼,可以畫出以下的流程圖
抬眼一看,好簡單的題目。抬手就寫:
# 如流程圖所示,求圓的面積和周長的代碼
r=input('輸入圓半徑(單位:mm): ')
# 圓周率(pi)取3.14即可
pi=3.14
s=pi*r*r
l=2*pi*r
print('圓面積為S=',s)
print('圓周長為l=',l)
點擊運行,悲劇了。直接報錯。
輸入圓半徑(單位:mm): 6.5
Traceback (most recent call last):
File "/home/python-class/classroom/apps-1-id-5cd9766919bbcf00015547cd/0a89a2bc-6155-2a78-ca3e-59bba4ae84fe/main.py", line 5, in <module>
s=pi*r*r
TypeError: can't multiply sequence by non-int of type 'float'
直接蒙了,什么問題?定義不對?why?為什么?
到處查,CSDN、博客園逛遍了,只知道數據類型不對,可是從哪里改呢?一咬牙,一跺腳,挨着行來。一個個試過,最后發現input()的輸入結果是字符串。於是在input前面轉換,成功。
# 如流程圖所示,求圓的面積和周長的代碼
r=float(input('輸入圓半徑(單位:mm): '))
# 圓周率(pi)取3.14即可
pi=3.14
s=pi*r*r
l=2*pi*r
print('圓面積為S=',s)
print('圓周長為l=',l)
運行結果:
ca3e-59bba4ae84fe/main.py
輸入圓半徑(單位:mm): 4.3
圓面積為S= 58.0586
圓周長為l= 27.004
記錄下來,主要是給自己看,以后再犯此類錯誤時候可以找到。有緣人看到也能順道解決一下。