零基礎入門學習python_005筆記及作業_python的數值類型_猜數字小遊戲V2.2
作業1:當使用者輸入錯誤類型的時候,及時提醒使用者重新輸入,防止程式崩潰。
原先的構想打算使用isinstance函數,判斷輸入值是否為數字(int)
程式碼考慮有:
==============================以下為程式碼==============================
temp = input("guess the number from 1 to 10 : ")
while isinstance(temp, int) != True:
print('Type error')
temp = input('Please key in again: ')
count = 3
guess = int(temp)
---------------------------------------------------------------分隔線中的分隔線
temp = input("guess the number from 1 to 10 : ")
count = 3
guess = int(temp)
if isinstance(temp, int) != True:
while guess != secret and count != 0:
temp = input("So sorry, you're wrong! Please guess again: ")
guess = int(temp)
count = count -1
if count == 0:
print('so sad')
elif guess == secret:
print("Wonderful")
print("But still no reward")
else:
if guess > secret:
print('Hey, too BIG')
else:
print('Hey, too small')
=======================================================================
問題很多,但是就講最根本的就好。
就是:input()函數會將所有輸入的內容全部記錄成「字串」!
所以就算我輸入的是數字,他也會記錄成字串。
比方說我輸入「3」,但是python記錄的是「'3'」,
所以isinstance永遠都會是False。
所以甲魚哥說:
以上方法的思路是正確的,不過似乎忽略了一點兒:就是input()的返回值始終是字串,所以type(temp)永遠是<class 'str>!
其實有蠻多的做法可以實現的,不過就目前我們學習過的內容來看,還不足夠。
甲魚哥,學過得內容不夠你開這作業給學生這樣對嗎!!!
這次甲魚哥給的提示如下:
str.isalnum() 所有字元都是數位或者字母,為真返回 Ture,否則返回 False。
str.isalpha() 所有字元都是字母,為真返回 Ture,否則返回 False。
str.isdigit() 所有字元都是數位,為真返回 Ture,否則返回 False。
str.islower() 所有字元都是小寫,為真返回 Ture,否則返回 False。
str.isupper() 所有字元都是大寫,為真返回 Ture,否則返回 False。
str.istitle() 所有單詞都是首字母大寫,為真返回 Ture,否則返回 False。
str.isspace() 所有字元都是空白字元,為真返回 Ture,否則返回 False。
上述的參數也可以透過dir(str)讓我們索引得到。
所以完成的作業該如下:
==============================以下為程式碼==============================
import random
secret = random.randint(1,10)
print("----------Elliot Production----------")
temp = input("guess the number from 1 to 10 : ")
while str.isdigit(temp) != True:
print('Type Error')
temp = input('Please key in again: ')
count = 3
guess = int(temp)
while guess != secret and count != 0:
temp = input("So sorry, you're wrong! Please guess again: ")
while str.isdigit(temp) != True:
print('Type Error')
temp = input('Please key in again: ')
guess = int(temp)
count = count -1
if count == 0:
print('so sad')
elif guess == secret:
print("Wonderful")
print("But still no reward")
else:
if guess > secret:
print('Hey, too BIG')
else:
print('Hey, too small')
print("Game Over")
=======================================================================
作業2:我們人類思維是習慣於“四捨五入”法,你有什麼辦法使得 int() 按照“四捨五入”的方式取整嗎?
5.4 “四捨五入”結果為:5,int(5.4+0.5) == 5
5.6 “四捨五入”結果為:6,int(5.6+0.5) == 6
概念:加上0.5後,原本小數點後就高於0.5的小數就會大於1而進位,再透過int取整數即可。
=======================================================================
作業3:寫一個程式,判斷給定年份是否為閏年。
閏年的定義:能被4整除但不能被100整除,或者能被400整除都是閏年,但被4000整除就不是閏年。
==============================以下為程式碼==============================
print('***閏年判斷器***')
while True:
temp = input('請使用阿拉伯數字,輸入欲查詢的年份。若要結束程式請輸入exit:')
while True:
if temp == 'exit':
break
elif str.isdigit(temp) != True:
print('不是阿拉伯數字我看不懂唷!')
temp = input('請重新輸入,謝謝~')
else:
year = int(temp)
break
if temp == 'exit':
break
elif year % 4000 == 0:
print(temp+'年不是閏年')
elif year % 400 == 0:
print(temp+'年是閏年')
elif year % 100 == 0:
print(temp+'年不是閏年')
elif year % 4 == 0:
print(temp+'年是閏年')
else:
print(temp+'年不是閏年')
=======================================================================
原先的構想打算使用isinstance函數,判斷輸入值是否為數字(int)
程式碼考慮有:
==============================以下為程式碼==============================
temp = input("guess the number from 1 to 10 : ")
while isinstance(temp, int) != True:
print('Type error')
temp = input('Please key in again: ')
count = 3
guess = int(temp)
---------------------------------------------------------------分隔線中的分隔線
temp = input("guess the number from 1 to 10 : ")
count = 3
guess = int(temp)
if isinstance(temp, int) != True:
while guess != secret and count != 0:
temp = input("So sorry, you're wrong! Please guess again: ")
guess = int(temp)
count = count -1
if count == 0:
print('so sad')
elif guess == secret:
print("Wonderful")
print("But still no reward")
else:
if guess > secret:
print('Hey, too BIG')
else:
print('Hey, too small')
else:
print('type error, please key in again: ')
=======================================================================
問題很多,但是就講最根本的就好。
就是:input()函數會將所有輸入的內容全部記錄成「字串」!
所以就算我輸入的是數字,他也會記錄成字串。
比方說我輸入「3」,但是python記錄的是「'3'」,
所以isinstance永遠都會是False。
所以甲魚哥說:
以上方法的思路是正確的,不過似乎忽略了一點兒:就是input()的返回值始終是字串,所以type(temp)永遠是<class 'str>!
其實有蠻多的做法可以實現的,不過就目前我們學習過的內容來看,還不足夠。
甲魚哥,學過得內容不夠你開這作業給學生這樣對嗎!!!
這次甲魚哥給的提示如下:
str.isalnum() 所有字元都是數位或者字母,為真返回 Ture,否則返回 False。
str.isalpha() 所有字元都是字母,為真返回 Ture,否則返回 False。
str.isdigit() 所有字元都是數位,為真返回 Ture,否則返回 False。
str.islower() 所有字元都是小寫,為真返回 Ture,否則返回 False。
str.isupper() 所有字元都是大寫,為真返回 Ture,否則返回 False。
str.istitle() 所有單詞都是首字母大寫,為真返回 Ture,否則返回 False。
str.isspace() 所有字元都是空白字元,為真返回 Ture,否則返回 False。
上述的參數也可以透過dir(str)讓我們索引得到。
所以完成的作業該如下:
==============================以下為程式碼==============================
import random
secret = random.randint(1,10)
print("----------Elliot Production----------")
temp = input("guess the number from 1 to 10 : ")
while str.isdigit(temp) != True:
print('Type Error')
temp = input('Please key in again: ')
count = 3
guess = int(temp)
while guess != secret and count != 0:
temp = input("So sorry, you're wrong! Please guess again: ")
while str.isdigit(temp) != True:
print('Type Error')
temp = input('Please key in again: ')
guess = int(temp)
count = count -1
if count == 0:
print('so sad')
elif guess == secret:
print("Wonderful")
print("But still no reward")
else:
if guess > secret:
print('Hey, too BIG')
else:
print('Hey, too small')
print("Game Over")
作業2:我們人類思維是習慣於“四捨五入”法,你有什麼辦法使得 int() 按照“四捨五入”的方式取整嗎?
5.4 “四捨五入”結果為:5,int(5.4+0.5) == 5
5.6 “四捨五入”結果為:6,int(5.6+0.5) == 6
概念:加上0.5後,原本小數點後就高於0.5的小數就會大於1而進位,再透過int取整數即可。
=======================================================================
作業3:寫一個程式,判斷給定年份是否為閏年。
閏年的定義:能被4整除但不能被100整除,或者能被400整除都是閏年,但被4000整除就不是閏年。
==============================以下為程式碼==============================
print('***閏年判斷器***')
while True:
temp = input('請使用阿拉伯數字,輸入欲查詢的年份。若要結束程式請輸入exit:')
while True:
if temp == 'exit':
break
elif str.isdigit(temp) != True:
print('不是阿拉伯數字我看不懂唷!')
temp = input('請重新輸入,謝謝~')
else:
year = int(temp)
break
if temp == 'exit':
break
elif year % 4000 == 0:
print(temp+'年不是閏年')
elif year % 400 == 0:
print(temp+'年是閏年')
elif year % 100 == 0:
print(temp+'年不是閏年')
elif year % 4 == 0:
print(temp+'年是閏年')
else:
print(temp+'年不是閏年')
留言
張貼留言