pythonifelifnot
1. python if 語句 縮進
#兩種類型的else表示的邏輯不一樣
#lz說的第一種,如果range(2, n)中的每一條均沒有執行,則會執行else語句,邏輯是for...else
以下是else的一些總結
if-else語句:
和各種語言相同的用法,在條件語句中,與if語句搭配使用的else語句。如果if語句的條件表達式的結果布爾值為假,那麼程序將執行else語句後的代碼。它的語法是大家最為熟知的:
Python代碼
if expression:
expr_true_suite
else:
expr_false_suite
elif(else-if)語句:
elif是python提供的else-if語句,它檢查多個條件表達式的值是否為真,並在為真時執行特定代碼塊中的代碼。和else一樣,elif是可選的,但是要注意的是,一個if語句可以跟多個elif語句,但最後只能有一個else語句:
Python代碼
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
elif expressionN:
exprN_true_suite
else:
none_of_the_above_suite
while-else/for-else語句:
在其他語言中,除了條件語句,是不會見到else分支的,但在Python中,while和for循環中,也是可以使用else語句的。它們的工作順序為:在循環中使用時,else語句只在循環完成後執行,也就是說,break語句也會跳過else代碼塊,只要循環是正常結束,而不是通過break,else語句就會執行。
while-else舉例:
Python代碼
#!/usr/bin/env python
# 尋找最大約數
def showMaxFactor(num):
count=num/2
while count>1:
if num%count == 0:
print 'largest factor of %d is %d' % (num,count)
break
count -=1
else:
print num,'is prime'
for i in range(10,21):
showMaxFactor(i)
程序的執行結果為:
largest factor of 10 is 5
11 is prime
largest factor of 12 is 6
13 is prime
largest factor of 14 is 7
largest factor of 15 is 5
largest factor of 16 is 8
17 is prime
largest factor of 18 is 9
19 is prime
largest factor of 20 is 10
try-else語句:
對於python中的錯誤和異常,try-except語句段,也可以和else連用,其功能和循環中的else語句沒有多大區別:在try范圍內沒有檢測到異常的時候,執行else子句。看一下語法:
Python代碼
try:
log = open('logfile.txt','w')
except:
print 'file logfile.txt is not exsit'
else:
log.write('no exception caught')
log.close()
當然,在異常處理中,else一樣可以和finally聯用:try-except-else-finally。
2. python if語句裡面怎麼繼續寫if語句
f的基本語法格式看下面:第一行是條件語句,如果滿足條件就會執行第二行,沒有括弧或者結束語句,比如endif,沒有。
假如第二行沒有縮進,就會產生錯誤。
新手容易犯一個錯誤就是條件語句後面不寫冒號,出現這樣的錯誤:
我們假如有多個條件,我們可以使用else,當條件不滿足的時候執行它下面的語句塊。當然else是頂個寫,並且後面記得寫冒號。
如果還有更多的條件,我們可以使用elif,同樣不要忘記冒號和縮進
3. PYTHON中關鍵字elif問題,請高手賜教
我沒有看到你的縮進
>>> if x<0:
... x=0
... print "asdf"
... elif x==0:
... print "asdf"
這樣的是不可能出現問題的,如果你要輸入比較復雜的語句結構的時候,不建議到shell下面輸入,因為很容易出錯。可以新建個py文件來測試。
4. python if語句是什麼
Python條件語句是通過一條或多條語句的執行結果(True或者False)來決定執行的代碼塊。
Python程序語言指定任何非0和非空(null)值為true,0 或者 null為false。
Python 編程中 if 語句用於控製程序的執行。其中"判斷條件"成立時(非零),則執行後面的語句,而執行內容可以多行,以縮進來區分表示同一范圍。
else 為可選語句,當需要在條件不成立時執行內容則可以執行相關語句。
(1)簡單的if語句:
在第1行中,可包含任何條件測試,而在緊跟在測試後面的縮進代碼塊中,可執行任何操作。如果條件測試的結果為True,Python就會執行緊跟在if語句後面的代碼;否則Python將忽略這些代碼。
(2)if-else語句
經常需要在條件測試通過了時執行一個操作,並在沒有通過時執行另一個操作;在這種情況下,可使用Python提供的if-else語句。if-else語句塊類似於簡單的if語句,但其中的else語句,讓你能夠指定條件測試未通過時要執行的操作。
(3)if-elif-else語句
經常需要檢查超過兩個的情形,為此可使用Python提供的if-elif-else結構。Python只執行if-elif-else結構中的一個代碼塊,它依次檢查每個條件測試,直到遇到通過了的條件測試。測試通過後,Python將執行緊跟在它後面的代碼,並跳過餘下的測試。
條件測試:
(1)概念:
每條if語句的核心都是一個值為True或False的表達式,這種表達式被稱為條件測試。Python根據條件測試的值為True還是False來決定是否執行if語句中的代碼。如果條件測試的值為True,Python就執行緊跟在if語句後面的代碼;如果為False,Python就忽略這些代碼。
(2)檢查是否相等:
通常情況下會用 「==」的左值和右值是否相等來判斷程序是否繼續進行,會區分大小寫也會用「!=」 來表示不相等繼續進行,相等則忽略。
(3)檢查多個條件:
and: 要檢查是否兩個條件都為True,可使用關鍵字and將兩個條件測試合而為一;如果每個測試都通過了,整個表達式就為True;如果至少有一個測試沒有通過,整個表達式就為False。
or: 關鍵字or也能夠讓你檢查多個條件,但只要至少有一個條件滿足,就能通過整個測試。僅當兩個測試都沒有通過時,使用or的表達式才為False。
(4)檢查特定值是否包含在列表內:
要判斷特定的值是否已包含在列表中,可使用關鍵字in。
(5)檢查特定值是否不包含在列表內:
確定特定的值未包含在列表中很重要,可使用關鍵字not in。
(6)布爾表達式:
布爾表達式的結果要麼為True,要麼為False。
5. python if 語句可以多條件判斷么
#!/usr/local/bin/python
defke_yi_me(t):
if'python'and'if'int:
returnTrue
elif'python'and'if'notint:
returnFalse
ifke_yi_me("pythonif語句可以多條件判斷么")orke_yi_me("python語句可以多條件判斷"):
print'廢話'
6. python if not lines.find(keyword)==-1: n=n+1 執行一次就退出了,文本記錄都沒有執行
在定義re函數的第一句,就是def re(paths):下一句,加一個global n。建議try...except中不要用pass,這樣拋錯信息怎麼能找到呢。
7. python else if 怎麼表示
s=['a','b','c','d']
s[s.index('c')]='chinese'
prints
print'd'*80
forindex,valueinenumerate(s):
if'd'invalue:
s[index]='Japan'
elif'b'invalue:
s[index]='China'
else:
pass
prints
8. 用Python的if多選擇結構編寫
def main():
weight = float(input('重量(g): '))
far = float(input('里程(km): '))
if weight <= 0 or far <= 0:
return None
elif weight < 500 and far < 500:
return 20
elif 500 <= far < 1500:
return 20 + 6 * (int(weight / 500) if not weight % 500 else int(weight / 500)+ 1)
elif 1500 <= far < 2500:
return 20 + 9 * (int(weight / 500) if not weight % 500 else int(weight / 500)+ 1)
else:
return 20 + 15 * (int(weight / 500) if not weight % 500 else int(weight / 500)+ 1)
if __name__ == '__main__':
print(main())
9. python 出現這個錯誤是什麼原因
要把錯誤的內容發出來才可以知道
以下是python常見錯誤
1)忘記在 if , elif , else , for , while , class ,def 聲明末尾添加 :(導致 「SyntaxError :invalid syntax」)
該錯誤將發生在類似如下代碼中:
if spam == 42
print('Hello!')
2)使用 = 而不是 ==(導致「SyntaxError: invalid syntax」)
= 是賦值操作符而 == 是等於比較操作。該錯誤發生在如下代碼中:
if spam = 42:
print('Hello!')
3)錯誤的使用縮進量。(導致「IndentationError:unexpected indent」、「IndentationError:unindent does not match any outer indetation level」以及「IndentationError:expected an indented block」)
記住縮進增加只用在以:結束的語句之後,而之後必須恢復到之前的縮進格式。該錯誤發生在如下代碼中:
print('Hello!')
print('Howdy!')
或者:
if spam == 42:
print('Hello!')
print('Howdy!')
或者:
if spam == 42:
print('Hello!')
4)在 for 循環語句中忘記調用 len() (導致「TypeError: 'list' object cannot be interpreted as an integer」)
通常你想要通過索引來迭代一個list或者string的元素,這需要調用 range() 函數。要記得返回len 值而不是返回這個列表。
該錯誤發生在如下代碼中:
spam = ['cat', 'dog', 'mouse']
for i in range(spam):
print(spam[i])
5)嘗試修改string的值(導致「TypeError: 'str' object does not support item assignment」)
string是一種不可變的數據類型,該錯誤發生在如下代碼中:
spam = 'I have a pet cat.'
spam[13] = 'r'
print(spam)
而你實際想要這樣做:
spam = 'I have a pet cat.'
spam = spam[:13] + 'r' + spam[14:]
print(spam)
6)嘗試連接非字元串值與字元串(導致 「TypeError: Can't convert 'int' object to str implicitly」)
該錯誤發生在如下代碼中:
numEggs = 12
print('I have ' + numEggs + ' eggs.')
而你實際想要這樣做:
numEggs = 12
print('I have ' + str(numEggs) + ' eggs.')
或者:
numEggs = 12
print('I have %s eggs.' % (numEggs))
7)在字元串首尾忘記加引號(導致「SyntaxError: EOL while scanning string literal」)
該錯誤發生在如下代碼中:
print(Hello!')
或者:
print('Hello!)
或者:
myName = 'Al'
print('My name is ' + myName + . How are you?')
8)變數或者函數名拼寫錯誤(導致「NameError: name 'fooba' is not defined」)
該錯誤發生在如下代碼中:
foobar = 'Al'
print('My name is ' + fooba)
或者:
spam = ruond(4.2)
或者:
spam = Round(4.2)
9)方法名拼寫錯誤(導致 「AttributeError: 'str' object has no attribute 'lowerr'」)
該錯誤發生在如下代碼中:
spam = 'THIS IS IN LOWERCASE.'
spam = spam.lowerr()
10)引用超過list最大索引(導致「IndexError: list index out of range」)
該錯誤發生在如下代碼中:
spam = ['cat', 'dog', 'mouse']
print(spam[6])
11)使用不存在的字典鍵值(導致「KeyError:『spam』」)
該錯誤發生在如下代碼中:
spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'}
print('The name of my pet zebra is ' + spam['zebra'])
12)嘗試使用Python關鍵字作為變數名(導致「SyntaxError:invalid syntax」)
Python關鍵不能用作變數名,該錯誤發生在如下代碼中:
class = 'algebra'
Python3
的關鍵字有:and, as, assert, break, class, continue, def, del, elif, else,
except, False, finally, for, from, global, if, import, in, is, lambda,
None, nonlocal, not, or, pass, raise, return, True, try, while, with,
yield
13)在一個定義新變數中使用增值操作符(導致「NameError: name 'foobar' is not defined」)
不要在聲明變數時使用0或者空字元串作為初始值,這樣使用自增操作符的一句spam += 1等於spam = spam + 1,這意味著spam需要指定一個有效的初始值。
該錯誤發生在如下代碼中:
spam = 0
spam += 42
eggs += 42
14)在定義局部變數前在函數中使用局部變數(此時有與局部變數同名的全局變數存在)(導致「UnboundLocalError: local variable 'foobar' referenced before assignment」)
在函數中使用局部變來那個而同時又存在同名全局變數時是很復雜的,使用規則是:如果在函數中定義了任何東西,如果它只是在函數中使用那它就是局部的,反之就是全局變數。
這意味著你不能在定義它之前把它當全局變數在函數中使用。
該錯誤發生在如下代碼中:
someVar = 42
def myFunction():
print(someVar)
someVar = 100
myFunction()
15)嘗試使用 range()創建整數列表(導致「TypeError: 'range' object does not support item assignment」)
有時你想要得到一個有序的整數列表,所以 range() 看上去是生成此列表的不錯方式。然而,你需要記住 range() 返回的是 「range object」,而不是實際的 list 值。
該錯誤發生在如下代碼中:
spam = range(10)
spam[4] = -1
也許這才是你想做:
spam = list(range(10))
spam[4] = -1
(注意:在 Python 2 中 spam = range(10) 是能行的,因為在 Python 2 中 range() 返回的是list值,但是在 Python 3 中就會產生以上錯誤)
16)不錯在 ++ 或者 -- 自增自減操作符。(導致「SyntaxError: invalid syntax」)
如果你習慣於例如 C++ , Java , PHP 等其他的語言,也許你會想要嘗試使用 ++ 或者 -- 自增自減一個變數。在Python中是沒有這樣的操作符的。
該錯誤發生在如下代碼中:
spam = 1
spam++
也許這才是你想做的:
spam = 1
spam += 1
17)忘記為方法的第一個參數添加self參數(導致「TypeError: myMethod() takes no arguments (1 given)」)
該錯誤發生在如下代碼中:
class Foo():
def myMethod():
print('Hello!')
a = Foo()
a.myMethod()
10. python3.7 輸出2001到2100間所有的閏年月份 每十個一行 這個程序怎麼寫 要用到for in
j=1
foriinrange(2001,2101):
ifnoti%4andi%100:
ifj<10:
print('{1}'.format(j,i),end='')
else:
print('{1}'.format(j,i))
j=0
j+=1
elifnoti%100andnoti%400:
ifj<10:
print('{1}'.format(j,i),end='')
else:
print('{1}'.format(j,i))
j=0
j+=1