amir_mohammadi

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

amir_mohammadi ۱۳۹۷/۰۶/۰۴ زبان برنامه‌نویسی پایتون

سلام

وقت بخیر

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

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

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

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

بطور مثال

ورودی: 

1

2

3

19

خروجی:

1.0000

1.4142

1.7320

4.3588

پاسخ‌ها به این تاپیک
آقای زی
آقای زی دولوپر مبتدی علاقمند به جاوا و پایتون
۱۳۹۹/۰۷/۱۶
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])
parsa.ra
parsa.ra
۱۳۹۹/۰۶/۳۰
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


pooriaft70
pooriaft70
۱۳۹۹/۰۵/۰۱

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

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)

alirezana72
alirezana72
۱۳۹۸/۰۴/۲۸

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

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)
amirhosein_137
amirhosein_137
۱۳۹۷/۱۱/۱۵

سلام.

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

print("%.4f" % a)

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

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

موفق باشید

kiamohammadi53
kiamohammadi53
۱۳۹۸/۰۹/۰۵

عالیه

در پاسخ به

علی‌اکبر محمدی
علی‌اکبر محمدی
۱۳۹۷/۰۶/۰۵

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

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

x = round(sqrt(number), 4)

y = x*(10**4)

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

amir_mohammadi
amir_mohammadi
۱۳۹۷/۰۶/۰۶

سلام

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

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

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

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

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]))

در پاسخ به

m.123mah
m.123mah
۱۳۹۹/۰۷/۲۶

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

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

در پاسخ به

msahebi5454
msahebi5454
۱۳۹۹/۰۴/۲۸

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

در پاسخ به

mamaly433
mamaly433
۱۳۹۸/۱۱/۰۸

سلام برنامه شما دوتا ایراد داشت اول این ک بلافاصله بعد از وارد کردن عدد باید جواب نمایش داده بشه که این طور نبود و دوم این که استفاده از 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])

در پاسخ به

آقای زی
آقای زی دولوپر مبتدی علاقمند به جاوا و پایتون
۱۳۹۹/۰۷/۱۶
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])

در پاسخ به

msahebi5454
msahebi5454
۱۳۹۹/۰۴/۲۹

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

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

در پاسخ به

khasteam.az.tr
khasteam.az.tr
۱۳۹۹/۰۵/۱۰
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)

در پاسخ به

ezafar025
ezafar025
۱۳۹۹/۰۶/۳۰

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

در پاسخ به