جذر گرفتن تا 4 رقم اعشار و نمایش عدد صفر در قسمت اعشار

سلام

وقت بخیر

براساس یک صورت مسئله؛ باید برنامه ای بنویسم که تعدادی عدد رو از کاربر دریافت کنه؛ و سپس تا 4 رقم اعشار، جذر اون رو نمایش بده.

از تابع round(number,ndigits که استفاده می کنم و در قسمت ndigits وقتی 4 رو وارد می کنم ؛ در برخی اعداد درست انجام میشه ولی در برخی اعداد مثل 15، تا سه رقم اعشار رو نمایش میده؛

چطور می تونم حتی اگر جذر یک عدد مثلا خود عدد 1 ، قسمت اعشار هم نداره، بازهم در خروجی به این شکل نمایش بدهد: 1.0000

آیا اصلاً با توجه به درخواست سوال، استفاده از تابع round درست هست؟

بطور مثال

ورودی: 

1

2

3

19

خروجی:

1.0000

1.4142

1.7320

4.3588

پاسخ ها

sokanacademy forum
کاربر سکان آکادمی 6 سال پیش

سلام دوست عزیز..... راستش من که هرچقدر بالا و پایین کردم نتونستم تو پایتون آخر عدد اعشاری 0 بزارم.... اما یه ایده دارم که شاید بتونید ازش استفاده کنید....

اولا اینکه بله استفاده از round درست هستش. شما بیا بگو:

x = round(sqrt(number), 4)

y = x*(10**4)

شما میتونی از روش بالا استفاده کنی و چهار رقم بعد اعشار رو بیاری پشت اعشار که صفرها هم اضافه میشن و کارهاتو با این اعداد صحیح بکنی و آخر کار یه تقسیم بر 10000 داری..... اگرم که کارهای محاسباتی نمیخوای بکنی میتونی عددت رو به استرینگ تبدیل کنی که البته اینم دردسر داره برای ثبت کردن صفر بعد اعشار..... امیدوارم راه حلم به دردت بخوره و فعلا کارت رو راه بندازه تا دوستان دیگه راه حل دقیق ترش رو بگن....

sokanacademy forum
کاربر سکان آکادمی 6 سال پیش

سلام

ممنون از پاسختون

من برنامه زیر رو نوشتم؛ پاسخی هم که میگیرم درسته ولی باز هم سیستم ازم قبول نمی کنه؛ در واقع چون که تصحیح پاسخ کاملا آنلاین و کامپیوتری چک میشه، نمیدونم چرا همچنان ازم قبول نمی کنه

این هم سوالش هست:

برنامه ای بنویسید که چند عدد مثبت را از ورودی بخواند و ریشه ی دوم آن را تا ۴ رقم اعشار چاپ کند.

import math
from math import sqrt
list_num=[]

n = int(input())
count = n
while n != 0:
    num = int(input())
    num2 = abs(num)
    num2 = round(sqrt(num2),4)
    list_num.append(float(num2))
    n = n - 1

for i in range (0,len(list_num )):
    print ('%6.4f'%(list_num[i]))
sokanacademy forum
کاربر سکان آکادمی 4 سال پیش

سلام برنامه شما دوتا ایراد داشت اول این ک بلافاصله بعد از وارد کردن عدد باید جواب نمایش داده بشه که این طور نبود و دوم این که استفاده از round سبب این شد که عدد گرد بشه که نباید این طور میشد

برنامه زیر تست شدست تا 15 رقم اعشار رو در نظر میگیره ولی فقط تا 4 رقمو نشون میده

import math
number=int(input())
tedad=0
while tedad != number :
 x=int(input())
 x=abs(x)
 tedad +=1
 a=math.sqrt(x)
 b=('%.15f'%a)
 print(b[:-11])
sokanacademy forum
کاربر سکان آکادمی 4 سال پیش

سلام میتونید خروجی راتک تک نگیرید؟

همان n اول تعداد ورودی را مشخص کنه و ورودی های بعدی به تعداد n داده بشه و در نهایت با اینتر کردن خروجی پرینت بشه

sokanacademy forum
کاربر سکان آکادمی 4 سال پیش
from math import sqrt

list_1 = []
n = int(input())
i = 0
while i < n:
 num = int(input())
 i += 1
 square = sqrt(num)
 square = "{:0.4f}".format(square)
 list_1.append(square)

for square in list_1:
 print(square)
sokanacademy forum
کاربر سکان آکادمی 4 سال پیش

کاملا درست و عالی❤

sokanacademy forum
کاربر سکان آکادمی 4 سال پیش
import math
number=int(input())
tedad=0
list_1 = []
while tedad != number :
 x=int(input())
 x=abs(x)
 tedad +=1
 a=math.sqrt(x)
 b=('%.15f'%a)
 list_1.append(b)

for b in list_1:
 print(b[:-11])
sokanacademy forum
کاربر سکان آکادمی 4 سال پیش

سلام اگر کدی برای گرد نکردن جواب پیدا کردید لطفاً اشتراک بگذارید

sokanacademy forum
کاربر سکان آکادمی 4 سال پیش

سلام مشکل اولت اینه که تو خط 10 داری round میکنی و براساس اون عدد رند شده تا 4 اعشار محاسبه میکنی. و تو خط 15 عدد 6 بعد از % نفهمیدم برای چی آوردی؟

اون round رو برداری درست میشه احتمالا

sokanacademy forum
کاربر سکان آکادمی 5 سال پیش

سلام.

میتونی اینطوری بنویسی:

print("%.4f" % a)

.4f به معنی چاپ عدد با 4 رقم اعشار هست

a هم عددی هست که حاصل محاسبه داخلش ریخته شده

موفق باشید

sokanacademy forum
کاربر سکان آکادمی 4 سال پیش

عالیه

sokanacademy forum
کاربر سکان آکادمی 3 سال پیش

چطور بنویسیم ورودی حداکثر دو رقم اعشار بگیرد؟؟

لطفا راهنمایی کنید ممنون

sokanacademy forum
کاربر سکان آکادمی 5 سال پیش

پاسخ درست سوال - پایتون۳

from math import sqrt
user_input = int(input())
my_list = []
for i in range(user_input):
 num = float(input())
 new = str(sqrt(num))
 new2 = new.split('.')
 sahih = new2[0]
 ashari = new2[1]
 ashari = str(ashari[:4])
 if ashari == '0':
 ashari = '0000'
 final = sahih+"."+ashari 
 my_list.append(final)
for i in my_list:
 print(i)
sokanacademy forum
کاربر سکان آکادمی 4 سال پیش

شاید به دردتون خورد :)

