pythonで与えられた1~99までの数を英語表記の文字列として返す関数の作成をしています。
完成は一応したのですが、自分が学んだ範囲で作ったので本来ならもっと簡略化できるのではないかと思いました。
該当のソースコード
python
def num_to_str(n): num = ['one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen'] if n <= 13: return num[n-1] else: if 14 <= n <= 19: if n == 15: return 'fifteen' if n == 18: return 'eighteen' return num[n-11]+'teen' if n == 20 or 30 or 40 or 50 or 60 or 70 or 80 or 90: t = ['twenty','thirty','forty','fifty','sixty','seventy','eighty','ninty'] if n % 10 != 0: return t[int((n//10)-2)]+' '+num[((n%10)-1)] else: return t[int((n/10)-2)] ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど)
丸投げレビュー目的ならこういうサイトがあります。
https://menta.work/
具体的にどのような内容に修正すればいいのでしょうか。teratailを始めてまだ1日もたっていません、どこまでが丸投げなのか、丸投げでないのか基準がイマイチわかりません。自分なりに丸投げでないことを意識して質問したのですが....。よろしければ今後の改善のために教えていただけますでしょうか。
「思いました」という文章と共にコードだけ貼られているところがおかしいと思いました。(それは感想であって質問ですらない)
どの部分が冗長だと思ってるかの説明や、自分が調べた範囲でどういう改善案があるのかも書いておらず、ただコードを出して「最適化してくれ」と投げているように見えます。
>>>「思いました」という文章と共にコードだけ貼られ...
確かにこれは感想ですね。修正するとともに以後気を付けます。
>>>どの部分が冗長だと思ってるかの説明や、自分が調べた範囲...
見出しにもある通り、修正の余地はあるのかを聞いているのであって最適化したコードは求めていません。またどこが冗長であるかがわからないから質問させていただいたので、改善案を書くことはできないです(__)
> 修正の余地はあるのかを聞いている
それは「具体的にプログラミングで困っている質問」に該当しません。(仕様通り動いてるならどんな書き方しても問題ないんだから)
ガイドラインに目を通すことをお勧めします。
https://teratail.com/help/question-tips
https://teratail.com/help/avoid-asking
了解しました。ちなみに「この問題はこれで合っていますか」みたいなのも丸投げですか?
ケースバイケースです。質問した事情に納得のいく説明があれば丸投げとは思いません。
十分調査された上で理解が難しいと感じた問題について解釈として合ってるのか、というのは別に良いんじゃないですか。
ただ、ある機能を実装するためのコードを出して「これであってますか?」という質問は丸投げでしょうね。
テストをやるのはプログラマの責任なんで。(あってるかどうかぐらいは自分で確認するべき)
回答3件
あなたの回答
tips
プレビュー