質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

2014閲覧

python3 入力した2つの数字でループ処理

midori_saki

総合スコア29

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/09/14 13:43

###前提・実現したいこと
python3初心者です。
input()でうけとった2つの数字を使ってループ処理を行いたいです。

###発生している問題・エラーメッセージ
入力した1つの数字から2つめの数字まで
a回目 (1つめの数字)
b回目
c回目 (2つめの数字)
と表示させたいです。
どなたかご教授ください。

###該当のソースコード
count = str(input())
for i in range(count):
number = input().rstrip()
print(number + "回目")
書いててわからなくなりました。

###試したこと
上のコード

###補足情報(言語/FW/ツール等のバージョンなど)
python3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

私ならこんな風にやります。
出来るだけ機能を切り分けているのがミソです。

Python

1def is_int(arg): 2 try: 3 int(arg) 4 return True 5 except: 6 return False 7 8def input_int(message=''): 9 num = None 10 while not is_int(num): 11 num = input(message) 12 return int(num) 13 14def main(): 15 start = input_int('start: ') 16 end = input_int('end: ') 17 for i in range(start, end + 1): 18 print(str(i) + '回目') 19 20if __name__ == '__main__': 21 main() 22 23"""実行結果 24start: 5 25end: 7 265回目 276回目 287回目 29"""

投稿2017/09/14 15:19

編集2017/09/14 15:24
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

namnium1125

2017/09/14 15:48

本件と全く関係ないですけど、javascriptならisNaN()が使えるのにな〜とか考えちゃいました(^ ^;
LouiS0616

2017/09/14 16:02

javascript、泥沼感が怖くてまともにいじったことないんですよねー... 一応pythonにもmath.isnan()やnumpy.isnan()があるのですが、文字列を引数に取れないようです。 本件がint縛りなことを考えても、やっぱり自前定義が一番楽かなぁ...
midori_saki

2017/09/15 00:11

ありがとうございます!勉強になります。
guest

0

数値にキャストした方が処理しやすいと思います。

以下の例では数字以外の時は例外が出ることを利用し、数字が入力されるまでループさせるようにしました。

lang

1 #-*- coding: utf-8 -*- 2 3while True: 4 try: 5 start = int(input("start : ")) 6 end = int(input("end : ")) 7 break 8 except: 9 print("数字を入力してください。") 10 continue 11 12for i in range(start,end+1): 13 print(str(i) + "回目")

range関数は第1引数〜(第2引数-1)のリストを返します。(第1引数>第2引数の時は空のリストです。)
入力はstart、endにして両方をrange関数に渡すほうが楽だし、見やすいと思います。

##追記

コードゴルフする気はありませんでしたけど、絶対に整数が入力されるなら

lang

1for i in range(*(int(input())+j for j in (0,1))): 2 print(str(i) + "回目")

でも構いません。

投稿2017/09/14 14:14

編集2017/09/16 17:55
namnium1125

総合スコア2043

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

midori_saki

2017/09/15 00:10

ありがとうございます!入力されるのは整数値です。
namnium1125

2017/09/15 03:39 編集

質問者様がそう思って作成されても、そのプログラムが他人に使われるようなことがあればどのような入力が渡されるかわかりませんから、 (練習だからいい、とかではなく)できれば例外処理等はしっかりと実装すべきです。 ですからはっきり言って私が書いた下のコードはあんまりよくないと思っています。可読性も低いです。
midori_saki

2017/09/15 03:41

そうなんですね。。。教えてくださり、ありがとうございます。
namnium1125

2017/09/15 03:52

深刻な感じになっちゃいましたけどそこまで重く受け取る必要はないですよ(^ ^; ただ、try-except文は重要だと書きたかっただけです。 この構文を初めて見たのでしたら、今後はなるべく使うようにしましょう それでokです
midori_saki

2017/09/15 05:14

はい、勉強していきます。
guest

0

ベストアンサー

a<bで、a,bに整数が与えられることが保証されているのであれば

Python3

1a,b=[int(input())for i in range(2)] 2for i in range(b-a+1): 3 print(str(a+i)+"回目")

で良いかと思います。

なおa,bがどのように与えられるか書いていないので、それぞれ一行に与えられると勝手に解釈しました。

投稿2017/09/14 16:05

s4_r_

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

midori_saki

2017/09/15 00:11

ありがとうございます!コードが短くて理解しやすいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問