2015-06-21 2 views
-2

Как вы относитесь к целому числу внутри строки, используя python? Я совершенно новичок в кодировании, и я пытаюсь выполнить это упражнение по сбору ошибок, когда пользователь будет вводить количество ошибок, собираемых каждый день в течение недели, и будет представлен общее количество ошибок, собранных в конце недели.Ссылка на Integer внутри строки? Python

Это код, который я имею до сих пор.

totalBugs = 0.0 
day = 1 

for day in range(7): 
    bugsToday = input('How many bugs did you get on day', day,'?') 
    totalBugs = totalBugs + bugsToday 

print 'You\'ve collected ', totalBugs, ' bugs.' 

Так что я пытаюсь получить приглашение bugsToday внутри цикла, чтобы попросить пользователя «Сколько ошибок вы собрать на 1 день?» «Сколько ошибок вы собрали в день 2?» И так далее.

Как это сделать?

+0

Вы хотите «читать с пользовательского ввода». Проверьте: http://stackoverflow.com/questions/3345202/python-getting-user-input – doublesharp

+0

Возможный дубликат [Как преобразовать строки в целые числа в python?] (Http://stackoverflow.com/questions/642154/ как-to-convert-strings-in-integers-in-python) – Paul

+0

's =" 34 "' 'n = int (s)' 'print n + 1'' 35' – Paul

ответ

1

так, как я бы сделать это следующим образом.

total_bugs = 0 #assuming you can't get half bugs, so we don't need a float 

for day in xrange(1, 8): #you don't need to declare day outside of the loop, it's declarable in the for loop itself, though can't be refernced outside the loop. 
    bugs_today = int(raw_input("How many bugs did you collect on day %d" % day)) #two things here, stick to raw_input for security reasons, and also read up on string formatting, which is what I think answers your question. that's the whole %d nonsense. 
    total_bugs += bugs_today #this is shorthand notation for total_bugs = total_bugs + bugs_today. 

print total_bugs 

Для чтения на строки форматирования: http://www.learnpython.org/en/String_Formatting

статье я писал о raw_input против ввода в целях безопасности, если вы заинтересованы в том, что: https://medium.com/@GallegoDor/python-exploitation-1-input-ac10d3f4491f

Из Docs Python:

Детали реализации CPython: если s и t являются обеими строками, некоторые реализации Python, такие как CPython, обычно могут выполнять оптимизацию на месте для ass воспламенения вида s = s + t или s + = t. Когда это применимо, эта оптимизация делает квадратичное время выполнения гораздо менее вероятным. Эта оптимизация зависит как от версии, так и от реализации. Для чувствительного к производительности кода предпочтительнее использовать метод str.join(), который обеспечивает согласованную производительность линейной конкатенации для версий и реализаций.

Программирование может показаться подавляющим сначала, просто придерживайтесь его, вы не пожалеете об этом. Удачи мой друг!

+0

Спасибо! Это было именно то, что я искал !!! Я обязательно запомню% d. –

+0

Без проблем, рад помочь. Несколько вещей, которые я, возможно, пропустил, xrange быстрее, чем диапазон, поэтому я использую это по привычке. (1, 8) 1-7 вместо 0-6, хотя я был лучше, но до вас. и я использовал int() для raw_input, потому что raw_input возвращает строку, и нам нужен тип int.Также обратите внимание, что% d для ints,% s для строк,% f для поплавков и т. Д., Вы можете найти метод .format проще. –

1

Вы можете попробовать

... 
for day in range(7): 
    bugsToday = input('How many bugs did you get on day %d ?' % day) 
    totalBugs = totalBugs + bugsToday 
... 
2

Лично мне очень нравится format(). Вы могли бы написать код, как это:

totalBugs = 0 
for day in range(1, 8): 
    bugsToday = raw_input('How many bugs did you get on day {} ?'.format(day)) 
    totalBugs += int(bugsToday) 

print 'You\'ve collected {} bugs.'.format(totalBugs) 

range(1, 8) проходит через day = 1 к day = 7, если это то, что вы хотите сделать.

Смежные вопросы