from math import sqrt

n = int(input())
num_list = []
my_list = []

for n in range(0 , n) :
 num_list.append(int(input()))
 
for x in num_list :
 num_2 = str(sqrt(x))
 num_2 = num_2.split('.')
 aval = num_2[0]
 ashar = num_2[1]
 ashar = str(ashar[:4])
 if ashar == '0':
 ashar = '0000'
 end = aval+'.'+ashar
 my_list.append(end)
 

for x in my_list:
 print(x)

sokanacademy forum
کاربر سکان آکادمی 4 سال پیش
import math

def truncate(number, decimals=0):
 """
 Returns a value truncated to a specific number of decimal places.
 """
 if not isinstance(decimals, int):
 raise TypeError("decimal places must be an integer.")
 elif decimals < 0:
 raise ValueError("decimal places has to be 0 or more.")
 elif decimals == 0:
 return math.trunc(number)

 factor = 10.0000 ** decimals
 z=math.trunc(number * factor) / factor
 return ("%.4f" % z)

n=m= int(input())
nums=[]

while (n>0):
 data=input()
 nums=nums+[data]
 n=n-1

from math import sqrt


while (n<m):
 a=sqrt(int(nums[n]))
 print(truncate(a, 4))
 n=n+1


sokanacademy forum
کاربر سکان آکادمی 4 سال پیش
import math
number=int(input())
tedad=0
list_1 = []
while tedad != number :
 x=int(input())
 x=abs(x)
 tedad +=1
 a=math.sqrt(x)
 b=('%.15f'%a)
 list_1.append(b)

for b in list_1:
 print(b[:-11])
sokanacademy forum
کاربر سکان آکادمی 3 سال پیش
import math
n=int(input())
w=[int(input())]
while n!=1:
 w.append(int(input()))
 n-=1
for x in w:
 sqrt=math.sqrt(x)
 m=('%.20f'%sqrt)
 n=m[0]+m[1:6]
 print(n)
sokanacademy forum
کاربر سکان آکادمی 3 سال پیش

جواب درست و تست شده.

خودتون بعدا در موردش بیشتر تمرین کنید که یاد بگیرید.

from math import sqrt
n=int(input())
L=[]
for i in range(n):
	a=int(input())
	L.append(sqrt(a))
for i in L:
	print('%.4f' % i)


sokanacademy forum
کاربر سکان آکادمی 3 سال پیش

عزیزم سلام امید وارم که حالت خوب باشه یک توضیح میدی که این لاین8 رو چه جور نوشتی و اینکه دیگه چه کار های با این روش میشه انجام داد ؟

من تست کردم فقط باید f بزنی تا اعشار رو نشون بده و حروف دیگه ای در اینجا کاربرد نداشت

اگه میشه یه توضیح بده در مورد این روش یا اینکه بهم بگو کجا میتونم کاملشو پیدا کنم . ممنون میشم ازت :)

sokanacademy forum
کاربر سکان آکادمی 3 سال پیش

نباید عدد رو رند کنه

sokanacademy forum
کاربر سکان آکادمی 3 سال پیش

سلام ببخشید میشه لطفا جذر تقریبی عدد 0.4 رو توضیح بدید چطوری بدست بیاریم

online-support-icon