作者CaTom (Tom)
看板Python
标题[问题] 输入以空格区隔
时间Sun Sep 10 12:18:44 2017
各位高手们好
小弟python新手,Codecademy的课程也还没学全,
不过因为以前学了一点C++(脱离新手但未到进阶),
所以对於语法还不算太陌生,也会上zerojudge练习解题(虽然现在只能用C++解)
--------------
(以下一大段只是我尝试解题的经过可直接忽略,真正的问题在最底下)
最近试了用python解题,(py3)
结果除了第一题提供参考范例程式码之外,第二题就一直挑战失败
(题目网址: https://zerojudge.tw/ShowProblem?problemid=a002 )
明明是很简单的输入两个数後回传相加值,却因为卡在输入还不熟而无法进入下一步
直到刚刚才找出原因是因为
C++的cin输入int是以空格为终止,但我目前会用的python
不管是
input()还是偷复制第一题范例的
sys.stdin,都把
整行当作字串存取
eg. 输入 "5 10" C++可以读到
5, 10 ,python是存取为
"5 10"字串
知道原因後就好解多了(之前困在C++思维一直不知道是哪里出错..)
我目前会的python功能,能想到的是
用list的方式,
读取字串时如果有空格就
把前面的切下来存到list中的item
像
"5 10"就会存成
['5','10'],之後再逐一将这些item读取做运算就好
以下是我尝试写的程式码:
http://imgur.com/a/yZSGX
这虽然通过检测了,不过
档案大小4.6MB左右,跟之前C++写的100KB差有点多...
而且zerojudge每题测资都这样空格区隔的,用python这写法真的好麻烦...
----------------
我想问的是,python有没有办法
以空格为输入的断点,
输入"1 2 3 4",就算不能直接存成数值,也可以依序读取到字串"1" "2" "3" "4"
或是至少我这样的解法还可以怎麽改善?
另外小抱怨一下,py2的input可以直接当小键盘用,
当初C++解不出来的四则运算,用input输入就可以半作弊地轻松解决了...
为什麽py3要改掉QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.250.162
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1505017127.A.A6A.html
1F:推 blue14753: str.split(" ")会把字串以括弧内的字元做切割,存成lis 09/10 12:37
2F:→ blue14753: t 09/10 12:37
3F:→ CaTom: 谢谢!! 所以我是花时间写了内建就有的函式的简略版了吗XD 09/10 12:54
4F:→ karta0910489: 补:python预设所有输入都是str 所以不太可能像c++那 09/10 17:24
5F:→ karta0910489: 样 有误还请大神开示 09/10 17:24