iT邦幫忙

0

python的if問題

各位大大好,我是今天剛開始學python的小菜雞,我今天剛看完一部教學,想說自己寫個簡易計算機來測試看看,想要順便練習file的用法,於是就想用txt檔做計算,分別抓數字回來,但是在計算判斷的時候,不管怎樣他都偵測不到我的運算符號,我在文檔中打+,我用print來自己看有沒有抓到符號,是有抓到的,可是在if裡面卻是沒有偵測到直接跑到最後的否則了,小弟我嘗試許久都沒有辦法就來這邊求救了(剛開始學請不要鞭的太用力)

#抓取題目

with open("calculator.txt",mode="r",encoding="utf-8") as file:
    #數字一
    num1 = float(file.readline())
    #運算符號
    cal = file.readline()
    #數字二
    num2 = float(file.readline())

#運算
Ans = None
print(cal)
if cal=="+":
        Answer = (num1 + num2)
elif cal=="-":
        Answer = (num1 - num2)
elif cal=="*":
        Answer = (num1 * num2)
elif cal=="x":
        Answer = (num1 * num2)
elif cal=="/":
        Answer = (num1 / num2)
else:
    Answer= "我還沒寫這個算法"
print(str(Answer))
#將答案覆寫回去    
with open("calculator.txt",mode="w",encoding="utf-8") as file:
    file.write(str(num1))
    file.write("\n"+cal)
    file.write(str(num2))
    file.write("\n=")
    file.write("\n"+str(Answer))
    

提示:
換行符號。我猜的。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
japhenchen
iT邦超人 1 級 ‧ 2021-07-28 08:06:11

前面縮排不要長短不一,從你中間if ... elif ....看到的
最後一個else 的段落一個tab,上排的elif卻是兩個tab
而且,搜尋文字,要用in不用==,從檔案裡讀出來的,不會只有看的見的部份,看不見的如tab、斷行\n\r..都會造成==不中

if "+" in calc:
    answer.............
0
海綿寶寶
iT邦大神 1 級 ‧ 2021-07-28 09:23:11

    cal = file.readline()

改成

    cal = file.readline().rstrip('\n')

我用print來自己看有沒有抓到符號,是有抓到的

如果你把 num1,num2 也 print 出來
就會發現 cal 多了一個換列
以致於不符合後面的所有 if 的判斷

froce iT邦大師 1 級 ‧ 2021-07-28 10:17:28 檢舉

print出來應該看不到,python不會顯示\n而是會正確的換行

這種時候應該用 print(cal.encode('unicode_escape'))
才看的到裡面的換行符。

我指的「看到」只是下面這樣
/images/emoticon/emoticon25.gif

$ python readfile.py #修改前
1.0
+

1.0
N/A
$ python readfile.py #修改後
1.0
+
1.0
2.0
0
comp2468
iT邦新手 5 級 ‧ 2021-07-30 15:08:02

剛才測試了一下 ㊣浩瀚星空㊣ 的換行
使用

cal=="+\n":

即可

我要發表回答

立即登入回答