سلام پروژه مسابقات code of advent هست این موردی که میزارم هر کاری کردمانصافا تمرین سختی داره مسابقات اش :)
متوجه نمیشم چجوری کاری کنم که اولا هر بار دو عدد قبلی مقایسه کنه و افزایش و کاهش بررسی کنه
الگوریتم پروژه
200 (increased)
208 (increased)
210 (increased)
200 (decreased)
207 (increased)
240 (increased)
269 (increased)
260 (decreased)
263 (increased)
به همراه تعداد increased و decreased هم میخواد که توی مثال بالا 7 تا شد حالا میشه بگید چجوری با لیست کاری کنم که رنج خاصی مثلا 10 عدد از ورودی بگیره و بعد خروجی بالا بده
خب بخش شرطی که گذاشتید ایراد داره. ی همچین چیزی رو باید بنویسید.
if(currentNum < beforeNum) count_decreased += 1;
else if(currentNum > beforeNum) count_increased += 1;
else count_equal += 1;
نگاه کنید پروژه به این شکل که 50 ورودی به برنامه داده میشه بعد دو عدد اول رو مقایسه میکنه تا به عدد آخر برسه وقتی به عدد آخر رسید تعداد افزایش اعداد و تعداد کاهش رو باید نشون بده البته بیشتر این متوجه نشدم
کد خودم میزارم یک نگاهی بهش بکنید با فانکشن نوشتم اما توی بدست آوردن اعدادی که کمتر میشن مشکل داره
def sonar_sweep_pt1(inp):
count_increased = 0
count_decreased = 0
with open(inp, 'r') as f:
before_num = None
for line in f.readlines():
if not before_num:
before_num = line
#print(before_num)
if before_num > line or before_num < line:
count_decreased += 1
before_num = line
return 'decreased count value in this file :', count_decreased
#return count_increased
inp = 'V:/temp_file/num_inp.txt'
print(sonar_sweep_pt1(inp))
خب بخش شرطی که گذاشتید ایراد داره. ی همچین چیزی رو باید بنویسید.
if(currentNum < beforeNum) count_decreased += 1;
else if(currentNum > beforeNum) count_increased += 1;
else count_equal += 1;
سلام میلاد عزیز کدم درست شد فقط موردی که داره باز بعضی اوقات اون شرطی که برای تعداد افزایش عدد هست درست کار نمیکنه مثلا فایل زیر نگاه کن
def sonar_sweep_pt1(inp):
count_increased = 0
count_decreased = 0
count_equall = 0
with open(inp, 'r') as f:
first_num = None
for after_num in f.readlines():
if not first_num:
first_num = after_num
#print(first_num)
if (first_num < after_num):
count_increased += 1
if (first_num > after_num):
count_decreased+= 1
else:
count_equall+= 1
print('increased count number is :',count_increased)
print('decreased count number is : ',count_decreased)
#return count_increased
inp = 'V:/temp_file/num_inp.txt'
print(sonar_sweep_pt1(inp))
# خروجی به اشتباه اینجوری میزنه
increased count number is : 9
decreased count number is : 0
ولی خروجی به اشتباه اینجوری میزنه به خاطر null دادن متغیر نیست ؟
فایل ورودی
199
200
208
210
200
207
240
269
260
263
# 7 incrased
# 2 descreased
بله از خروجی مشخص هستش که خطا دارید.
من با زبان برنامه نویسی تون آشنایی ندارم، سعی کنید در طول پیمایش حلقه for, مقادیر متغیرها را رصد کنید تا متوجه بشید کجای کارتون ایراد داره.
با شی گرایی کم
import sys
class app():
def __init__(self , file_addr):
self.file_addr = file_addr
self.file_content = self.read_file()
self.number_list = self.convert_string_to_list()
self.how_much = self.compute()
#read file data
def read_file(self):
with open(self.file_addr , "r") as file:
content = file.read()
return content
# convert string of file to list
def convert_string_to_list(self):
list_of_numbers = self.file_content.split("\n")
temp_list = []
for number in list_of_numbers:
temp_list.append(int(number))
return temp_list
# get all numbers and compute all increased
def compute(self):
how_much=0
last_number = self.number_list[0]
for i in self.number_list:
if i > last_number:
how_much += 1
last_number=i
return how_much
من شی گرای کار نکردم اصلا نتونستم کدتون متوجه بشم داخل ide اجرا میکنم ولی فکر می کنم اون کدی که من گذاشتم با یک تغییر درست میشه چون فقط مشکل اینه باگ منطقی داره و باید شرط ها درست کنم ولی نمیدونم چجوری
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