Форум сайта python.su
Здравствуйте! Я бы хотел, чтобы вы мне помогли с решением задачи из книги Майкла Доусона “ Программируем на Питон, для начинающих”. Я буквально недавно начал изучать этот язык программирования да и вообще само программирование( в институте Паскаль изучали), и вроде бы примеры из этой книги более или менее понятны. Но вот решение некоторых задач для самопроверки в конце каждой главы, меня просто выбивает из колеи, потому что вроде бы как думаешь. что задания даются сугубо на основе пройденного материала, но сложности почему-то возникают довольно неприятные. Покупал эту книгу на Ozon. Там писалось, что все для новичков идеально разжевывается, но на своем опыте понимаю, что это далеко не так. Видимо еще и перевод с английского не идеален. Но все же продолжаю ее изучать. Может кто из старичков этого форума посоветует, как лучше изучать этот язык программирования.
А теперь сама задача: Напишите программу, которая бы “подбрасывала” условную монету 100 раз и сообщала, сколько раз выпал орел, а сколько - решка.
Офлайн
Python777Стиль изучения языков индивидуален. Чтобы не возникало сомнений что вы еще не все знаете, прочитайте книжку сразу от корки до корки. :) Обычно это можно сделать за 1 день.
Может кто из старичков этого форума посоветуйте
Офлайн
А насчет задачки с монетой? Или это в другой раздел форума?
Вот один из моих вариантов неверного решения задачи:
import random
x=1
y=2
z=0
s = random.randint(1,2)
while z != 100:
s = random.randint(1,2)
z += 1
s += 1
print(s)
print(z)
input(“\n\nНажмите Enter, чтобы выйти.”)
Отредактировано Python777 (Июль 7, 2014 22:38:11)
Офлайн
Python777
Я буквально недавно начал изучать этот язык программирования да и вообще само программирование( в институте Паскаль изучали)
Python777
А теперь сама задача: Напишите программу, которая бы “подбрасывала” условную монету 100 раз и сообщала, сколько раз выпал орел, а сколько - решка.
Офлайн
import random sum(int(random.getrandbits(1)) for x in range(100))
Офлайн
>>> import random >>> >>> def f(n): ... seq = (random.randint(0, 1) ... for i in range(n)) ... ... dct = {} ... for i in seq: ... dct[i] = dct.get(i, 0) + 1 ... ... return dct[1], dct[0] ... >>> f(100) (48, 52) >>> f(100) (39, 61) >>> f(1000) (476, 524) >>>
Офлайн
Спасибо за ответы. В общем, я так понимаю, что программирование это прежде всего алгоритм. Но вот как научиться составлять правильно алгоритмы, с чего лучше всего начинать новичку, чтобы подобные задачи с монеткой можно было решать без особых проблем??
Офлайн
Тоже только начал изучать программирование с этой же книжки. У меня получилась такая программа:
import random orel = 0 resh = 0 i = 0 while i<1000: i += 1 coin = random.randint(1,2) if coin == 1: orel += 1 if coin == 2: resh += 1 print ("Решек", resh) print ("Орлов", orel)
>>>
Решек 501
Орлов 499
Отредактировано Symfo (Июль 24, 2014 17:42:38)
Офлайн
import random orel = 0 resh = 0 count = 0 while count != 100: mon = random.randint(1, 2) count += 1 if mon == 1: orel += 1 elif mon == 2: resh += 1 print("Орел выпал", orel) print("Решка выпал", resh)
Офлайн
Эта задача слишком простая даже для начинающих. Может, кому-то интересно попробовать свои силы в чуть более сложном варианте?
Пусть подбрасываются одновременно 2 монеты. Нужно составить программу (желательно короткую и понятную) для подсчета и вывода на экран всех возможных результатов:
Отредактировано old_monty (Окт. 4, 2015 19:25:32)
Офлайн