❶ python中的input()、isinstance()函數如何使用
Python解釋器內置了許多函數,這意味著我們無需定義,始終可以它們。接下來和大家一起討論一個常用的內建函數-input()和isinstance()。
input()
input()函數讀取用戶輸入,並轉換成字元串:
>>>a=input()#將input()返回的值賦值給a
Python
>>>a#查看a的值(為字元串'Python')
'Python'
input()函數可以提供一個參數,用來提示用戶:
>>>b=input('請輸入你最喜歡的水果:')#給用戶必要的提示
請輸入你最喜歡的水果:香蕉
>>>b
'香蕉'
需要注意的是,input()函數返回的值總是字元串,當用戶輸入的是數字也是這樣,所以當使用它時一定要注意:
>>>num=input('請輸入一個數字:')
請輸入一個數字:10
>>>num+9#試圖把num和數字相加
Traceback(mostrecentcalllast):
File"",line1,in
TypeError:mustbestr,notint
>>>num
'10'
>>>type(num)#查看num的數字類型
<class'str'>
isinstance()
isinstance()函數用於檢查對象是否為指定類(或者說數據類型)的實例。isintance()的第一個參數為一個對象,第二個參數為要檢查的數據類型。
舉個例子,比如有有一個變數,你想檢查它是否為數字類型,可以使用isinstance()函數:
score=90
>>>result=isinstance(score,int)
>>>ifresult:
...print('score為int數據類型')
...else:
...print('score不為int數據類型')
...
score為int數據類型
除了能檢查是否為int類型外,isintance()還能檢查其他數據類型(當然了),下面是一個綜合示例:
>>>pi=3.14
>>>name='Wang'
>>>complex_num=1+2j
>>>isinstance(pi,float)#3.14為浮點數類型
True
>>>isinstance(name,str)#'Wang'為字元串類型
True
>>>isinstance(complex_num,complex)#1+2j為復數
True
isinstance()還可以驗證某個對象是否為自定義的類型:
>>>classDeveloper:#定義一個叫做Developer的類
...
...def__init__(self,name):#__init__方法中,需要輸入名字
...self.name=name
...defdisplay(self):#定義了display()方法
...print("Developer:",self.name,"-")
...
>>>classPythonDeveloper(Developer):#PythonDeveloper類,繼承了Developer類
...
...def__init__(self,name,language):
...self.name=name
...self.language=language
...
...defdisplay(self):#覆蓋了父類的display方法
...print("PythonDeveloper:",self.name,"language:",self.language,"-")
...
>>>dev=Developer('Zhang')#創建一個Developer對象
>>>dev.display()#調用display()方法,以查看該對象
Developer:Zhang-
>>>isinstance(dev,Developer)#判斷dev是否為Developer類,答案是肯定的
True
>>>isinstance(dev,PythonDeveloper)#判斷dev是否為PythonDeveloper類,當然不是
False
>>>python_dev=PythonDeveloper('Liu','Python')#創建一個PythonDeveloper對象,注意PythonDeveloper是Developer的子類
>>>python_dev.display()#調用display方法
PythonDeveloper:Liulanguage:Python-
>>>isinstance(python_dev,Developer)#判斷python_dev是否為Developer類,答案是肯定的
True
>>>isinstance(python_dev,PythonDeveloper)#判斷python是否為PythonDeveloper類,答案也是肯定的
True
關於Python的基礎問題可以看下這個網頁的視頻教程,網頁鏈接,希望我的回答能幫到你。
❷ python定義一個學生類,包含三個屬性
class student():
# 構造函數
# 對當前對象的實例的初始化
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
# isinstance函數判斷一個對象是否是一個已知的類型,類似type
def get_name(self):
if isinstance(self.name, str):
return self.name
def get_age(self):
if isinstance(self.age, int):
return self.age
def get_course(self):
a = max(self.score)
if isinstance(a, int):
return a
zm = student('zhangming', 20, [69, 88, 100])
print(zm.get_name())
print(zm.get_age())
print(zm.get_course())
❸ 這個Python代碼該怎麼改為什麼錯了
Python告訴你:float()函數的參數需要是一個字元串或一個數,不能是列表
兩種方法解決:
將參數更改(不推薦,達不到原本的想法)
改代碼(推薦):
1. 把159行改為:self.score = list(map(float, score))
2. 在159行下面添加:self.cource = max(self.score)
(第2項是為了get_cource方法不報錯)
3. 運行,看看是否OK
(如果還報錯可以追問,求採納)
❹ sklearn score函數怎麼有負數
下面是官方文檔給出的為什麼會有負數的解釋(score函數說明中加粗部分),希望可以幫到你。
def score(self, X, y, sample_weight=None):
"""Returns the coefficient of determination R^2 of the prediction.
The coefficient R^2 is defined as (1 - u/v), where u is the resial
sum of squares ((y_true - y_pred) ** 2).sum() and v is the total
sum of squares ((y_true - y_true.mean()) ** 2).sum().
The best possible score is 1.0 and it can be negative (because the
model can be arbitrarily worse). A constant model that always
predicts the expected value of y, disregarding the input features,
would get a R^2 score of 0.0.
❺ 在python中讀取score.csv文件(請下載附件score.csv),並編程實現將score
摘要 您好,很高興為您回答這個問題——一、導入CSV包
❻ 如何用Python進行線性回歸以及誤差分析
數據挖掘中的預測問題通常分為2類:回歸與分類。
簡單的說回歸就是預測數值,而分類是給數據打上標簽歸類。
本文講述如何用Python進行基本的數據擬合,以及如何對擬合結果的誤差進行分析。
本例中使用一個2次函數加上隨機的擾動來生成500個點,然後嘗試用1、2、100次方的多項式對該數據進行擬合。
擬合的目的是使得根據訓練數據能夠擬合出一個多項式函數,這個函數能夠很好的擬合現有數據,並且能對未知的數據進行預測。
代碼如下:
importmatplotlib.pyplot as plt
importnumpy as np
importscipy as sp
fromscipy.statsimportnorm
fromsklearn.pipelineimportPipeline
fromsklearn.linear_modelimportLinearRegression
fromsklearn.
fromsklearnimportlinear_model
''''' 數據生成 '''
x = np.arange(0,1,0.002)
y = norm.rvs(0, size=500, scale=0.1)
y = y + x**2
''''' 均方誤差根 '''
defrmse(y_test, y):
returnsp.sqrt(sp.mean((y_test - y) **2))
''''' 與均值相比的優秀程度,介於[0~1]。0表示不如均值。1表示完美預測.這個版本的實現是參考scikit-learn官網文檔 '''
defR2(y_test, y_true):
return1- ((y_test - y_true)**2).sum() / ((y_true - y_true.mean())**2).sum()
''''' 這是Conway&White《機器學習使用案例解析》里的版本 '''
defR22(y_test, y_true):
y_mean = np.array(y_true)
y_mean[:] = y_mean.mean()
return1- rmse(y_test, y_true) / rmse(y_mean, y_true)
plt.scatter(x, y, s=5)
degree = [1,2,100]
y_test = []
y_test = np.array(y_test)
fordindegree:
clf = Pipeline([('poly', PolynomialFeatures(degree=d)),
('linear', LinearRegression(fit_intercept=False))])
clf.fit(x[:, np.newaxis], y)
y_test = clf.predict(x[:, np.newaxis])
print(clf.named_steps['linear'].coef_)
print('rmse=%.2f, R2=%.2f, R22=%.2f, clf.score=%.2f'%
(rmse(y_test, y),
R2(y_test, y),
R22(y_test, y),
clf.score(x[:, np.newaxis], y)))
plt.plot(x, y_test, linewidth=2)
plt.grid()
plt.legend(['1','2','100'], loc='upper left')
plt.show()
該程序運行的顯示結果如下:
[ 0. 0.75873781]
rmse=0.15, R2=0.78, R22=0.53, clf.score=0.78
[ 0. 0.35936882 0.52392172]
rmse=0.11, R2=0.87, R22=0.64, clf.score=0.87
[ 0.00000000e+00 2.63903249e-01 3.14973328e-01 2.43389461e-01
1.67075328e-01 1.10674280e-01 7.30672237e-02 4.88605804e-02
......
3.70018540e-11 2.93631291e-11 2.32992690e-11 1.84860002e-11
1.46657377e-11]
rmse=0.10, R2=0.90, R22=0.68, clf.score=0.90
❼ Python至少輸入五個成績怎麼編程
參考代碼如下:
scores = list(map(lambda x:int(x),list(input('請輸入至少5個學生的成績(用空格分隔):').split(' '))))
maxScore = max(scores)
for s in scores:
if s >= maxScore - 10:
print('百分製成績為{},等級為:{}'.format(s, "A"))
elif s >= maxScore - 20:
print('百分製成績為{},等級為:{}'.format(s, "B"))
elif s >= maxScore - 30:
print('百分製成績為{},等級為:{}'.format(s, "C"))
elif s >= maxScore - 40:
print('百分製成績為{},等級為:{}'.format(s, "D"))
else:
print('百分製成績為{},等級為:{}'.format(s, "F"))
運行結果:
❽ Python編程題:編寫函數,計算某班級學生考試的平均分
defavgScore(scores,n=10):
s=0
foriinrange(len(scores)):
s+=scores[i]
returns/n
scores=[90,88,76,45,77,95,66,88,91]
print("按班級人數計算的平均值:{:.2f}".format(avgScore(scores)))
print("按考試人數計算的平均值:{:.2f}".format(avgScore(scores,len(scores))))
❾ python中有多個字典,然後取最大值
d1={'ser':'0001','name':'Tom','sex':'m','score':'76'}
d2={'ser':'0002','name':'Jak','sex':'m','score':'87'}
d3={'ser':'0003','name':'Alic','sex':'f','score':'86'}
max_score=float('-inf')
min_score=float('inf')
max_student=None
min_student=None
fordin[d1,d2,d3]:
score=int(d['score'])
ifscore>max_score:
max_score=score
max_student=d
ifscore<min_score:
min_score=score
min_student=d
print('minscorestudentinfo',min_student)
print('maxscorestudentinfo',max_student)
應該能夠滿足你的需求
❿ python里有一個列表,列表裡有幾個小列表,小列表裡寫的是同學的名字和成績,如何帶著列表給分數排序
#冒泡排序:
scoreList=[
['a',98],
['c',45],
['b',70],
['d',85],
['h',85],
['f',92],
['g',30],
['e',65]
];
arrLen=len(scoreList);
foriinrange(arrLen):
a=scoreList[i]
forjinrange(arrLen):
b=scoreList[j-1]
ifb[1]<a[1]:
scoreList[i],scoreList[j-1]=scoreList[j-1],scoreList[i]
print(scoreList)
冒泡排序 也可以用自帶的排序函數 scoreList.sort(key=func) func是一個自定義的函數 具體用法可以看文檔