iT邦幫忙

0

python Q : 篩出類行是 float or empty 但default也接受?! 請拯救我枯竭的腦袋

不瞞各位此問題是小的一項作業但卡關許久,所以前來尋求幫助,題目類似:
1.詢問用戶輸入台幣換美金的匯率值 且用戶必須輸入是float 或empty (but default value is used.) 否則一直詢問用戶輸入匯率值
[我卡關的地方在此,一是不懂如何篩出empty?default? 二是老師不允許沒有輸入值直接按enter 卻可以繼續run ]
2.當輸入匯率值符合要求,則詢問要換多少台幣? 然後計算出可換得美金多少
3.完成計算後再次詢問用戶是否再來一次? 是,則重問

我試過 使用isdigit和isinstance 去篩出float 但卡在 input('give a rate')? 為str 就不知是否該先 float(input)嗎? 但又還是卡empty 和default....

另附上老師的一段提示,但我有看沒有懂
Basically, program will accept only a float value or a null value.
If a float value is provided the program will use the user provided value to do the calculations.
If null value is provided the program will use the default value to perform the calculations.
You will need to set the default value yourself.

Example:
user_value is provided by the user
default_value is set to 1.5

if user_value is null then exchange_rate is set to default_value
otherwise, exchange_rate is set to user_value.

froce iT邦大師 1 級 ‧ 2020-11-05 08:23:26 檢舉
啊就提供一個預設值,如果使用者輸入空白,就用預設值,輸入符合的值就用那個值而已啊...

input得到的結果就是str,你得轉型成float,沒問題的話拿這個值當匯率...

然後功課自己寫。這題很基本,基本到不會就該直接重修。
toro523 iT邦新手 5 級 ‧ 2020-11-05 14:12:33 檢舉
你話嚴重了,我的作業我一直自己寫,但有問題我會問,如同我寫信問了老師問題一樣只是仍不懂才來此詢問,看能不能克服語言阻礙讓答案好懂一點
如上所述,我卡在的地方
卡在 input('give a rate')? 為str 就不知是否該先 str(input)嗎? 但又還是卡empty 和default
一開始我的code 是 float(input) 在.isinstance( ask, (float, ?)) 因為題目還允許empty, default 也接受,那在問號區是否我要寫為 ( float,null) ??
目前才接觸此語言一個半月,我還有很多要學我知道。我 而且我確實在正在修課,重修是被當了才做的事,您預測太遠了,但我會記得你的提醒,謝謝'。

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-11-05 09:37:11
最佳解答

我對題目的解讀如下
試試看合不合用

#You will need to set the default value yourself. 
default_value = 1.5

bRun = True

suser_value = input('give a rate')

while bRun == True:
  if suser_value:
    
    if suser_value == 'empty':
      #If null value is provided the program will use the default value to perform the calculations.
      user_value = default_value
    else:
      #If a float value is provided the program will use the user provided value to do the calculations.
      user_value = float(suser_value)
    
    ntd_value = float(input('How many NTD ?'))
    
    print ('USD = ', ntd_value * user_value)
    
    exg_next = input('continue ? (Y to continue)')
	
    if exg_next == 'Y':
      bRun = True

      suser_value = input('give a rate')
    else:
      bRun = False
  else:
    suser_value = input('give a rate')
toro523 iT邦新手 5 級 ‧ 2020-11-05 14:16:40 檢舉

謝謝你的幫忙,還附加解釋,讓我研究研究 :)

1
japhenchen
iT邦大師 1 級 ‧ 2020-11-05 08:54:12

剛試過沒問題啊

import os
clear = lambda: os.system('cls')  
# windows 是 cls  , Linux是clear,清屏用
currency = 28.975
a=""
while(len(a)==0):
    clear()
    a=input("要交換的台幣金額:")
    if a.isdigit()==False:
            a=""
print("折合美金:{0:.2f}" .format(float(a)/currency))        
看更多先前的回應...收起先前的回應...
toro523 iT邦新手 5 級 ‧ 2020-11-05 14:16:06 檢舉

謝謝您的幫忙,讓我來谷哥一下我看不懂的地方 :)

有可能的話就是第二行對於初學者會有些卡卡,lambda ... 那就當做看不懂,只是為了用來清空畫面而已

其他的應該都是初級用法而已,沒什麼特別的用意,最後一句format只是個人習慣,不想看到3.1415926.....一長串的數字

toro523 iT邦新手 5 級 ‧ 2020-11-05 15:23:55 檢舉

確實是lambda不懂,另也發現少了clear 其實也可以跑,但在測試時第一次刻意直接按enter 第二次輸入int 卻給過了算出答案,有點疑惑不是用了.isdigit()==False

我要發表回答

立即登入回答