Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 27, 2015 23:17:27

yranius
От: Москва
Зарегистрирован: 2015-10-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Начинаю изучать, нужно ИМХО по маленькому коду

Здравствуйте, форумчане!
Только делаю первые шаги в изучении Питона. Читаю “Программируем на Python” Майкла Доусона. Глава третья, одна из задач после прочтения этой главы:

Напишите на псевдокоде алгоритм игры, в которой случайное число от 1 до 100 за­гадывает человек, а отгадывает компьютер. Прежде чем приступать к решению, задумайтесь над тем, какой должна быть оптимальная стратегия отгадывания. Если алгоритм на псевдокоде будет удачным, попробуйте реализовать игру на Pythoп.

Вот что я написал:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  komp_ugadivaet__chislo.py
#  
#  Пользователь загадывает число от 1 до 100
#  и в зависимости от ответа < > предлагает другие числа
import random
print(' Загадайте число от 1 до 100')
print('Если загаданное число меньше - ставить "m", если число больше - ставить "b" \n Если число угадано - написать "yes"')
#  Начальные границы 
x = 1
y = 100
z = random.randint(x,y)
number_z=str('yes')
print('Это число',z,'?')
number_z = input(str('Ваш ответ: '))
while number_z != str('yes'):
#  Если загаданное число меньше
    if number_z == str('m'):
#  Убираем границу рандома до высветившего числа и минусуем, что бы это число случайно не выводилось в ответ
        y = z-1
#  Новые границы рандома
        z = random.randint(x,y)
        print('Это', z, '?')
    elif number_z == str('b'):
#  Аналог с точностью наоборот
        x = z+1
        z = random.randint(x,y)
        print('Это', z, '?')
    number_z = input(str('Ваш ответ:  '))
#  Подтверждение правильного ответа
if number_z == str('yes'):
    print('Ура!')

Задача решена, я молодец!
Но меня терзают смутные сомнения, что можно было бы реализовать задачу более элегантным решение. Просто я считаю если уж начинать что-то делать, то даже с азов надо стараться делать это максимально грамотно и качественно.
Понимаю что сие “творение” )) ниже некуда, но все же….


Офлайн

#2 Окт. 28, 2015 00:01:05

Kon52
Зарегистрирован: 2015-01-31
Сообщения: 66
Репутация: +  3  -
Профиль   Отправить e-mail  

Начинаю изучать, нужно ИМХО по маленькому коду

Офлайн

#3 Окт. 28, 2015 12:08:26

Python123
Зарегистрирован: 2015-10-28
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Начинаю изучать, нужно ИМХО по маленькому коду

ну молодчага,старания всегда оправданы

Офлайн

#4 Окт. 28, 2015 12:53:44

yranius
От: Москва
Зарегистрирован: 2015-10-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Начинаю изучать, нужно ИМХО по маленькому коду

Kon52
http://python.su/forum/search/?action=search&keywords=%D1%83%D0%B3%D0%B0%D0%B4%D0%B0%D0%B9+%D1%87%D0%B8%D1%81%D0%BB%D0%BE&author=&forum=0&search_in=all&sort_by=0&sort_dir=DESC&show_as=topicsstr() не нужна, у Вас input() и так строку возвращает.

Спасибо!
При назначении переменной надо указывать тип. Вот и в инпут на автомате поставил.
А что за ссылка? отправляет на пустую страницу поиска “Found 0 topics.”

Офлайн

#5 Окт. 28, 2015 13:37:40

Kon52
Зарегистрирован: 2015-01-31
Сообщения: 66
Репутация: +  3  -
Профиль   Отправить e-mail  

Начинаю изучать, нужно ИМХО по маленькому коду

http://python.su/forum/topic/26233/
http://python.su/forum/topic/3877/
http://python.su/forum/topic/23545/
http://python.su/forum/topic/16156/

yranius
При назначении переменной надо указывать тип.
#  Начальные границы 
x = 1
y = 100
Почему тип не указали?
Это я к чему.. У Вас с базой кисло, полиморфизм, встроенные функции- это прям нужно понимать и знать.

Офлайн

#6 Окт. 28, 2015 18:11:45

yranius
От: Москва
Зарегистрирован: 2015-10-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Начинаю изучать, нужно ИМХО по маленькому коду

Такс.. Здорово!
Мне поиск на форуме не выдавал эти топики. ((

Kon52
Почему тип не указали?
Это я к чему.. У Вас с базой кисло, полиморфизм, встроенные функции- это прям нужно понимать и знать.
Извиняюсь, я не уточнил про какую переменную написал. Имелось вот эта: number_z=str('yes')
Просмотрел темки. Удивился…
Вспомнил, что у меня не подключен pep8 к Geany (пробовал по инструкции привязать - не хочет)
Открыл файл в Pycharm… Понял, что number_z=str('yes') вообще не надо было прописывать.


# coding: utf-8
import random
print(' Загадайте число от 1 до 100')
print(
    "Если загаданное число меньше - ставить \"m\",если больше - ставить \"b\" \n Если число угадано - написать \"yes\"")
#  Начальные границы
x = 1
y = 100
z = random.randint(x, y)
print("Это число", z, "?")
number_z = input("Ваш ответ ")
while number_z != "yes":
    if number_z == "m":
        y = z - 1
        z = random.randint(x, y)
        print("Это", z, "?")
    elif number_z == "b":
        x = z + 1
        z = random.randint(x, y)
        print("Это", z, "?")
    number_z = input("Ваш ответ:  ")
if number_z == "yes":
    print("Ура!")

Отредактировано yranius (Окт. 28, 2015 18:16:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version